Ответ 1
Perl не имеет синтаксического вертикального пробела, поэтому вы можете просто сделать
$foo = "line1
line2
line3
";
что эквивалентно
$foo = "line1\nline2\nline3\n";
В Python у вас может быть многострочная строка, подобная этой, используя docstring
foo = """line1
line2
line3"""
Есть ли что-то эквивалентное в Perl?
Perl не имеет синтаксического вертикального пробела, поэтому вы можете просто сделать
$foo = "line1
line2
line3
";
что эквивалентно
$foo = "line1\nline2\nline3\n";
Нормальные кавычки:
# Non-interpolative
my $f = 'line1
line2
line3
';
# Interpolative
my $g = "line1
line2
line3
";
Здесь-docs позволяют определить любой токен как конец блока цитируемого текста:
# Non-interpolative
my $h = <<'END_TXT';
line1
line2
line3
END_TXT
# Interpolative
my $h = <<"END_TXT";
line1
line2
line3
END_TXT
Операторы цитирования в стиле Regex позволяют использовать практически любой символ в качестве разделителя - таким же образом регулярное выражение позволяет вам изменять разделители.
# Non-interpolative
my $i = q/line1
line2
line3
/;
# Interpolative
my $i = qq{line1
line2
line3
};
UPDATE: Исправлены токены here-doc.
Да, здесь-doc.
$heredoc = <<END;
Some multiline
text and stuff
END
Да, у вас есть 2 варианта:
1.heredocs обратите внимание, что все данные в heredocs интерполируются:
my $data = <
ваши данные
КОНЕЦ
2.qq() см., например:
печать qq ( HTML
$текст
ОРГАН
HTML );
Быстрый пример
#!/usr/bin/perl
use strict;
use warnings;
my $name = 'Foo';
my $message = <<'END_MESSAGE';
Dear $name,
this is a message I plan to send to you.
regards
the Perl Maven
END_MESSAGE
print $message;
...Результат:
Dear $name,
this is a message I plan to send to you.
regards
the Perl Maven