use strict; use warnings; my %look = ( name => qr/([A-Z]\w+\s?)+/, gender=> qr/[fF]?e?[mM]ale/, tel => qr/\d{5,8}/, ); sub validate{ my($str,$pattern)=@_; my $count = () = $str =~ /$pattern/g; return $count; } while (defined (my $line = )){ chomp $line; print qq("$line" contains:\n); foreach my $pattern (keys %look){ my $res = validate($line, $look{$pattern}); print "\t$res $pattern\n" } } __DATA__ Kurt Perlish male 5555555 21212121 Mary Perl 6565656 me Male 12042016