2011-03-08 47 views
1

我想延長我公司具體的BaseClass(ACME :: BaseClass的),但每當我:需要延伸我的Perl模塊幫助

package Manager; 
use strict; 
use warnings; 
use base qw(Acme::BaseClass) 
sub new { ... 

它給我的錯誤:

Base class package "Acme::BaseClass" is empty. 

但在我的劇本我可以使用包罰款:

use Acme::BaseClass; 
my $bc = BaseClass->new("myname"); 
$bc->prnt(); # prints "myname" 
exit; 

這是我第一次嘗試用Perl繼承所以也許我失蹤基本的東西?

注:

  • 我一直在使用 「父母」 試圖,它也不起作用
  • 我試圖用老派:

    BEGIN { 需要的Acme :: BaseClass的; push @ISA,qw(Acme :: BaseClass); }

我不確定如何正確地做到這些。希望這是簡單的我錯過了。如果沒人能回答,我會添加更多的細節。

+0

當你這樣做時會發生什麼:'eval {require Acme :: BaseClass};打印「錯誤:$ @ \ n」;' – DVK 2011-03-08 21:34:18

+1

此外,您的代碼看起來可疑。該腳本示例應該說' my $ bc = Acme :: BaseClass-> new(「myname」);' – DVK 2011-03-08 21:37:07

+0

此外,您的代碼看起來很可疑。該腳本示例應該說' my $ bc = Acme :: BaseClass-> new(「myname」);' – DVK 2011-03-08 21:38:00

回答

14

從您的代碼示例來看,這聽起來像Acme/BaseClass.pm中有

package BaseClass; 

.... 

1; 

這樣的事情,它需要

package Acme::BaseClass; 

.... 

1; 
+1

哈哈!!而已。萬分感謝。 – stephenmm 2011-03-08 21:34:48

+0

.......好眼睛! – Axeman 2011-03-08 22:54:39

0

可能子類找不到BaseClass的模塊,但你的測試腳本能夠。檢查@INC是否正確安裝,以便兩者都能找到你的模塊。

+0

瞭解,不適用於我。即使通過CPAN。 – stephenmm 2011-03-08 21:40:06