我试图在 Perl 中理解 OO。我做了以下琐碎的课程:
#/usr/bin/perl
package Tools::Util;
use strict;
use warnings;
my $var;
sub new {
my ($class, $arg) = @_;
my $small_class = {
var => $arg,
};
return bless $small_class;
}
sub print_object {
print "var = $var\n"; #this is line 20
}
1;
这是一个测试脚本:
#!/usr/bin/perl
use strict;
use warnings;
use Tools::Util;
my $test_object = new Tools::Util("Some sentence");
$test_object->print_object();
use Data::Dumper;
print Dumper($test_object);
我得到的结果是:
Use of uninitialized value $var in concatenation (.) or string at Tools/Util.pm line 20.
var =
$VAR1 = bless( {
'var' => 'Some sentence'
}, 'Tools::Util' );
我无法理解这。我认为 Perl 中的对象是散列,因此我可以使用相同的名称访问/初始化成员变量,而无需$
. 为什么在这种情况下$var
未初始化但我转储的哈希包含该值?
我应该如何使用/初始化/处理成员变量,我在这里误解了什么?