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
初期化されていないのに、ダンプしたハッシュに値が含まれているのはなぜですか?
メンバー変数をどのように使用/初期化/処理する必要がありますか? ここで何が誤解されていますか?