读取一行
阅读一行的习惯用法是
chomp(my $var = <>);
但我通常最终会写一个小prompt
子程序:
sub prompt {
print @_;
chomp(my $answer = <>);
return $answer;
}
...;
my $img = prompt("img URL = ? ");
此处文档
Here-doc 只是另一种字符串文字,例如
my $str = <<"END";
foo bar
baz
END
print $str;
如果将分隔符用单引号引起来:<<'END'
,那么您就无法将变量插入到此处文档中。请注意,结束标记必须始终位于行的开头,但可以包含空格字符:
my $string = <<'END THIS';
foo
bar
END THIS
# marker must be at start of line!
您可以直接打印此处文档,例如
print CARDFILE <<"END";
<card>
<img>$img</img>
<type>$type</type>
<expansion>$expansion</expansion>
<keyword>$keyword</keyword>
<color>$color</color>
<linkcolor>$linkcolor</linkcolor>
<kickercolor>$kickercolor</kickercolor>
<cost>$cost</cost>
<strength>$strength</strength>
<health>$health</health>
</card>
END
区别就在这里,不会有\r\n
位于行尾,除非您使用 Windows 行结尾保存源文件。但是,此处文档确实包含物理换行符,并且始终以换行符终止。
打印东西
The print
函数打印由 分隔的参数$,
特殊变量,然后输出$\
多变的。默认情况下,这两个都是空的。但我们可以提供一个临时值:
local $\ = "123";
print "foo";
Output:
foo123
当然,我们通常会设置为\n
。但有一个捷径:只需放一个use feature 'say'
or use 5.010
(或更高)在源代码的开头,那么你可以
say "foo";
它会自动附加换行符。
打开文件句柄
使用词汇变量。使用三参数打开。进行适当的错误处理。这意味着:
use autodie;
open my $fh, "<", "filename";
or
my $filename = "filename";
open my $fh, "<", $filename or die "Can't open $filename: $!";
第二个参数是mode,这将是>>
用于追加。明确指定它而不是作为文件名的一部分更安全。
一般说明
Always use strict; use warnings;
在脚本的顶部,这有助于发现问题。