尝试访问对象内部的$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);
}
它也会起作用。
但是我明确地想将其他一些变量传递给subexcept $self。由于我想使用$self和其他变量。我认为这与传递$self给sub或不传递有关,但我不知道如何在$self没有my $self = shift;命令的情况下访问。