open my $iplist_fh, '<', 'iplist.txt'
or die "Can't read iplist.txt: $!\n";
my %text_for;
while ( <$iplist> ) {
chomp;
if ( m{ \A # line start
( \d{1,3} (?: \. \d{1,3} ){3} ) # IP address
\s+ \| \s+ # separator
( .* ) # text
\z # line end
}xms ) {
$text_for{$1} = $2;
}
}
close $iplist_fh or die "Can't close??: $!\n";
Note that this assumes each IP has only one entry in your list. If that's not the case, there's another solution for that...
Once you have your list in memory, you can get the text of any IP out of it pretty easily.
my @ips_of_interest = qw( 127.0.0.1 10.0.1.51 );
foreach my $ip ( @ips_of_interest ) {
print "IP is $ip\n";
print "Text is $text_for{$ip}\n";
}
|