我是 Perl 的新手,正在尝试解决 Llama 书中的一些练习题。问题是编写一个子例程,如果他是第一个,就表示欢迎,或者告诉他前一个在那里的人的名字。我的代码看起来像:
#! perl
# This is the greeter problem .
sub greetPerson{
state $previous = undef ;
if($previous eq undef){
print " Welcome ... u r the first \n";
}
else{
print " Hi ... $previous was already here \n";
}
$previous = $_;
return 0;
}
@code = ("ravi" , "teja" , "chandu");
greetPerson($code[0]);
greetPerson($code[1]);
greetPerson($code[2]);
我得到一个错误提示
"Can't call method state on undefined value in Line 6. "
请帮助我了解这意味着什么、为什么会出现以及如何解决它..? 我知道“状态”在其他语言(C/Java)中是“静态”的同义词。我错了吗?
最佳答案
state
是一项相当新的功能(自 Perl 5.10 起),默认情况下未启用。启用它:
use feature 'state';
使用 state
有点等同于 Java 中的静态变量。另一种没有状态的方法是在 greetPerson
之外用一个简单的 my
声明 $previous
,这意味着它在你的整个脚本范围内.
顺便说一句,您还应该在所有脚本中包含这些行,以免在后续过程中遇到很多麻烦:
use strict;
use warnings;
此外,在 greetPerson
中,您需要获取参数,您可以从 @_
获取参数。例如
my ($name) = @_; # or
my $name = $_[0];
关于perl - 无法调用方法状态 - 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10808763/