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 <[email protected]> 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: [email protected]
For additional commands, e-mail: [email protected]
http://learn.perl.org/