Как понять эту команду многострочного письма Perl

Я пытаюсь понять команды Perl ниже:

$my = << EOU;

This is an example.

Example too.

EOU

Как называется этот способ? Может ли кто-нибудь объяснить больше об этой команде «многострочного письма»?


person Tong    schedule 02.11.2015    source источник
comment
Это то, что я хочу! Благодарю вас!   -  person Tong    schedule 02.11.2015
comment
@ Сухой27, между ‹‹ и EOU есть пробел. Правильное видение: $my = ‹‹EOU;   -  person Tong    schedule 02.11.2015


Ответы (2)


По сути, синтаксис позволяет вам поместить что-нибудь уникальное в качестве маркера, чтобы оно не конфликтовало с вашим содержимым. Ты можешь сделать это:

$my = <<ABCDEFG;
This is an example.
Example too.

BLAH
ABCDEFG

Все, что находится между «This..» и «BLAH», будет присвоено переменной. Обратите внимание, что после символов ‹‹ не должно быть пробела, иначе вы получите синтаксическую ошибку. Это помогает избежать добавления символов CR или добавления (.) везде и полезно при передаче данных в другое приложение (например, сеанс ftp). Правильным термином для этого является Здесь документы.

person ergonaut    schedule 02.11.2015

Все, что находится между ‹‹EOU и EOU, представляет собой многострочную неэкранируемую строку. В этом нет ничего необычного, думайте о них как о начальных и конечных кавычках, внутри которых нет ничего, требующего, чтобы escape-символы были буквально тем, что вы набрали...

person BadZen    schedule 02.11.2015
comment
неизбежный? Вы имеете в виду без интерполяции? Это было бы причиной только в том случае, если бы метка heredoc была заключена в одинарные кавычки. По умолчанию оно заключено в двойные кавычки. - person Miller; 02.11.2015