В чем разница между моим и местным в Perl? - PullRequest
59 голосов
/ 25 сентября 2008

Я вижу, как они оба используются в этом сценарии, который я пытаюсь отладить, и литература просто не ясна Может кто-нибудь объяснить мне это?

Ответы [ 14 ]

2 голосов
/ 25 сентября 2008

«Мои» переменные видны только в текущем блоке кода. «локальные» переменные также видны везде, где они были видны раньше. Например, если вы говорите «мой $ х;» и вызвать подфункцию, она не может видеть эту переменную $ x. Но если вы говорите "местный $ /;" (чтобы обнулить значение разделителя записей), затем вы измените способ чтения из файлов в любых вызываемых вами функциях.

На практике вы почти всегда хотите «мое», а не «местное».

0 голосов
/ 17 сентября 2014

Я думаю, что самый простой способ запомнить это так. MY создает новую переменную. LOCAL временно изменяет значение существующей переменной.

0 голосов
/ 06 августа 2009
&s;

sub s()
{
    local $s="5";
    &b;
    print $s;
}

sub b()
{
    $s++;
}

Вышеприведенный скрипт печатает 6.

Но если мы изменим локальный на мой, он напечатает 5.

В этом разница. Простой.

0 голосов
/ 01 октября 2008

Пример использования в локальной сети dinomite для переопределения разделителя записей - это единственный раз, когда я сталкивался во многих программах на Perl. Я живу в нишевой среде perl [программирование безопасности], но в моем опыте это действительно редко используемая область.

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