On Sep 3, 2013, at 7:58 PM, Michael Rasmussen wrote: > On Wed, Sep 04, 2013 at 02:31:30AM +0100, Rob Dixon wrote: >> Matt <matt.mailingli...@gmail.com> wrote: >>> I have this: >>> >>> while (<IN>) { >>> chomp; >>> next if /^#/; >>> # do stuff >>> } >>> >>> >>> It skips to the next item in the while loop of the string begins with >>> # and works fine. I would also like to skip to the next item in the >>> loop if the string contains anything other then lowercase, >>> underscores, numbers, dashes, periods, and spaces. I do not want >>> uppercase characters and any sort of other special characters. How >>> would I do that? >> >> The solution from John Krahn is superior by far, and there is no need for >> any other suggestions. > > John's solution: > next if /[^[:lower:]_\d\-. ]/; > > > Doesn't work in this test environment:
You need to add a chomp to remove the end-of-line character, which is causing every line to match: > michael@bivy:~$ cat tpl && ./tpl > #!/usr/bin/perl > use strict; > use warnings; > > print "\nJohn's solution\n"; > while(<DATA>) { chomp; > print "Seen line: $_"; print "Seen line: $_\n"; > next if /[^[:lower:]_\d\-. ]/; > print; print "$_\n"; > } > > __DATA__ > a good line > Testing John code > a #!! should not print line > _ Should be OK line > finish with a printing line > -- To unsubscribe, e-mail: beginners-unsubscr...@perl.org For additional commands, e-mail: beginners-h...@perl.org http://learn.perl.org/