Beefy Boxes and Bandwidth Generously Provided by pair Networks
Syntactic Confectionery Delight
 
PerlMonks  

Re: testing an if statement in a string

by pajout (Curate)
on Oct 31, 2013 at 14:24 UTC ( #1060584=note: print w/replies, xml ) Need Help??


in reply to testing an if statement in a string

my @field = (0,0,0,0,0,0,'PM',0,'CAVENDI'); my $cond = q(($field[6] eq 'PM' && $field[8] eq 'CAVENDI')); my $ret; eval "\$ret = $cond"; warn $@ if $@; print $ret;

Replies are listed 'Best First'.
Re^2: testing an if statement in a string
by LanX (Archbishop) on Oct 31, 2013 at 15:43 UTC
    > eval "\$ret = $cond";

    a bit over complicated , eval returns (like sub or do) the result of the last expression.

    DB<105> $cond = q($field[6] eq 'PM' && $field[8] eq 'CAVENDI'); => "\$field[6] eq 'PM' && \$field[8] eq 'CAVENDI'" DB<106> @field = () DB<107> $ret =eval $cond => "" DB<108> @field = (0,0,0,0,0,0,'PM',0,'CAVENDI') => (0, 0, 0, 0, 0, 0, "PM", 0, "CAVENDI") DB<109> $ret =eval $cond => 1

    but checking $@ is always a good idea! =)

    update

    or an additional eval BLOCK to catch all error

    ~$ perl $cond="bla eqx 2"; eval { $ret =eval $cond } or warn "Problem with $cond"; __END__ Problem with bla eqx 2 at - line 2.

    Cheers Rolf

    ( addicted to the Perl Programming Language)

Re^2: testing an if statement in a string
by brcjacks (Initiate) on Oct 31, 2013 at 15:03 UTC
    Interesting. Why the double parenthesis in line 2?
      Why the double parenthesis in line 2?

      The outermost pair of parens are simply the paired delimiters of the  q// operator; a wide range of delimiters, paired or not, can be used by the various string and regex operators. The inner parens are copied from the string as it was given in the OP.

      >perl -wMstrict -le "my $s = q(foo); print qq{'$s'}; ;; $s = q((bar)); print qq/'$s'/; " 'foo' '(bar)'

      See Quote and Quote-like Operators (and also Regexp Quote-Like Operators) in perlop.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1060584]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others taking refuge in the Monastery: (3)
As of 2020-06-02 06:07 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    Do you really want to know if there is extraterrestrial life?



    Results (13 votes). Check out past polls.

    Notices?