如何将变量名称写入文件而不是其值

时间:2014-12-17 10:13:09

标签: perl variables

我是Perl的新手,我有一个基本的问题。 我需要编写一个包含“$”符号的文本文件。例如:

unless(open FILE, '>'.$file){ die "Unable to create $file"; } print FILE "$tmp\n";

我希望perl能够将“$ tmp”写入我的文件,而不是它的值。 在我的perl脚本中,我不希望“$ tmp”成为变量......只是一个字符串。 在运行我的脚本时,它会抱怨因为没有定义变量。如果我定义它,它给出值“0”。我知道必须要有办法。 我已经尝试定义值具有相同字母的文本,但它不起作用: 我的$ tmp =“$ tmp” 我也尝试连接“$”simbol和文本;不起作用: 我的$ tmp =“$”。 “TMP”

1 个答案:

答案 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