我在尝试访问对象内的$self
中的sub
和其他变量时收到错误消息。从对象外部调用sub
时一切正常。但是当我尝试在对象中访问它时,我得到一个错误(见下文)。
以下是描述我的问题的示例代码:
package input;
use warnings;
use strict;
sub new {
my $class = shift;
my $self = { };
$self->{_name} = shift;
bless ($self, $class);
return $self;
}
sub test1{
my $self = shift;
my $person = shift;
return $self->{_name}." and ".$person;
}
sub test2{
my $self = shift;
my $person = shift;
print test1($self,$person);
}
package Main;
use warnings;
use strict;
my $i = input->new("Jon");
print $i->test1("Me")."\n";
$i->test2();
打印$i->test1("Me")."\n";
的调用确实可以正常工作。
我喜欢在对象内的不同函数中访问test1()
。
但对于$i->test2();
我收到了错误
在连接(。)或第22行的字符串中使用未启动的值$ person。
如果我要写
sub test2{
my $self = shift;
my $person = "Jim";
print test1($self,$person);
}
它也会起作用。
但我明确地想要将sub
传递给$self
除$self
之外的其他变量。因为我想使用$self
和其他变量。我认为这与将sub
传递给$self
有关,但我无法弄清楚如何在没有my $self = shift;
命令的情况下访问{{1}}。
答案 0 :(得分:2)
在连接(。)或第22行的字符串中使用未启动的值$ person。
调用test2
方法时,您忘记了$person
参数,即
$i->test2();
应该是
$i->test2("Someone");