2011-08-24 14 views
6

私は最初の単純なパッケージ(実際には最初のパッケージ期間)を作ることに多くの問題を抱えているようです。私は私がやっていなければならないこと全てをやっていますが、それはまだ機能していません。ここでのパッケージは、(私はあなたがモジュールを呼び出すことができますね)です:Perlでパッケージを作成する

package MyModule; 

use strict; 
use Exporter; 
use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS); 

$VERSION  = 1.00; 
@ISA   = qw(Exporter); 
@EXPORT  =(); 
@EXPORT_OK = qw(func1 func2); 
%EXPORT_TAGS = (DEFAULT => [qw(&func1)], 
      Both => [qw(&func1 &func2)]); 

sub func1 { return reverse @_ } 
sub func2 { return map{ uc }@_ } 

1; 

私はこれが私のモジュールのところすべてであるPerl/site/libでMyModuleという(はい、それは.PMファイルとして保存された)(このモジュールを保存しました内蔵されていないものは保存されます)。次に、このモジュールのinnをPerlスクリプトで試してみました。

use strict; 
use warnings; 

my @list = qw (J u s t ~ A n o t h e r ~ P e r l ~ H a c k e r !); 

use Mine::MyModule qw(&func1 &func2); 
print func1(@list),"\n"; 
print func2(@list),"\n"; 

私はこれをmy.plとして保存します。その後、私はmy.plを実行すると、このエラーを取得する:これはなぜ起こるか

Undefined subroutine &main::func1 called at C:\myperl\examplefolder\my.pl line 7. 

誰かが説明していただけますか?前もって感謝します!

はい、私の例はPerl Monksからでした。 the Perl Monks "Simple Module Tutorial"を参照してください。ありがとうございますtachyon

+0

「Mine :: MyModule」が「MyModule」に変更されて質問が意味をなさないため、ロールバックされました – Zaid

答えて

3

パッケージ名と使用名が一致しません。あなたはMineと呼ばれるフォルダにモジュールを持っているなら、あなたはそれに応じて、パッケージに名前を付ける必要があります。

package Mine::MyModule

あなたがそのフォルダにそれを持っていない場合、あなたはあなたのuseコール

からということを削除する必要があります

use MyModule

+0

WOW!今私は愚かになりました。ありがとう。ところで、それは編集される前にMineディレクトリにありました。 – Dynamic

2

それは

package Mine::MyModule; 

すべきであり、それはshoul d Perl/site/libのMineディレクトリにあります。

+0

ありがとうございました。 – Dynamic

関連する問題