#!/usr/bin/env perl
use strict;
use warnings;
use Data::Dumper;
use 5.010;
use Socket 'inet_aton';
my @ips;
my @ranges = qw(
192.168.1.10-192.168.1.20
192.168.1.30-192.168.1.40
);
for my $range ( @ranges ) {
my ( $start, $end ) = split /-/, $range;
say "Found RANGE: $start - $end";
# Get each IP in the range
@ips = map { sprintf "%vi", pack "N", $_ } unpack("N",inet_aton($start))
.. unpack("N",inet_aton($end));
#print Dumper(@ips); # prints all IPs
}
print Dumper(@ips); # prints only last range of IPs
# Do stuff with each IP ...
####
Found RANGE: 192.168.1.10 - 192.168.1.20
$VAR1 = '192.168.1.10';
$VAR2 = '192.168.1.11';
$VAR3 = '192.168.1.12';
$VAR4 = '192.168.1.13';
$VAR5 = '192.168.1.14';
$VAR6 = '192.168.1.15';
$VAR7 = '192.168.1.16';
$VAR8 = '192.168.1.17';
$VAR9 = '192.168.1.18';
$VAR10 = '192.168.1.19';
$VAR11 = '192.168.1.20';
Found RANGE: 192.168.1.30 - 192.168.1.40
$VAR1 = '192.168.1.30';
$VAR2 = '192.168.1.31';
$VAR3 = '192.168.1.32';
$VAR4 = '192.168.1.33';
$VAR5 = '192.168.1.34';
$VAR6 = '192.168.1.35';
$VAR7 = '192.168.1.36';
$VAR8 = '192.168.1.37';
$VAR9 = '192.168.1.38';
$VAR10 = '192.168.1.39';
$VAR11 = '192.168.1.40';
####
Found RANGE: 192.168.1.10 - 192.168.1.20
Found RANGE: 192.168.1.30 - 192.168.1.40
$VAR1 = '192.168.1.30';
$VAR2 = '192.168.1.31';
$VAR3 = '192.168.1.32';
$VAR4 = '192.168.1.33';
$VAR5 = '192.168.1.34';
$VAR6 = '192.168.1.35';
$VAR7 = '192.168.1.36';
$VAR8 = '192.168.1.37';
$VAR9 = '192.168.1.38';
$VAR10 = '192.168.1.39';
$VAR11 = '192.168.1.40';