Wersja nieco czytelniejsza moim zdaniem i ... Dobra rada piszac w Perl'u - uzywajcie strict i warnings (-w). Taint checks tez sie przydaje (-T).
Kod:
#!/usr/bin/perl -Tw
use strict;
my $ip=undef;
print "Begining manual interface configuration.\n";
while (! defined $ip) {
$ip = &validate_ip;
};
print "Got IP = $ip\n";
sub validate_ip {
print "Please enter valid IP address or press Crtl+C to abort: ";
chomp(my $ip=<STDIN>);
return undef if ($ip !~ m/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/);
(($1 < 256) and ($2 < 256) and ($3 < 256) and ($4 < 256)) ? return "$1.$2.$3.$4" : return undef;
}