use strict; use Socket; my $len = '/29'; print "IP IPN Mask Subnet\n"; for my $i (1...31){ print_subnet('192.168.1.'.$i ,$len); } sub print_subnet { my ( $ip, $len ) = @_; my $ipn = unpack "N", Socket::inet_aton $ip; $len =~ s/^\///; my $maskn = 0xFFFFFFFF << ( 32 - $len ); my $subnet_ipn = $ipn & $maskn; my $subnet_ip = Socket::inet_ntoa pack "N", $subnet_ipn; printf "%-20s %s %x %s\n","$ip/$len",$ipn,$maskn,$subnet_ip; }