/usr/local/bin/perl -w use strict; my %ranges; while () { next if /^\s*$/; last if /END CONFIG/; chomp; $ranges{$_}=[ map { if (/^\[(\d+)-(\d+)\]$/) {[$1, $2]} else {[$_, $_]}} split /\./]; } while () { next if /^\s*$/; last if /END/; chomp (my $ip=$_); RANGE: foreach my $range (keys %ranges) { my $i=0; foreach (split /\./, $ip) { next RANGE unless ($_ >= $ranges{$range}->[$i]->[0] and $_ <= $ranges{$range}->[$i++]->[1]); } print "$ip\tmatches range $range\n"; } }