我有一个Perl脚本,其中有以下内容:
" \"blah\@$string;blah\" "
但我不确定\@
是用来做什么的。
我尝试通过谷歌搜索'\@
',但是似乎找不到任何相关信息。
@
代表“at符号”,而不是“将$string
解除引用作为一个数组引用”。@
之前加上反斜杠会告诉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"
qq["blah\@$string;blah"]
,以避免需要转义开头的双引号。在Perl中,qq[]与""相同,您可以选择喜欢的分隔符:qq[]、qq()、qq{}、qq//、qq^^、qq!!、qq||等。 - zostay