#!/usr/bin/perl use strict; use warnings; use LWP::Simple qw(mirror); use Roman qw(roman); use Fatal qw(open close mirror); my %ip_to_roman = do { my @ip = ; chomp @ip; map { $_ => roman_ip($_) } @ip; }; { mirror('http://www.iana.org/cctld/cctld-whois.htm', 'cctld-whois.htm'); open(my $fh, 'cctld-whois.htm'); my $page = do { local $/ = undef; <$fh> }; close $fh; while ($page =~ m{>\.(\w\w)(?: |–)*([^<]+)}gms) { my ($tld, $country) = ($1, $2); $country =~ s/\s+/ /ms; IP: foreach my $address (keys %ip_to_roman) { next IP unless $ip_to_roman{$address} =~ m/\.$tld\z/ms; print "$address is $ip_to_roman{$address} in $country\n"; } } } sub roman_ip { my $ip = shift; return join '.', map { roman $_ } split(/\./, $ip); } # Put your IP addresses here __DATA__ 1.2.3.4 5.6.7.8