Perl中的\@转义序列是什么意思?

8

我有一个Perl脚本,其中有以下内容:

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

但我不确定\@是用来做什么的。

我尝试通过谷歌搜索'\@',但是似乎找不到任何相关信息。


不是真正的答案,但我个人会将该字符串写成qq["blah\@$string;blah"],以避免需要转义开头的双引号。在Perl中,qq[]与""相同,您可以选择喜欢的分隔符:qq[]、qq()、qq{}、qq//、qq^^、qq!!、qq||等。 - zostay
2个回答

20
它使得 @ 代表“at符号”,而不是“将$string 解除引用作为一个数组引用”。

6
在Perl中,在@之前加上反斜杠会告诉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"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接