2013-10-04 64 views
0

我想了解駝鹿::出口商,但無論我嘗試什麼,幾乎與手冊完全一樣的示例不起作用。簡單的駝鹿::出口商示例不工作

package HasRw; 
use Moose; 

use Moose::Exporter; 

Moose::Exporter->setup_import_methods(
     with_meta => ['has_rw'], 
     also=>'Moose'); 

sub has_rw { 
     my ($meta, $name, %options) = @_; 
     $meta->add_attribute(
      $name, 
      is => 'rw', 
      %options, 
    ); 
} 

1; 

package Another; 
use Moose; 
has_rw 'foo'; 


package main; 

my $ww = new Another(foo=>"bar"); 

這是在文件example.pl;當我嘗試用Perl運行它,我得到這個錯誤信息

字符串發現其中運營商預計將在example.pl線23附近 「has_rw‘富’」

(你需要預先聲明)example.pl第23行附近的語法錯誤,「has_rw'foo'附近」

執行 example.pl由於編譯錯誤而中止。

我在做什麼錯?

回答

2

另一個甚至從來沒有試圖從HasRw導入has_rw

如果你這麼做了,在編譯調用has_rw之前必須這樣做,所以它必須在編譯時完成。不要忘記,即使在此之前,​​也必須執行!

使用use爲您做了這一切。內聯等價物use HasRw;

BEGIN { 
    package HasRw; 
    ... 
    $INC{'HasRw.pm'} = 1; 
} 

use HasRw; 
+0

Ufff。我認爲我理解Perl。什麼是最好的解決方案呢? –

+0

那就是你想要的。無論您是否想要單獨的文件,由您決定。 – ikegami

0

HasRw移動到另一個文件HasRw.pm,特別是使用use HasRw;導入它似乎解決了這個問題。

就這樣,我想。