保持子程序响应并在Perl

时间:2018-04-12 07:59:50

标签: perl variables subroutine

我的代码:

#!/usr/bin/perl 
use strict;
use warnings;

thesub("hello");

sub thesub {
   my $class = shift;
   my $self = shift;
   return $self;

}
my $testvar = thesub();

print $testvar;

$ testvar什么都不打印,我想打印你好。 我有意将thesub()更改为\& thesub,但不能正常工作。

我读到在Perl中,标量变量不能直接保存子程序。

我该如何解决此案?

感谢。

2 个答案:

答案 0 :(得分:3)

您正在将一个参数传递给thesub(),但它需要两个参数。所以“你好”最终会在$class中结束,而$self最终不会包含任何内容(或者更确切地说,undef)。最简单的解决方法是删除分配给$class的行。但是我不确定这是否是最好的解决办法,因为我对你在这里真正要做的事情还不太清楚。

变量名称($class$self)让我觉得你正在阅读有关面向对象编程的教程。但是这里没有OO。

此外,我无法想到OO Perl中您将$class$self传递给某个方法的情况。

答案 1 :(得分:2)

你没有包裹,所以我假设你不想上课,

use strict;
use warnings;
use v5.10;

sub thesub {
    state $stored;

    $stored = shift if @_;
    return $stored;
}

thesub("hello");
print thesub();