在perl中创建对象时出错
我已经创建了一个名为在perl中创建对象时出错,perl,oop,Perl,Oop,我已经创建了一个名为person_b的类,我正在尝试从该类创建一个对象。但这是一个错误 下午二时 main.pl 输出 main 无法通过main_b.pl第5行的包“main”找到对象方法“name”。 打字错误? 您拼错了$class变量的名称,导致bless试图执行bless$self,undef 如果use strict和use warnings'all'已就位,则会产生有用的错误消息 在PersonB.pm的bless中使用未初始化值$calss 对“”的显式祝福(假定包为main)
person_b
的类,我正在尝试从该类创建一个对象。但这是一个错误
下午二时
main.pl
输出
main
无法通过main_b.pl第5行的包“main”找到对象方法“name”。
打字错误?
您拼错了$class
变量的名称,导致bless
试图执行bless$self,undef
如果use strict
和use warnings'all'
已就位,则会产生有用的错误消息
在PersonB.pm的bless中使用未初始化值$calss
对“”的显式祝福(假定包为main)
这就是为什么你的节目会播出
无法通过包“main”定位对象方法“name”
- 您必须始终在编写的每个Perl源文件的顶部添加
和use strict
use warnings'all'
- 包名称应以大写字母开头,并且包含它们的文件的名称应完全匹配
- 您应该避免使用间接对象表示法
。它最好写成newperson\b
PersonB->new
包装人员b;
严格使用;
使用“全部”警告;
次新{
我的$class=shift;
祝福{},$class;
}
子名称{
打印“名称为…”\n;
}
1.
main.pl
使用PersonB;
严格使用;
使用“全部”警告;
使用Scalar::Util'foweld';
我的$per=个人->新建;
打印($per),“\n”;
$per->name;
输出
PersonB
名字是。。。。
…这就是为什么您应该始终使用严格的;使用警告在Perl代码中。它会自动为您捕捉像这样的打字错误。
Can't locate object method "name" via package "main" at main_b.pl line 5.
package person_b;
sub new {
$class=shift;
$self={};
bless($self,$calss);
return $self;
}
sub name {
print "The name is ....\n";
}
1;
use person_b;
use Scalar::Util 'blessed';
$per = new person_b();
print blessed($per), "\n";
$per->name();
bless($self,$calss);
^^^^^