Как я могу запретить Perl интерпретировать \ как escape-символ? - PullRequest
0 голосов
/ 22 января 2010

Как я могу напечатать строку адреса, не заставляя Perl принимать косую черту как escape-символы? Я не хочу изменять строку, добавляя также дополнительные escape-символы.

Ответы [ 4 ]

7 голосов
/ 22 января 2010

То, о чем вы спрашиваете, называется интерполяция . См. Документацию для «Операторы, подобные кавычкам» в perldoc perlop , но более конкретно способ сделать это с помощью синтаксиса, называемого «здесь-документ», в сочетании с одинарными кавычками:

Одинарные кавычки указывают на то, что текст должен обрабатываться буквально без интерполяции его содержания. Это похоже на строки в одинарных кавычках, за исключением того, что обратная косая черта не имеет особого значения, поскольку \ рассматривается как две обратные косые черты, а не как одна, как в любой другой конструкции с кавычками.

Это единственная форма цитирования в perl, где нет необходимости беспокоиться о экранировании контента, то, что генераторы кода могут и действительно используют.

Например:

my $address = <<'EOF';
blah@blah.blah.com\with\backslashes\all\over\theplace
EOF

Возможно, вы захотите ознакомиться с различными другими операторами цитирования, такими как qw и qq (в том же документе, на который я ссылался выше), так как они очень часто используются и служат хорошим сокращением для других более длинных Извилистые способы выхода из контента.

1 голос
/ 22 января 2010

Используйте одинарные кавычки. Например

print 'lots\of\backslashes', "\n";

дает

lots\of\backslashes

Если вы хотите интерполировать переменные, используйте оператор ., как в

$var = "pesky";
print 'lots\of\\' . $var . '\backslashes', "\n";

Обратите внимание, что вы должны экранировать обратную косую черту в конце строки.

В качестве альтернативы вы можете использовать join:

print join("\\" => "lots", "of", $var, "backslashes"), "\n";

Мы могли бы дать гораздо более полезные ответы, если бы вы дали нам пример кода.

0 голосов
/ 27 апреля 2013

Дважды используйте обратную косу,

print "This is a backslah character \\";
0 голосов
/ 22 января 2010

Это зависит от того, что вы убегаете, но операторы, подобные кавычкам, могут помочь.

См. Справочную страницу perlop.

...