我知道在以太網中有這樣的幾個問題,但我無法解決我的問題。也許我應該改善我的橫向思維。Perl對象錯誤:無法通過程序包找到對象的方法
我有一個模塊,我正在測試。這個模塊看起來類似:
package MyModule;
use strict;
use warnings;
... # a bunch of 'use/use lib' etc.
sub new {
my $class = shift;
my ($name,$options) = @_;
my $self = {
_name => $name,
_features => $options,
_ids => undef,
_groups => undef,
_status => undef,
};
bless $self,$class;
return $self;
}
sub init {
my ($self) = @_;
my ($ids,$groups,$status) = ...; # these are from a working module
$self->{_ids} = $ids;
$self->{_groups} = $groups;
$self->{_status} = $status;
return $self;
}
這是我的測試文件:
#!/usr/bin/perl -w
use strict;
use MyModule;
use Test::More tests => 1;
use Data::Dumper;
print "Name: ";
my $name;
chomp($name = <STDIN>);
print "chosen name: $name\n";
my %options = (
option1 => 'blah blah blah',
option2 => 'blu blu blu',
);
my $name_object = MyModule->new($name,\%options);
print Dumper($name_object);
isa_ok($name_object,'MyModule');
$name_object->init;
print Dumper($name_object);
現在,它的工作原理下到isa_ok
,但隨後出現:
Can't locate object method "init" via package "MyModule" at test_MyModule.t line 31, <STDIN> line 1.
這只是現在我正在嘗試使用對象(並且看起來有些失敗)。所以我認爲我誤解了Perl中的對象的應用程序!任何幫助,將不勝感激...
線31了'init'線清晰 – dgBP
問題是你不向我們展示了部分代碼。 –
我沒有運行代碼的問題(除了在模塊末尾缺少1;)。你確定在@INC路徑中沒有其他模塊名稱爲MyModule嗎?檢查%INC以確保您加載了正確的模塊。 – imran