Как я могу отделить переменные Perl от текста в интерполированных строках? - PullRequest
36 голосов
/ 03 февраля 2009

Рассмотрим:

print "    $foo", "AAAAAAAA", $foo, "BBBBBBBB";

Допустим, я хочу использовать этот код с print <<EOF;:

print <<EOF;
    $fooAAAAAAAA$fooBBBBBBBB";
EOF

Это не сработает, потому что Perl думает, что у меня есть переменная с именем $fooAAAAAAAA. Как я могу легко использовать print << с такими строками, когда у меня есть длинный тест для печати?

Ответы [ 3 ]

57 голосов
/ 03 февраля 2009

Использование ${foo}:

print <<EOF;
    ${foo}AAAAAAAA${foo}BBBBBBBB";
EOF
4 голосов
/ 03 февраля 2009

Вот еще один способ сделать это, используя printf:

printf << EOF, $foo, $foo;
   %dAAAAA%dBBBBBBB 
EOF

То есть, если вы хотите напечатать $foo как десятичное число. Вы можете заменить %d любым форматом, который вам нужен.

0 голосов
/ 05 декабря 2017

И еще один ответ, основанный на не интерполированных строках, который я считаю наиболее подходящим.

print <<'EOF';
    $fooAAAAAAAA$fooBBBBBBBB";
EOF

http://perldoc.perl.org/perlop.html#Quote-Like-Operators

...