RuleObjectというベースオブジェクトと、RuleObjectStringというオブジェクトを継承するオブジェクトがあります。RuleObjectStringに、そのオブジェクトを使用するコードで呼び出す新しいメソッドがあります。しかし、エラーが発生します。'./testobject.pl行10のパッケージ"RuleObject"を介してオブジェクトメソッド"compare"を見つけることができません。' しかし、私はRuleObjectを作成していません。RuleObjectStringを作成しています。私はここで何が間違っているのですか?
testobject.pl
1 #! /usr/bin/perl
2
3 use strict;
4
5 use RuleObjectString;
6
7 my $s = RuleObjectString->new();
8 $s->value('stuff goes here');
9
10 if ($s->compare('stuff')){
11 print "MATCH!\n";
12 }else{
13 print "no match :(\n";
14 }
RuleObject.pm
package RuleObject;
our @ISA = qw/Exporter/;
our @EXPORT = qw/new/;
use strict;
sub new{
my $class = shift;
my $self;
$self->{value} = undef;
bless $self;
return $self;
}
sub value{
my $self = shift;
my $value = shift;
if ($value){
$self->{value} = $value;
}else{
return $self->{value};
}
}
RuleObjectString.pm
package RuleObjectString;
our @ISA = qw/RuleObject/;
our @EXPORT = qw/compare/;
use strict;
sub compare{
my $self = shift;
my $compareto = shift;
return $self->value() =~ /$compareto/;
}