package MyClass;
use strict;
use ObsceneEnabler;
our @properties = (
"Name",
"RegExp",
);
####################################
# Register properties for this class
####################################
ObsceneEnabler::RegisterProperties (@properties);
########################
# Class definition below
########################
sub get_RegExp {
my $this = shift;
unless ($this->regExp) {
return "(?:" . $this->Name . ")";
}
return $this->regExp;
}
sub set_RegExp {
my $this = shift;
my $regexp = shift;
$this->regExp = "(?:$regexp)";
}
sub SetMultiRegExp {
my $this = shift;
my $regexp = join ("|", @_);
$this->RegExp = $regexp;
}
1;
####
use strict;
use MyClass;
my $o = new MyClass;
# Properties may also be initialized at construction time.
# my $o = new MyClass ({ RegExp => "Initial RegExp" });
$o->Name = "New Name";
print "Name: `" . $o->Name . "'\n";
print "RegExp: `" . $o->RegExp . "'\n";
$o->RegExp = "My RegExp";
print "RegExp: `" . $o->RegExp . "'\n";
$o->SetMultiRegExp ("My RegExp", "My Second RegExp");
print "Multi-set RegExp: `" . $o->RegExp . "'\n";
$o->regExp = "Hacked RegExp";
####
Name: `New Name'
RegExp: `(?:New Name)' (or RegExp: `(?:Initial RegExp)')
RegExp: `(?:My RegExp)'
Multi-set RegExp: `(?:My RegExp|My Second RegExp)'
Attempting to access private field `regExp'