perl \ @ escape-последовательность - PullRequest
8 голосов
/ 05 февраля 2012

У меня есть скрипт на Perl, похожий на следующий:

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

Но я не уверен, что \@ делает / должен делать.

Я пробовал поискать в Google '\@', но, похоже, ничего не могу найти.

Ответы [ 2 ]

20 голосов
/ 05 февраля 2012

Это заставляет @ означать «знак at» вместо «Разыменование $string как arrayref».

6 голосов
/ 06 февраля 2012

Обратная косая черта перед @ указывает Perl обрабатывать его буквально, иначе он будет обрабатывать его как массив. Если за @ следует $, это будет рассматриваться как ссылка на массив (строка, содержащая ссылку на массив). Если вы распечатаете его, это может быть яснее (я изменил ваш код для использования qq||):

my $string = 'i-am-a-string';

print qq| "blah\@$string;blah" |; # with backslash
#  "blah@i-am-a-string;blah"

print qq| "blah@$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
#  "blah@ARRAY(0x803bc0);blah"    # ARRAY(0x803bc0) is where (1,2,3) lives

print qq| "blah@$string;blah" |; # no backslash
# "blah1 2 3;blah"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...