2

尝试访问对象内部的$self变量和其他变量时收到错误消息。subsub从对象外部调用时,一切正常。但是当我尝试在对象中访问它时,我得到一个错误(见下文)。

这是描述我的问题的示例代码:

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和其他变量。我认为这与传递$selfsub或不传递有关,但我不知道如何在$self没有my $self = shift;命令的情况下访问。

4

1 回答 1

2

在第 22 行的连接 (.) 或字符串中使用未启动的值 $person。

调用test2方法时,您忘记了$person参数,即。

$i->test2();

应该

$i->test2("Someone");
于 2013-10-15T13:18:14.123 回答