#! perl use strict; use warnings; my $re1 = qr{ ^ [\w-]+ $ }x; my $re2 = qr{ ^ \d+ $ }x; while () { chomp; printf "%s : %s\n", $_, /$re1/ && !/$re2/ ? 'yes' : 'no'; } __DATA__ foo 1foo foo2 3foo4 foo5bar 87 foo-bar foo42-baz foo17@12