in reply to assigning hash key to reference of array question

Another suggestion:

#!/usr/bin/perl -w use strict; use Socket; my %HoA; while (<DATA>) { chomp; my ($swit, $server, $ip_range) = split; my ($start_ip, $end_ip) = map unpack("N", inet_aton($_)), split /- +/, $ip_range; my $name = "${swit}_$server"; for ($start_ip .. $end_ip) { push @{ $HoA{$name} }, inet_ntoa(pack "N", $_); } } use Data::Dumper; print Dumper \%HoA; __DATA__ server 1 10.1.1.1-10.1.1.5 server 2 192.168.1.1-192.168.1.5 server 1 192.168.1.1-192.168.1.2
$VAR1 = { 'server_2' => [ '192.168.1.1', '192.168.1.2', '192.168.1.3', '192.168.1.4', '192.168.1.5' ], 'server_1' => [ '10.1.1.1', '10.1.1.2', '10.1.1.3', '10.1.1.4', '10.1.1.5', '192.168.1.1', '192.168.1.2' ] };