Как мога да отпечатам адресен низ, без да накарам Perl да приеме наклонените черти като екраниращи знаци? Не искам да променям низа, като добавям и още екраниращи знаци.
Как мога да попреча на Perl да интерпретира \ като екраниращ знак?
Отговори (4)
Това, за което питате, се нарича интерполация. Вижте документацията за Quote-Like Operators на perldoc perlop, но по-конкретно начинът да го направите е със синтаксиса, наречен тук-документ, комбиниран с единични кавички:
Единичните кавички показват, че текстът трябва да се третира буквално, без интерполация на съдържанието му. Това е подобно на единични низове в кавички, с изключение на това, че обратните наклонени черти нямат специално значение, като \ се третират като две обратни наклонени черти, а не като една, както биха направили във всяка друга конструкция в кавички.
Това е единствената форма на цитиране в perl, където няма нужда да се притеснявате за избягване на съдържание, нещо, което генераторите на кодове могат и използват добре.
Например:
my $address = <<'EOF';
[email protected]\with\backslashes\all\over\theplace
EOF
Може да искате да прочетете за различните други оператори за цитиране, като qw
и qq
(в същия документ, както споменах по-горе), тъй като те са много често използвани и правят добра стенограма за други по-дълги начини за избягване на съдържание.
substr()
или chomp()
ще го оправят добре.
- person Ether; 22.01.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";
Бихме могли да дадем много по-полезни отговори, ако ни дадете примерен код.
Зависи от какво избягвате, но подобните на Quote оператори може да помогнат.
Вижте man страницата на perlop.
Използвайте обратната наклонена черта два пъти,
print "This is a backslah character \\";