io ho uno script perl con qualcosa come il seguente:perl @ sequenza di escape
" \"blah\@$string;blah\" "
ma non sono sicuro di quello che il \@
sta facendo/dovrebbe fare.
Ho provato su google "\@
" ma non riesco a trovare nulla.
io ho uno script perl con qualcosa come il seguente:perl @ sequenza di escape
" \"blah\@$string;blah\" "
ma non sono sicuro di quello che il \@
sta facendo/dovrebbe fare.
Ho provato su google "\@
" ma non riesco a trovare nulla.
Fa sì che @
significhi "An at sign" anziché "Dereference $string
come arrayref".
Il backslash prima del @
indica a Perl di trattarlo letteralmente, altrimenti lo tratterà come un array. Se lo @
è seguito da uno $
, verrà considerato come riferimento di matrice (una stringa che contiene un riferimento a un array). Se si stampa fuori può essere più chiaro (ho cambiato il codice per utilizzare 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"
Non proprio una risposta, ma io personalmente scrivere la stringa come 'qq [" blah \ @ $ string; bla "]" per evitare la necessità di sfuggire alle virgolette all'inizio. In Perl, qq [] è uguale a "" e puoi scegliere i delimitatori che preferisci: qq [], qq(), qq {}, qq //, qq ^^, qq !!, qq ||, etc . – zostay