Ответ Эбигейл отчасти юмористический. На самом деле нет оператора << >>
(не в версиях Perl до 5.22 ), но есть (не очень известный, я думаю) оператор <<
. Не бинарный оператор сдвига, а унарный здесь-документ (для краткости heredoc) . Простая форма этого:
$long_string = <<EOF;
This is a long, multiline string.
It ends when EOF appears alone on a line.
It will be assigned to the \$long_string variable.
EOF
Фактически, это функция «многострочного комментария», лежащая в основе ответа Абигейл - многострочный строковый литерал. Остальное - немного запутанный Perl.
Голое слово или строка в кавычках после <<
заканчивает строковый литерал. Вы можете использовать q
как голое слово:
<<q;
This is a multiline comment, or rather a string literal whose value is ignored.
q
Чтобы понять остальную часть фрагмента Абигейл, полезно переписать документ здесь в простой строковый литерал:
"This is a multiline comment.\n" =~ q>>;
Хорошо, теперь q>>
- это q
кавычечный оператор с >
в качестве символа-разделителя. q>>
эквивалентно ''
(не интерполированный литерал, который оказывается пустым). Таким образом, строковый литерал сопоставляется с пустым шаблоном . Результат этого сопоставления в любом случае игнорируется, но это приводит к сглаживанию переменных результата сопоставления ($1
, $&
и т. Д.).