in reply to Algorithm To Select Lines Based On Attributes

If I'm following your code correctly, shouldn't the following line be using my $rulenum?
foreach my $rule ( keys %$rulelist ){

And some formatting suggestions, particularly as your list gets longer and more nested. Perhaps change these:

if ( defined $rulelist->{$rulenum}->{REGION} ){ my $rule = $rulelist->{$rulenum}->{REGION}; if ( $rule =~ s/!// ){ # handles negation if ( $line -> {REGIONID} == $rule ){ next RULE }; } elsif ( $line -> {REGIONID} != $rule) { next RULE }; ...
To this:
if ( defined (my $rule = $rulelist->{$rulenum}->{REGION} )){ next RULE if ( $rule =~ s/!// && $line->{REGIONID} == $rule); next RULE if ( $line->{REGIONID} != $rule); ...

Update:Fixed a typo, I had omitted the close-paren in the first next RULE statement.

Replies are listed 'Best First'.
Re^2: Algorithm To Select Lines Based On Attributes
by ~~David~~ (Hermit) on Jan 15, 2009 at 17:54 UTC
    Thanks for the formatting suggestion. Much clearer...