perl – 为什么我不能初始化new里面的成员变量?
发布时间:2020-12-16 06:06:16 所属栏目:大数据 来源:网络整理
导读:我试图在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
我试图在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 = $varn"; #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没有初始化但是我转储的哈希包含值? 解决方法
$var是词法类变量,在您的示例中未定义.
你可能想要: sub print_object { my $self = shift; print "var = $self->{var}n"; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |