У меня есть скрипт на языке Perl с чем-то вроде следующего:Perl @ управляющей последовательности
" \"blah\@$string;blah\" "
Но я не уверен, что \@
делает/должен делать.
Я пробовал googling '\@
', но я ничего не могу найти.
У меня есть скрипт на языке Perl с чем-то вроде следующего:Perl @ управляющей последовательности
" \"blah\@$string;blah\" "
Но я не уверен, что \@
делает/должен делать.
Я пробовал googling '\@
', но я ничего не могу найти.
Это приводит к тому, что @
означает «An at sign» вместо «Dereference $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