所以,我是一个Perl的新手。虽然我有更复杂的事情,但我突然遇到了障碍,无法弄清楚代码中的wtf是否有错。我简化了它,它只是一小段代码。在Perl中初始化一个对象
Test.pl
package Test;
sub new {
my ($class) = shift;
my $self = {
_attr => "asdfa"
};
bless $self, $class;
return $self;
}
sub log {
print "\nAccessed via class: ".$self->{_attr};
}
process.pl
#!/usr/bin/perl
do "Test.pl";
use strict;
use warnings;
use diagnostics;
my($test) = new Test();
$test->log;
print "\nAccessed via main: ".$test->{_attr};
我跑process.pl,我得到下面的输出
通过类来访问:
通过访问的主要:asdfa
我也得到警告
使用未初始化值的 连接(。)或字符串在Test.pl线12(1#) 使用 (W未初始化)一个未定义的值,好像它已经定义了 。它被解释为“”或0,但也许这是一个错误。 要抑制此警告,请将一个定义的值分配给您的变量。
所以问题是$ self实际上是未定义的。为什么,我不知道。这不是初始化对象的方式吗?
谢谢sooo多! – 2010-08-27 15:45:45