2015-10-09 2 views
1

Я отслеживаю программу, которая не принадлежит мне. Что означает приведенное ниже выражение:

get_input(
    \$args_100{env}, 
    "\n\tAre these reports running out of the TEST environment (Y\/N)?", 
    0, 
    'N', 
    '', 
    ['Y','N'] 
) if(uc($ENV{USERNAME}) =~ /$super_users/i) ; 

Я понимаю, если заявление, но раньше, если?

+0

Какая линия перед этим? – ergonaut

+1

Это последняя строка в подпрограмме? –

+0

это полная строка: \t get_input (\ $ args_100 {env}, "\ n \ tВыдаются эти отчеты, заканчивающиеся из среды TEST (Y \/N)?", 0, 'N', '', [' Y ',' N ']), если (uc ($ ENV {USERNAME}) = ~/$ super_users/i); –

ответ

6

Это постфикс, если обозначение. См. Statement Modifiers in perlsyn. Это эквивалентно

if (uc($ENV{USERNAME}) =~ /$super_users/i) { 
    get_input(\$args_100{env}, 
     "\n\tAre these reports running out of the TEST environment (Y\/N) ?", 
     0, 'N','',['Y','N']); 
} 
+1

спасибо, теперь я понимаю –

1

Короткий ответ, что ['Y','N'] создает массив из двух односимвольных строк, "Y" и "N", и возвращает ссылку на этот массив. Эта ссылка передается в качестве шестого и последнего параметра на звонок get_input

get_input(
    \$args_100{env}, 
    "\n\tAre these reports running out of the TEST environment (Y\/N)?", 
    0, 
    'N', 
    '', 
    ['Y','N'] 
) if(uc($ENV{USERNAME}) =~ /$super_users/i) ; 
Смежные вопросы