my @range= unpack "N*", pack "C*", split /[. ]+/, "@ARGV"; #### $range[0]..$range[1] #### Range iterator outside integer range at ... #### for( $_= $range[0]; $_ <= $range[1]; $_++ ) #### sub octets2num { my $val= 0; for( split /\./, shift(@_) ) { $val= 0x100*$val + $_; } return $val; } sub num2octects { my $val= shift(@_); my @bytes; while( 0 < $val ) { unshift @bytes, $val%0x100; $val= int( $val / 0x100 ); } return ! @bytes ? "0" : join ".", @bytes }