if (eval "$hash{$filter[0]->[0]} $filter[0]->[1] $filter[0]->[2]") { print "eval \"$hash{$filter[1]->[0]} $filter[1]->[1] $filter[1]->[2]\""; if (eval "$hash{$filter[1]->[0]} $filter[1]->[1] $filter[1]->[2]") { if (eval "$hash{$filter[2]->[0]} $filter[2]->[1] $filter[2]->[2]") { print OUTFILE $line, "\n"; } } } #### sub match { my ($hash, $filter) = @_; if($filter->[1] eq '<=') { return( $hash{$filter->[0]} <= $filter->[2] ); } elsif($filter->[1] eq 'eq') { return( $hash{$filter->[0]} eq $filter->[2] ); } else { die "unsupported comparator: $filter->[$index]->[1]"; } } if( match($hash, $filters->[0]) and match($hash, $filters->[1]) and match($hash, $filters->[2]) ) { print OUTFILE $line, "\n"; }