in reply to Net::Netmask not working with scalar variable

while(<F>) { if(/IP Address/) { @split0= split(/ /, $_); @MYIP0=(@MYIP0,@split0); }
Is almost certainly not what you want. If you do match /IP Address/ and then split on a space and then append to the list you will get something like:
@MYIP0 = ( 'IP', 'Address', "192.168.1.1\r\n" )
at best. Then even if you do match your /\d*\.\d*\.\d*\.\d*/ you're still keeping the wrong value. You probably want something like:
while (<F> { if (/IP\sAddress\s+(\d+\.\d+\.\d+\.\d+)/) { push @MYIP, $1; } ... } $ff = $MYIP[0]; $fk = "$ff:255.255.255.0"; # even better, use 2 arg version of Net::Netmask->new2 $block = Net::Netmask->new2( $MYIP[0], '255.255.255.0'); ...
The not perfect regex is OK since output from system commands rarely varies.