如何将变量传递到'sub'块?

时间:2014-03-07 22:06:43

标签: perl

如何将变量传递给Perl子块?

(这是一个perl CGI页面。)

变量$ yellow未传递到子登录块... 虽然可以做到,但我还是读到了它不应该的地方。如何将变量传递到子块?

例如:

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

sub login {
### code .....
$yellow .....
### code....
}

2 个答案:

答案 0 :(得分:3)

您需要对登录函数进行编码以获取参数:

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

然后当你调用函数时,只需传递参数:

login($yellow);

答案 1 :(得分:2)

你似乎对Perl非常不熟悉。我建议你快速浏览一下这些文档可以为你提供更好的服务,但是这里也是如此。

没有Perl 'sub'block 。 Perl像大多数其他语言一样有子程序(尽管他们可能想要称它们为函数或者方法)。

Perl子例程接受来自内置数组@_的参数的数组。您可以直接访问它,但通常最好不要单独将其内容复制到子例程本地的标量变量。

在你的情况下,我的猜测是你应该写一些类似

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

login($colour);

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

  # code using passed $colour
}