2016-07-22 42 views
0

我写了Perl module,在那我用的是class and objects。 所以我创建了该类的对象并访问它的方法。 例如:为什么我们无法通过::中的对象访问方法perl

{ 
    package sample; 
    sub Bless 
    { 
     my $Class = shift; 
     my $Name = shift; 
     bless \$Name, $Class; 
    } 
} 
{ 
package test; 
     our @ISA = qw(sample); 
    sub Print 
    { 
     my $Name = shift; 
      print "Hi, I'm $$Name & This is for testing\n"; 
    } 
} 

my $My_Obj = test->Bless('Ganapathy'); 
$My_Obj->Print; 

对于上述说法,该方案已经正常运行。 当我执行它,它给出了这样的输出,

Hi, I'm Ganapathy & This is for testing 

但是,如果我访问使用对象方法与::这样,

$My_Obj::Print; 

它不能正常工作,并抛出类似错误下面,

Useless use of a variable in void context at /home/ganapathy/trainee_2015/perl/inter_perl/chap_13/Object_Doubt.pl line 46. 
Name "My_Obj::Print" used only once: possible typo at /home/ganapathy/trainee_2015/perl/inter_perl/chap_13/Object_Doubt.pl line 46. 

为什么我不能这样访问,请任何人帮助我。 谢谢。

回答

2

$My_Obj::Print你是从包My_Obj

你还没有分配给它或使用它的值要求的标量Print,所以基本上你只是提一个标量变量的名字,而你得到消息

没用使用的变量在无效的情况下

它是什么,你想干什么? $My_Obj显然是一个对象,并且您已成功地将其称为Print方法,使用的方法是$My_Obj->Print。你为什么想用不同的方式来做?

+0

我只是想检查它为什么不工作? – Ganapathy

+0

@Ganapathy:它*正在工作*。 ' - >'和'::'是非常不同的东西,不可互换。 – Borodin

+0

好的,谢谢你的帮助.... – Ganapathy

相关问题