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/


Reply via email to