• ベストアンサー

関数が使えない

関数が使えない状態になっており、困っています。 メッセージは下記が出ています。 Can't locate object method "%s" via package "%s" そのパッケージにも、基底クラスにも、該当のメソッドが定義されていないとうことのようですが、 使おうとしている関数が所属しているパッケージを、しっかりとuse しています。 また、「perlobj manpage」というページに情報があるらしいというのを情報として得たのですが、↓ http://fleur.hio.jp/perldoc/mix/pod/perlobj.html 「Can't locate object method」ということに関係している箇所みつからず、また、ここに書かれている内容は難しく情報があまり得られませんでした。 宜しくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

私もやってしまったことがあるのですが、 useで読み込まれるファイルと、 「使おうとしている関数が所属しているパッケージ」が違うということは ありませんでしょうか。 例えば、perlモジュールパス上にある hoge.pm を読み込みたくて、 use hoge; と書いたのに、 カレントにも hoge.pm があって、 そちらが読み込まれている、のような状態です。 もしそうだとすれば、 コマンドラインで perldoc -l hoge とすると、読み込まれるモジュールのフルパスが表示されるので、 それで確認ができます。 まったく見当違いでしたらすみません。

TeferiMage
質問者

お礼

ありがとうございますー 原因は、似たような単純なことで、 インスタンス化したものが、 小文字で宣言されていて、 使用する時に大文字でそのオブジェクト名を指定してしまっていたせいでした、、

その他の回答 (2)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

いや, 「コンストラクタがどうのこうの」ではなく, @ISA に「基底クラス」を入れないといけなかった気がするんだけどどうだっけな, と.

TeferiMage
質問者

お礼

継承する必要はないので、その問題はないと思っています。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

パッケージを use するだけでは「基底クラス」にはならなかったような気がするんだけど, そこは OK?

TeferiMage
質問者

お礼

constructer も実行しています。 (constructerがない場合は、construct もしませんが。) ありがとうございました。