我的代码:
#!/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中,标量变量不能直接保存子程序。
我该如何解决此案?
感谢。
答案 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();