in reply to Reaped: regex to capture only lower case

I believe the issue is that you are not denoting that a-z is a sequence. See:
http://perldoc.perl.org/perlre.html
Try this:
@files = grep ( /[a-z].+\.txt/, readdir($dh));
Please note, this will not match filenames with a single letter. If you intend to match on a file name a.txt, then you need to chnge the + to *.
Hope that helps.