2012-02-05 35 views
7

@ aşağıdaki gibi bir şey ile bir perl senaryo var:perl kaçış dizisi

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

Ama \@ yapmak gerekiyordu/ne yaptığını emin değilim.

'\@' adresini denedim ancak bir şey bulamıyorum.

+0

Gerçekten bir cevap, ama ben şahsen [ "fan \ @ $ dize qq' olarak bu dize yazmak istiyorum; Başlangıçta çift tırnaktan kaçma ihtiyacından kaçınmak için Perl'de qq [], "" ile aynıdır ve tercih ettiğiniz sınırlayıcıları seçebilirsiniz: qq [], qq(), qq {}, qq //, qq ^^, qq !!, qq ||, vb. . – zostay

cevap

19

@, "Dereference $string bir arrayref" yerine "Sign at a" anlamına gelir.

6

@'dan önceki ters eğik çizgi Perl'e tam olarak davranmasını söyler, aksi halde bir dizi olarak ele alınır. @'u bir $ takip ediyorsa, bir dizi referansı (bir diziye referans veren bir dizi) olarak ele alınacaktır. Eğer çıktısını Eğer (Ben qq|| uygulamak için kodunuzu değişti) net çekebilir:

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"