use Math::BigRat; $m = "new"; $a = Math::BigRat->$m(5); $b = Math::BigRat->$m(8); for $m (qw(badd bsub bmul bdiv)) { $x = $a->copy->$m($b); print "$a $m $b = $x\n" } #### use Math::BigRat; $m = "new"; $a = Math::BigRat->$m(5); $b = Math::BigRat->$m(8); for $m (qw(add sub mul div)) { $x = $a->copy->${\("b".$m)}($b); print "$a $m $b = $x\n" } #### package ParentClass; # [...] sub init_server { my $self = shift; # [...] $self->{'server'}->setcallback( data => sub { $self->gotdata(@_); }, connect => sub { $self->connected(@_); }, disconnect => sub { $self->disconnected(@_), ) || die "Error setting callbacks: $@\n"; # [...] } # [...] #### sub UNIVERSAL::method { my($self, $name, @rest) = @_; sub { $self->$name(@rest, @_); }; } package ParentClass; # [...] sub init_server { my $self = shift; # [...] $self->{'server'}->setcallback( data => $self->method("gotdata"), connect => $self->method("connected"), # [...]