2012-02-05 44 views
7

我有一個Perl腳本的東西,如下列:Perl的 @轉義序列

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

但我不知道什麼是\@做/應該做的。

我試過谷歌搜索'\@',但我似乎無法找到任何東西。

+0

不是一個真正的答案,但我個人寫的字符串作爲'QQ [「嗒嗒\ @ $串; blah「]'以避免在開始時需要避開雙引號。在Perl中,qq []與「」相同,您可以選擇您喜歡的分隔符:qq [],qq(),qq {},qq //,qq ^^,qq !!,qq ||等。 – zostay 2012-02-05 21:08:10

回答

19

它導致@表示「An at sign」,而不是「取消引用$string作爲arrayref」。

6

@之前的反斜槓告訴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"