| Next | Tricks of the Wizards | 153 |
Another solution uses a dispatch table:
{ my ($year, $arg);
%methods = (
'+' => sub { $year + $arg },
'%' => sub { $year % $arg },
'r%' => sub { $arg % $year },
...
);
sub default {
my ($y2k, $a, $rev, $op) = @_;
my $code = $rev
? ($methods{"r$op"} || $methods{$op})
: $methods{$op}
;
croak "No method defined for y2k object for operation `$op'"
unless $code;
$arg = $a;
$year = $y2k->{YEAR};
&$code;
}
}
| Next | ![]() |
Copyright © 2003 M. J. Dominus |