我有一个perl脚本,其中包含以下内容:
" \"blah\@$string;blah\" "
但我不确定\@
正在/应该做什么。
我尝试使用谷歌搜索“\@
”,但我似乎找不到任何东西。
答案 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"