में एक ऑब्जेक्ट का विस्तार करना मुझे नियम ऑब्जेक्ट नामक आधार वस्तु मिली है और एक ऑब्जेक्ट जिसे RuleObjectString कहा जाता है। मेरे पास RuleObjectString में एक नई विधि है जिसे मैं उस कोड का उपयोग करने के लिए अपने कोड में कॉल करना चाहता हूं। लेकिन मुझे त्रुटि मिलती है। 'ऑब्जेक्ट विधि का पता नहीं लगा सकता "तुलना करें" पैकेज "के माध्यम से" नियम "पर ./testobject.pl लाइन 10 पर। लेकिन मैं नियम नियम नहीं बना रहा हूं। मैं एक नियम ऑब्जेक्टस्ट्रिंग बना रहा हूं। मुझसे यहां क्या गलत हो रहा है?पर्ल
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/;
}
आपको अपनी कक्षा और उदाहरण विधियों को 'निर्यात' नहीं करना चाहिए, और आपके मॉड्यूल को आम तौर पर 'निर्यातक' का उत्तराधिकारी नहीं होना चाहिए जब तक कि उनके पास निर्यात करने के लिए पर्याप्त प्रक्रियात्मक कार्य नहीं होते हैं। – pilcrow
और उन मामलों के लिए जहां आपको * फ़ंक्शंस * निर्यात करने की आवश्यकता है, 'उप :: निर्यातक' 'निर्यातक' की तुलना में बहुत अच्छा इंटरफ़ेस है। लेकिन आपको शायद उन पैकेजों से कार्यों को निर्यात करने से बचना चाहिए जो कक्षा परिभाषाएं भी हैं। ' –