C:\test>dynop Enter criteria: 0 > xray zpepocpu 325 82.7545166015625 zgvappww 187 85.540771484375 zoedyjzb 780 75.0732421875 zapvcywd 987 71.014404296875 yasxnblr 328 93.7652587890625 zsqavfzn 777 28.8421630859375 yfxbhnqz 560 69.0948486328125 Enter criteria: 2 > 99.0 ahfijvsa 492 99.3072509765625 kpfaqzzz 419 99.8504638671875 Enter criteria: 0 =~ mid phmidnpi 931 60.980224609375 Enter criteria: 1 >= 900 zapvcywd 987 71.014404296875 phmidnpi 931 60.980224609375 fcaabsvp 907 62.908935546875 qqnmneah 987 27.685546875 foyqaqgx 901 51.214599609375 Enter criteria: 0 lt b ahfijvsa 492 99.3072509765625 abnualfk 166 57.2265625 axarlwit 430 82.5531005859375 #### #! perl -slw use strict; use Regexp::Common; $|++; my @cmpOps = qw[ < lt <= le == eq >= ge > gt != ne ]; my %ops; for my $op ( @cmpOps, qw[ =~ !~ ] ) { $ops{ $op } = eval "sub{ \$_[0] $op \$_[1] }"; } my %cmpX = @cmpOps; my $DATApos = tell( DATA ); while( 1 ) { printf "\nEnter criteria: "; my( $field, $op, $const ) = split ' ', scalar ; warn "Bad field no" and next unless $field >= 0 and $field <=2; warn "Bad op" and next unless exists $ops{ $op }; warn "Bad constant" and next unless defined $const; $op = $cmpX{ $op } if $const !~ m[^$RE{num}{real}$] and exists $cmpX{ $op }; local $\; seek DATA, $DATApos, 0; while( ) { my @f = split ' '; print if $ops{ $op }->( $f[ $field ], $const ); } } __DATA__ sinbpoax 462 15.7684326171875 szaarvxz 611 56.6070556640625 pavpcufm 738 46.96044921875 pidfkhrt 208 84.4329833984375 wcudntgc 257 84.68017578125 ezohziff 731 63.9801025390625 fjprkxqe 742 3.0517578125 zpepocpu 325 82.7545166015625 ptogapva 865 98.92578125 rbbruxkd 292 69.2962646484375 ctkejtxq 253 2.57568359375 ixllpbfr 539 71.1822509765625 eufrsfdm 197 76.8829345703125 zgvappww 187 85.540771484375 lcsenyrn 98 95.6298828125 ehroxvni 616 57.757568359375 gwxrsmqt 186 41.4886474609375 igvgajxj 728 13.9495849609375 jlwqafze 533 14.4073486328125 hlfordlo 722 42.8619384765625 gzsvvjtd 894 90.93017578125 fupuumgb 141 92.8192138671875 okeecgnh 413 25.146484375 ahfijvsa 492 99.3072509765625 dbbvbkem 725 31.854248046875 ppfljtcl 202 8.8653564453125 ugszniuc 471 42.5811767578125 wlmjvzuh 216 14.898681640625 zoedyjzb 780 75.0732421875 zapvcywd 987 71.014404296875 xmludpni 730 6.9000244140625 ezxkcxxv 163 97.528076171875 yasxnblr 328 93.7652587890625 ogoryjnp 750 46.759033203125 mckiqrfr 40 23.193359375 cerfqydo 15 42.7459716796875 dcnsueah 401 44.1741943359375 phmidnpi 931 60.980224609375 doyhkmsv 734 63.41552734375 fmwfplux 436 63.836669921875 ujrexkvq 518 48.8189697265625 cgrmavrb 282 57.26318359375 lfjxkyxf 419 30.82275390625 xlyrewup 767 84.4024658203125 jkdqaiog 536 42.193603515625 irdyxuvd 122 21.7437744140625 kogolxtn 879 86.944580078125 lcloacfc 837 93.438720703125 degylchc 616 78.96728515625 mbflgtft 713 69.4183349609375 svhihmfm 116 41.021728515625 fcaabsvp 907 62.908935546875 kcsrcluu 327 4.693603515625 tjqruhsz 769 92.9931640625 lobwyxip 509 1.96533203125 iefkdodr 737 27.83203125 gteyukkt 865 89.007568359375 fcontiyx 82 74.1851806640625 mpajgdol 95 92.816162109375 zsqavfzn 777 28.8421630859375 dipyswtm 403 21.337890625 xpogpvcz 275 57.58056640625 qqnmneah 987 27.685546875 klfloyxx 481 17.2943115234375 yfxbhnqz 560 69.0948486328125 fpcxgycp 683 86.9354248046875 foyqaqgx 901 51.214599609375 lelltkzq 751 22.8179931640625 tfumslgj 2 98.388671875 fxwwzfvm 355 4.022216796875 ghdfdppk 820 40.5303955078125 pwarwsir 505 83.404541015625 abnualfk 166 57.2265625 bzilevkn 185 9.94873046875 rkwcbiac 780 69.696044921875 clgtdkmc 363 37.9913330078125 vubvfxbo 102 21.2158203125 tbhugaup 163 88.9984130859375 nedcbeax 780 36.6607666015625 dexeryuf 470 81.5216064453125 fvbfbknp 451 1.763916015625 wtwntrem 759 94.93408203125 ikhtsurg 814 52.72216796875 axarlwit 430 82.5531005859375 ojftvscz 539 16.7877197265625 kpfaqzzz 419 99.8504638671875 stkadgrt 34 94.464111328125 vmxmtijm 380 63.299560546875 jsofkrzq 603 23.91357421875 tvsjhhmd 203 5.4962158203125 bungnlqk 35 18.22509765625 ugewjtpn 175 42.2393798828125 udbwvomt 136 16.17431640625 whzukvul 532 17.0928955078125 huqhtllj 264 37.04833984375 dxamgnyd 710 39.17236328125 pgdleajt 362 80.2276611328125 pjhxddem 69 79.669189453125 squnbfvs 557 60.11962890625 uznmzvug 357 42.8192138671875