in reply to How to set relational operators to variables to be used by program

I'd eval a dispatch table of operator functions into existence:

#! perl -slw use strict; my %ops; for my $op ( qw[ < <= == >= > != lt le eq ge gt ne ] ) { $ops{ $op } = eval "sub{ \$_[0] $op \$_[1] }"; } printf "Enter criteria: "; my( $f, $op, $c ) = split ' ', <STDIN>; local $\; while( <> ) { my @f = split ','; print if $ops{ $op }->( $f[ $f ], $c ); }

The advantages over using eval in the loop are:

  1. Only those operators you choose are executed, thus avoiding the possibility of a user supplying an "operator" like system( ... ).
  2. You only eval once for each operator; not for every line of the file.

With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.

The start of some sanity?