尝试访问对象内部的$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
except $self
。由于我想使用$self
和其他变量。我认为这与传递$self
给sub
或不传递有关,但我不知道如何在$self
没有my $self = shift;
命令的情况下访问。