Is my eval wrong or do I not understand eq vs == in Perl -


i having trouble understand eval or maybe not understand eq vs ==. have short perl script:

[red@tools-dev1 ~]$ cat so.pl #!/usr/local/bin/perl -w use strict;  while(<data>) {     chomp;     ($arg1, $arg2, $op ) = split /,/;     if ( $op eq '=' ) {         $op = 'eq';     }     $cmd = "$arg1 $op $arg2";     print "[$cmd]\n";     $rc = eval $cmd || 0;     print "rc [$rc]\n"; }  __data__ cat,cat,= 

when execute get:

[red@tools-dev1 ~]$ ./so.pl [cat eq cat] rc [0] 

one think you'd ...

[cat eq cat] rc [1] 

... since "cat" equals "cat", right?

you're using barewords in strict mode, error:

$ perl -e 'use strict; cat eq cat' bareword "cat" not allowed while "strict subs" in use @ -e line 1. bareword "cat" not allowed while "strict subs" in use @ -e line 1. execution of -e aborted due compilation errors. 

whenever eval string, should check $@ see if there error.


Comments

Popular posts from this blog

python - TypeError: start must be a integer -

c# - DevExpress RepositoryItemComboBox BackColor property ignored -

django - Creating multiple model instances in DRF3 -