基本上,这是我在过去半小时内使用 Google 进行编程并试图实现一个简单的事情的结果:从中获取用户输入STDIN
并将其写入结构化 XML 文件作为输出。下面是我丑陋的代码:
#!/bin/perl
print "img URL = ? ";
$img = <>;
chomp($img);
print "filename = ? ";
$filename = <>;
chomp($filename);
# now write xml with inserted contents to a file:
open (CARDFILE, ">>$filename");
print CARDFILE "<card>\r\n";
print CARDFILE " <img>$img</img>\r\n";
print CARDFILE " <type>$type</type>\r\n";
print CARDFILE " <expansion>$expansion</expansion>\r\n";
print CARDFILE " <keyword>$keyword</keyword>\r\n";
print CARDFILE " <color>$color</color>\r\n";
print CARDFILE " <linkcolor>$linkcolor</linkcolor>\r\n";
print CARDFILE " <kickercolor>$kickercolor</kickercolor>\r\n";
print CARDFILE " <cost>$cost</cost>\r\n";
print CARDFILE " <strength>$strength</strength>\r\n";
print CARDFILE " <health>$health</health>\r\n";
print CARDFILE "</card>";
close (CARDFILE);
我是 Perl 新手,但我可以说出我的代码中的一些重大问题:
使用两行首先接收
STDIN
然后chomp()
它摆脱尾随回车。应该有单行吗?我无法弄清楚如何使用“here-doc”来一次性打印多行文件。如果没有
CARDFILE
文件句柄,我可以使用 here-doc 语法将所有字符串打印到STDOUT
单个打印语句中。现在我必须多次调用打印函数。对于这些
"\r\n"
s,有没有办法使用不同的功能,所以我不必记住在每行之后手动插入它们?