本文へスキップ
BecomeCoder

Perlのエラー · エラー12

Can't locate object method "X" via package "Y" ― 無いメソッドを呼んだ

そのクラス(パッケージ)に定義されていないメソッドを呼ぶと出ます。メソッド名のタイプミスでよく起こります。

出るコード

package Animal;
sub new { return bless {}, shift; }

package main;
my $a = Animal->new;
$a->speak();   # speak というメソッドは定義していない

エラーメッセージ

Can't locate object method "speak" via package "Animal" at script.pl line 6.

直し方

メソッド名のスペルを確認します。継承our @ISAuse parent)で親クラスにあるはずなら、継承設定が正しいかも確認します。