Попробуйте Net :: IP модуль
Если второй шаблон не поддерживает, вам может потребоваться внести некоторые изменения в ips, например
238.51.209.180-199
до
238.51.209.180 - 238.51.209.199
с использованием некоторого регулярного выражения, например,
$range =~ s/^((?:\d+\.){3})(\d+)-(\d+)$/$1$2 - $1$3/gm;
Полный скрипт:
use warnings;
use strict;
use Net::IP;
my $range = "238.51.209.180-199";
$range =~ s/^((?:\d+\.){3})(\d+)-(\d+)$/$1$2 - $1$3/;
my $ip = new Net::IP ($range) || die;
print $ip->ip (), "\n";
print $ip->last_ip (), "\n";