paribasu has asked for the wisdom of the Perl Monks concerning the following question:
I have a perl script xyz.pl:-
#!perl -w use strict; my $param = shift; eval print $param; sub egal () { my $result; my @arg = @_; $test = $arg[0]; @test = grep (/$test/i, @arg); print "++++"; if ($#test == $#arg) { $result = true; } else { $result = false; } return $result; }
Now I am calling the script :-
perl xyz.pl 'egal("20090316","7006")'
I want the script to eval the parameter and return me the result. The output should be like:
"++++false"
But it is not returning me any result. On the other hand if I set a variable to the value whatever I am passing through parameter and then pass the variable to eval, it is giving the desired output
#!perl -w use strict; #my $param = shift; my $param = egal("7006","7006"); eval print $param; sub egal () { my $result; my @arg = @_; my $test = $arg[0]; my @test = grep (/$test/i, @arg); print "++++"; if ($#test == $#arg) { $result = "true"; } else { $result = "false"; } return $result; }
Now I am calling the script :-
perl xyz.pl
Output :
++++true
So now how do I make the first piece of code work... so that I can make the sub program call dynamic??
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: perl eval
by Corion (Patriarch) on Jul 05, 2010 at 13:49 UTC | |
|
Re: perl eval
by ww (Archbishop) on Jul 05, 2010 at 14:25 UTC | |
by paribasu (Initiate) on Jul 05, 2010 at 17:37 UTC | |
by ww (Archbishop) on Jul 05, 2010 at 18:29 UTC | |
by paribasu (Initiate) on Jul 05, 2010 at 18:47 UTC | |
by Corion (Patriarch) on Jul 05, 2010 at 18:49 UTC | |
| |
by ww (Archbishop) on Jul 05, 2010 at 18:55 UTC | |
by paribasu (Initiate) on Jul 05, 2010 at 18:59 UTC | |
by johngg (Canon) on Jul 05, 2010 at 19:34 UTC | |
|
Re: perl eval
by JavaFan (Canon) on Jul 05, 2010 at 14:19 UTC | |
|
Re: perl eval
by moritz (Cardinal) on Jul 05, 2010 at 13:49 UTC |