2016-07-22 56 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

相關問題