ActiveState Powered by ActiveState

ActiveState Community


method invocation syntax at perl

Posted by subghost on 2008-01-03 02:54
OS: All / Any

Hello
I've got a little problem with method invocation. here is a code:

my $l = new z;

$l->{xxx4} = 'wrong way';

my $str = 'xxx';
my $str1 = "4";
my $str2 = "param1";

eval ("print \$l->$str$str1(\$str2)");

package z;

sub new
   {
   my $class = shift;
   my $self = {};
   return bless $self, $class;
   };

sub xxx4
   {
   my $self = shift;
   my $param = shift;
   return "were requested xxx4: $param \n";
   };

It's just an example to show the problem.

The point is:

eval ("print \$l->$str$str1(\$str2)");

I want make same actions without using eval.
At perlobj there is an example:

$method = $fast ? "findfirst" : "findbest";
$fred->$method(@args);          # call by name

so for my case it will be something like

my $method = $str.$str1;
print $l->$method($str2);

the question is: can it be done at single string?
Thank you.

subghost | Thu, 2008-01-03 06:27

it will be

print $l->${\($str.$str1)}($str2);
-->