Существует ли простой способ локализовать (сохраняют) все “волшебные переменные” как 1$, $ и и т.д.?

У меня создается впечатление что некоторые предприятия (например: JackBe) вставленный зашифрованный код JavaScript *.gif файлы, а не файлы JS, как дополнительная мера путаницы.

9
задан j_random_hacker 6 August 2009 в 02:55
поделиться

3 ответа

Может быть, вы можете предложить лучшую формулировку документации. Под динамической областью подразумевается все до начала включающего блока или подпрограммы, плюс все до начала этого блока или вызова подпрограммы и т. Д. за исключением , что любые закрытые блоки исключаются.

Другой способ скажите это: «последние успешные под совпадения в текущей активной динамической области» означают неявно local $ x = $ x; в начале каждого блока для каждой переменной.

Большинство упоминаний о динамическая область видимости (например, http://perldoc.perl.org/perlglossary.html#scope или http://perldoc.perl.org/perlglossary.html#dynamic-scoping ) подходят к нему с другой стороны. Они применимы, если вы думаете об успешном регулярное выражение как неявное выполнение локального $ 1 и т. д.

8
ответ дан 4 December 2019 в 19:35
поделиться

I am not sure there is any real reason to be this paranoid about all these variables. I have managed to use Perl for almost ten years without once needing to use an explicit local in this context.

The answer to your specific question is: The number of digit variables is not a given (even though there is a hard memory limit to how many matches you can work with). So, it is not possible to localize all of them at the same time.

3
ответ дан 4 December 2019 в 19:35
поделиться

Я думаю, вы слишком беспокоитесь. Лучше всего запустить оператор сопоставления, немедленно сохранить нужные значения в значимых переменных, а затем позволить специальным переменным делать то, что они делают, не беспокоясь о них:

if( $string =~ m/...(a.c).../ ) {
    my $found = $1;
    }

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

my @array = $string =~ m/..../g;
1
ответ дан 4 December 2019 в 19:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: