perl – 为什么我不能初始化new里面的成员变量?

前端之家收集整理的这篇文章主要介绍了perl – 为什么我不能初始化new里面的成员变量?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图在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没有初始化但是我转储的哈希包含值?
我应该如何使用/初始化/处理成员变量以及我在这里误解了什么?

解决方法

$var是词法类变量,在您的示例中未定义.

你可能想要:

sub print_object {  
    my $self = shift;
    print "var = $self->{var}\n";
}

猜你在找的Perl相关文章