my $valid = qr/[\w\s]/; while (){ # grab: ween{(commands)} if (/^ween\s*\{\s*($valid+;)\s*\}\s*$/) { my $cmd = $1; print "Found $cmd\n"; } else { print "$0: Illegal chars or incorrect syntax!\n"; print "Line: $_\n"; } } __DATA__ ween { foo bar; } ween { del *.*; }