while ( ) { chomp; print $_, ": ", check_ip( $_ ), "\n"; } sub check_ip { my ( $ip ) = @_; return "Wrong format" unless $ip =~ /^(\d{1,3}\.){3}\d{1,3}$/; return "Illegal value" if grep { $_ > 255 } split /\./, $ip; return "Weird zeroes" if grep { /^0[0-9]/ } split /\./, $ip; return "OK" } __DATA__ 0.^^&7".34.55-1 fda.er32.223.1 10.00.120.13 32.294.233.12 -02.35.54.54 41.41.22.50