7
我有一個Perl腳本的東西,如下列:Perl的 @轉義序列
" \"blah\@$string;blah\" "
但我不知道什麼是\@
做/應該做的。
我試過谷歌搜索'\@
',但我似乎無法找到任何東西。
我有一個Perl腳本的東西,如下列:Perl的 @轉義序列
" \"blah\@$string;blah\" "
但我不知道什麼是\@
做/應該做的。
我試過谷歌搜索'\@
',但我似乎無法找到任何東西。
它導致@
表示「An at sign」,而不是「取消引用$string
作爲arrayref」。
@
之前的反斜槓告訴Perl將其字面處理,否則它會將其視爲數組。如果@
後跟$
,它將被視爲數組引用(一個字符串,該字符串持有對數組的引用)。如果你把它打印出來,可能更清楚(我已經改變了你的代碼中使用qq||
):
my $string = 'i-am-a-string';
print qq| "blah\@$string;blah" |; # with backslash
# "[email protected];blah"
print qq| "[email protected]$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
# "[email protected](0x803bc0);blah" # ARRAY(0x803bc0) is where (1,2,3) lives
print qq| "[email protected]$string;blah" |; # no backslash
# "blah1 2 3;blah"
不是一個真正的答案,但我個人寫的字符串作爲'QQ [「嗒嗒\ @ $串; blah「]'以避免在開始時需要避開雙引號。在Perl中,qq []與「」相同,您可以選擇您喜歡的分隔符:qq [],qq(),qq {},qq //,qq ^^,qq !!,qq ||等。 – zostay 2012-02-05 21:08:10