# Warning: untested... sub expand_ports { my $port = shift; my %ports; foreach my $range (split /\s*,\s*/, $port) { if ($range =~ /^\d+$/) { $ports{$range}++; } elsif ($range =~ /^\s*(\d+)\s*-\s*(\d+)\s*$/) { @ports{$1..$2} = ($1..$2); } else { die "Bad port spec"; } } return sort keys %ports; }