Как, если оператор работает в Perl с хэш-аргументом? - PullRequest
0 голосов
/ 29 ноября 2018

у меня есть эта переменная:

my %permit = (
        "activity" => '',
        "type" => '',
        "sub_type" => '',
        "status" => '',e
        );

    my $permit;

и прежде, чем у меня есть tihis if:

if($permit->{activity}){
     print "inside if\n";
}

вопрос: когда выполняется оператор if?

1 Ответ

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

Здесь у вас есть две переменные - %permit, который является хешем, содержащим пары ключ / значение, и $permit, который является скаляром и ничего не содержит.

Чтобы найти значение в хэше, вы должны использовать синтаксис $permit{activity} (обратите внимание, что там нет стрелки).Синтаксис $permit->{activity} (со стрелкой) пытается использовать скаляр $permit в качестве хэша ссылка и ничего не возвращает - поскольку $permit не содержит ссылку на хэш.

Вы никогда не попадете в ветку if, так как ваш код смотрит на неверную переменную.

Вот почему вообще очень плохая идея иметь две переменные разных типов с одинаковым именем (%permitпротив $permit).

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