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