Вопрос об использовании модуля Perl CGI:
Допустим, у меня есть подпрограмма с именем foo, которая принимает два параметра, определенных следующим образом:
sub foo {
local($a, $b) = @_;
print "a= [$a]";
}
В моей основной процедуре я беру некоторые параметры формы и передаю их в foo следующим образом:
use CGI;
$cgi = CGI->new;
foo($cgi->param('field1'), $cgi->param('field2'));
Если форма не передала значение для field1 (в моем случае использовалось поле SELECT с именем field1 без значений для выбора), sub foo устанавливает $a в значение, которое было передано в $cgi->param («поле2»), которое было непустым значением.
Может ли кто-нибудь помочь мне понять, почему это происходит и почему $a не просто пустое ('') значение, а $b = значение, отправленное из $cgi->param('field2')?
Я уверен, что есть логическая причина, но я не профессионал в Perl, поэтому я уверен, что мне еще предстоит узнать или понять Perl.
Заранее спасибо!
local
(и вы не должны использовать$a
и$b
в качестве имен переменных, поскольку они специально используются дляsort
.) Вы хотите использоватьmy ( $foo, $bar ) = @_;
- person friedo   schedule 07.09.2013local
действительно неудачное. Он не создает локальные переменные. Вы создаете локализованные переменные, которые работают так, как вы ожидаете, всегда используйтеmy
. - person Dave Cross   schedule 09.09.2013