Как передать переменную в подблок Perl?

(Это страница Perl CGI.)

Переменная $ yellow не передается во вспомогательный блок входа в систему ... Я где-то читал, что этого не должно быть, хотя это можно сделать. Как передать переменную в подблок?

Например:

    $cgi = new CGI;
    $yellow = $cgi->param("yellow");

sub login {
### code .....
$yellow .....
### code....
}
0
Ilan Kleiman 8 Мар 2014 в 02:06

2 ответа

Лучший ответ

Вам нужно закодировать функцию входа в систему, чтобы она принимала параметр:

sub login {
    my($arg1) = @_;
    ...
}

А затем, когда вы вызываете функцию, просто передайте параметр:

login($yellow);
3
matt forsythe 7 Мар 2014 в 22:09

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

В Perl нет подблока . Perl имеет подпрограммы, как и большинство других языков (хотя они могут захотеть называть их функциями или, возможно, методами ).

Подпрограмма Perl принимает массив аргументов из встроенного массива с именем @_. Вы можете получить к нему доступ напрямую, но обычно лучше оставить его в покое и скопировать его содержимое в скалярные переменные, локальные для подпрограммы.

В вашем случае я предполагаю, что вы должны написать что-то вроде

my $cgi = CGI->new;
my $colour = $cgi->param('yellow');

login($colour);

sub login {
  my ($colour) = @_;

  # code using passed $colour
}
2
Borodin 7 Мар 2014 в 23:56