Perl对象错误:无法通过包找到对象方法
发布时间:2020-12-15 21:16:41 所属栏目:大数据 来源:网络整理
导读:我意识到在以太中有几个这样的问题,但我不能解决我的问题.也许我应该改善我的横向思维. 我有一个我正在测试的模块.这个模块看起来像: package MyModule;use strict;use warnings;... # a bunch of 'use/use lib' etc.sub new { my $class = shift; my ($nam
我意识到在以太中有几个这样的问题,但我不能解决我的问题.也许我应该改善我的横向思维.
我有一个我正在测试的模块.这个模块看起来像: 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: $namen"; 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,但随后提出: 无法通过test_MyModule.t第31行的包“MyModule”找到对象方法“init”,< STDIN>第1行. 这种情况现在才发生,我正在尝试使用对象(似乎有些失败).所以我认为我误解了Perl中对象的应用!任何帮助,将不胜感激… 解决方法
我认为你加载的文件不同于你认为加载的文件.
print($INC{"MyModule.pm"},"n"); 会告诉你实际加载了哪个文件. (如果模块名称实际上是Foo :: Bar的形式,请使用$INC {“Foo / Bar.pm”}.)确保包的大小写和文件名匹配. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |