/usr/local/CPAN/Code-Perl/Code/Perl/Expr/CallSub.pm
# $Header: /home/fergal/my/cvs/Code-Perl/lib/Code/Perl/Expr/CallSub.pm,v 1.4 2003/06/17 18:11:41 fergal Exp $
use strict;
package Code::Perl::Expr::CallSub;
use base 'Code::Perl::Expr::Base';
use Class::MethodMaker (
get_set => [qw( -java SubName Args )]
);
sub eval
{
my $self = shift;
my $subname = $self->getSubName->eval;
my $args = $self->getArgs;
no strict 'refs';
return &{$subname}($args->eval);
}
sub perl
{
my $self = shift;
my $subname = $self->getSubName;
my $subname_perl = $subname->perl;
my $args = $self->getArgs->perl;
return ref($subname) eq "Code::Perl::Expr::SubName" ?
"$subname_perl($args)" :
"&{$subname_perl}($args)";
}
1;