我是这个网站的新手,所以请耐心等待,如果这个问题已经在其他地方得到了回答.我试图从模块“codons1.pm”调用子程序“bar”,我遇到错误:
无法通过包“codons1.pm”找到对象方法“bar”(也许你忘了加载“codons1.pm”?).主脚本如下:
无法通过包“codons1.pm”找到对象方法“bar”(也许你忘了加载“codons1.pm”?).主脚本如下:
use strict; use warnings; my $i = 1; my $pack = "codons$i\.pm"; require $pack; (my %temp) = $pack->bar(); print keys %INC ;
感谢(Perl objects error: Can’t locate object method via package),我能够使用%INC验证模块是否已加载.
该模块看起来像:
package codons1; sub bar{ #some code; return (%some_hash);} 1;
我使用$i,以便我可以通过循环加载多个类似的模块.欢迎任何建议,并提前感谢.
解决方法
你的包是codons1,你正试图打电话给codons1.pm->吧.以下任一项都可以正常工作:
my $pack = "codons$i"; require "$pack.pm"; $pack->bar();
要么
my $pack = "codons$i"; eval "require $pack"; $pack->bar();