perl \ @转义序列

时间:2012-02-05 16:38:41

标签: perl escaping

我有一个perl脚本,其中包含以下内容:

" \"blah\@$string;blah\" "

但我不确定\@正在/应该做什么。

我尝试使用谷歌搜索“\@”,但我似乎找不到任何东西。

2 个答案:

答案 0 :(得分:20)

它会导致@表示“An at sign”而不是“取消引用$string作为arrayref”。

答案 1 :(得分:6)

@之前的反斜杠告诉Perl按字面意思对待它,否则会将其视为数组。如果@后跟$,则会将其视为数组引用(包含对数组的引用的字符串)。如果你把它打印出来可能会更清楚(我已经改变你的代码使用qq||):

my $string = 'i-am-a-string';

print qq| "blah\@$string;blah" |; # with backslash
#  "blah@i-am-a-string;blah"

print qq| "blah@$string;blah" |; # no backslash
# Can't use string ("i-am-a-string") as an ARRAY ref

$string = [1,2,3]; # string now an array reference

print qq| "blah\@$string;blah" |; # with backslash
#  "blah@ARRAY(0x803bc0);blah"    # ARRAY(0x803bc0) is where (1,2,3) lives

print qq| "blah@$string;blah" |; # no backslash
# "blah1 2 3;blah"