所以,我是一個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