我是Perl的新手,我有一个基本的问题.我需要编写一个包含"$"符号的文本文件.例:
unless(open FILE, '>'.$file){
die "Unable to create $file";
}
print FILE "$tmp\n";
我希望perl能够将"$ tmp"写入我的文件,而不是它的值.在我的perl脚本中,我不希望"$ tmp"成为变量......只是一个字符串.在运行我的脚本时,它会抱怨因为没有定义变量.如果我定义它,它给出值"0".我知道必须要有办法.我已经尝试定义值具有相同字母的文本,但它不起作用:我的$ tmp ="$ tmp"我也尝试连接"$"simbol和文本; 不起作用:我的$ tmp ="$"."TMP"
这是关于引用插值.
Perl以不同的方式处理不同类型的引号.
例如:
my $tmp = 'fish';
print $tmp, "\n";
print "$tmp\n";
print '$tmp\n';
print "\n";
print q{$tmp},"\n"
Run Code Online (Sandbox Code Playgroud)
双引号通常意味着'这是一个字符串,但首先处理它'.这意味着'处理'反斜杠以转义字符,并将变量扩展为其值.
单引号通常表示"不处理它".
您还可以通过使用反斜杠作为前缀来转义将被插值的元字符.例如:
print "\$tmp\n";
Run Code Online (Sandbox Code Playgroud)
该q{}类型的报价,您可以使用任意分隔符,这是在那么自然有引号中的字符串非常有用.
my $tmp2 = q{'"/\''"\n};
print $tmp2,"\n";
Run Code Online (Sandbox Code Playgroud)
你也可以:
print q|!"£$%^&*()_|;
print q#!"£$%^&*()_#;
Run Code Online (Sandbox Code Playgroud)
(等等.).
作为一个样式点,我建议 - 当你没有任何动态内容时,你应该尝试使用单引号,因为它清楚地表明它根本没有被插值.
q{}样式引用对于用引号来澄清字符串非常有帮助.
也可以看看:
http://perldoc.perl.org/perlop.html#Quote-and-Quote-like-Operators