How fast is an EVAL String
Aaron Wigley
wigs at stirfried.org
Tue Apr 27 02:43:52 CDT 2004
On Tue, Apr 27, 2004 at 03:32:03PM +1000, Scott Penrose wrote:
> The whole purpose of the ->data1|2 method is to replace this
> string with a set of methods called one after another. This can be done
> with recursion, iteration or a string eval. I think that if we had tail
> recursion that recursion would probably be the fastest, but since we
> don't then iteration seems now to be the fastest.
Alternatively, if it is a repeated-enough occurance, you could compile
the string into a coderef representing the cascaded method calls required.
$str = 'planet.country.state.suburb';
$str =~ s/\./->/g;
$accessor = eval q/
sub {
return \$_[0]->$str;
};
/;
$mutator = eval q/
sub {
my (\$self, \@args) = \@_;
\$_[0]->$str(\@args);
};
/;
$v = &$accessor();
&$mutator('melbourne');
Aaron
More information about the Melbourne-pm
mailing list