Экранирование синтаксиса точки с запятой в Perl - PullRequest
0 голосов
/ 30 ноября 2018

Как я могу избежать точки с запятой (это синтаксис) в Perl, добавив только символы после него?

Скажем, у меня есть строка кода:

print "foo";

Я хочудобавьте следующий код после него, чтобы он мог повторяться 5 раз:

print "foo"; x 5;

Можно ли в любом случае избежать / игнорировать точку с запятой (без изменения исходного фрагмента кода), чтобы ее можно было интерпретировать как:

print "foo" x 5;

Редактировать: Это кажется слишком хлопотным, лучше просто вставить строку в цикл for.

Ответы [ 3 ]

0 голосов
/ 30 ноября 2018

Вот пример использования фильтра источника.Фактически он изменяет код перед его выполнением, поэтому вам не придется делать это самостоятельно.

echo package FiveTimes; use Filter::Simple sub{s/;/x5;/g};1; > FiveTimes.pm

perl -MFiveTimes -e"print qq/foo/;"
foofoofoofoofoo
0 голосов
/ 30 ноября 2018
 print "foo"; BEGIN{tie *STDOUT,'FiveTimer';sub FiveTimer::TIEHANDLE{bless{},'FiveTimer'}sub FiveTimer::PRINT{CORE::print STDERR $_[1] x 5}}

или более читабельно

 print "foo"; BEGIN{ tie *STDOUT,'FiveTimer' }
 sub FiveTimer::TIEHANDLE{bless{},'FiveTimer'}
 sub FiveTimer::PRINT{CORE::print STDERR $_[1] x 5}}
0 голосов
/ 30 ноября 2018

Похоже, вы просто хотите напечатать "foo" 5 раз?

Если да, то:

use strict;
use warnings;
print "foo" for (1..5);

Выход:

foofoofoofoofoo
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...