我有这个简单的基类(Module):
package XMSP::File;
use parent 'IO::File';
sub new {
my ($self,@args) = @_;
my $object = {};
bless($object,$self);
$object->SUPER::new(@args);
return $object;
}
sub open {
my ($self,@args) = @_;
$self->SUPER::open(@args);
}
sub close {
my ($self,@args) = @_;
$self->SUPER::close(@args);
}
1;
脚本:
#!/usr/bin/env perl
use strict;
use warnings;
use XMSP::File;
my $file = XMSP::File->new("< $0");
if (defined $file) {
print "First Ok\n";
$file->close();
}
$file->open("< file");
if (defined $file) {
print "Second Ok\n";
}
在我的脚本上,我使用use
加载它...我使用ctor(new)创建一个新对象等,但当我关闭它时,它会因以下错误而死:
First Ok
Not a GLOB reference at /usr/lib/perl/5.10/IO/Handle.pm line 115.
我无法弄明白为什么。
答案 0 :(得分:2)
不是让IO :: File创建对象,而是创建它,而你完全错误地创建它。你甚至没有使用正确的变量类型(hash vs glob)。让IO :: File创建对象。
sub new {
my ($class, @args) = @_;
my $self = $class->SUPER::new(@args);
return $self;
}
请注意,此方法完全是多余的。我认为你打算在其中做更多的工作。