./ipdec2oct.pl 10.m55.000.001 #### octal 012.0.0.1 #### Argument "m55" isn't numeric in lt at ./ipdec2oct.pl line 22. #### $octet10 =~ /^\d{1,3}$/ #### if ( $octet10 < 0 ) { &USAGE("\"$address{decimal}\" don't cut it: \"$octet10\" is less than 0"); } #### &USAGE("\"$address{decimal}\" don't cut it: \"$octet10\" is greater than 255"); #### &USAGE(qq["$address{decimal}" don't cut it: "$octet10" is greater than 255]); #### &USAGE(qq."$address{decimal}" don't cut it: "$octet10" is greater than 255.); #### if ( $octet10 > 255 ) { print qq/"$address{decimal}" don't cut it: /, qq/"$octet10" is greater than 255./; &USAGE; } #### if ($octet8 > 7) { $octetpadded = "0$octet8"; } else { $octetpadded = $octet8; } #### $octetpadded = ($octet8 > 7) ? "0$octet8" : $octet8; #### $octetpadded = ($octet8 > 7) ? "0$octet8" : $octet8; push @octets8, $octetpadded; #### push @octets8, ($octet8 > 7) ? "0$octet8" : $octet8; #### for my $octet10(@octets10) { #### for (@octets10) { #### my @octets10 = split /\./, $address{decimal}; for (@octets10) { #### for (split /\./, $address{decimal}) { #### $address{octal} = join '.', @octets8; print "\n decimal $address{decimal}\n octal $address{octal}\n\n"; #### print "\n decimal ", $address{decimal}, "\n octal ", join('.',@octets8), "\n\n"; #### #!/usr/bin/perl -w use strict; my @octets8; my $ip = shift; unless (defined $ip) { print 'Enter *something* for input'; usage(); } for (split /\./, $ip) { my $err = "$ip don't cut it: $_"; if ( !/^\d{1,3}$/ ) { print "$err ain't a number."; usage(); } elsif ( $_ > 255 ) { print "$err is greater than 255."; usage(); } else { my $oct = sprintf "%lo", $_; push @octets8, ($oct > 7) ? "0$oct" : $oct; } } print "\n decimal ", $ip, "\n octal ", join('.',@octets8), "\n\n"; sub usage { print join "\n ", "\n Usage: ipdec2oct.pl dottedquad_decimal_ipaddr\n", $0, "Perl $]", $^O, "\n"; exit; }