Search code examples
regexperlinputskip

In Perl, how can I use regular expressions to skip input lines containing digits?


I've got a list like this:

Bicycles: Childrens  
289  
Bicycles: Mountain Bikes  
928  
Bicycles: Road Bikes  
870  
Camping & Outdoors Equipment  
761  
Canoes, Kayaks, Row-Boats  
231  
Climbing Equipment  
120  
Freeweights and Home Gyms  
583  
GPS and Locators  
104  
Golf Equipment  
1,223  
Other Fitness Equipment  
668  

I just need to skip lines that are numbers or blank

if (($line =~ /0..9/) || ($line eq "")){}  
else{  

Solution

  • If you write

    while (<>) {
      next unless /[^\d,\s]/;
        :
    }
    

    your program will skip all lines that contain only digits, commas, and whitespace.

    This program shows the idea

    use strict;
    use warnings
    
    while (<DATA>) {
      next unless /[^\d,\s]/;
      print;
    }
    
    __DATA__
    Bicycles: Childrens  
    289  
    Bicycles: Mountain Bikes  
    928  
    Bicycles: Road Bikes  
    870  
    Camping & Outdoors Equipment  
    761  
    Canoes, Kayaks, Row-Boats  
    231  
    Climbing Equipment  
    120  
    Freeweights and Home Gyms  
    583  
    GPS and Locators  
    104  
    Golf Equipment  
    1,223  
    Other Fitness Equipment  
    668  
    

    output

    Bicycles: Childrens  
    Bicycles: Mountain Bikes  
    Bicycles: Road Bikes  
    Camping & Outdoors Equipment  
    Canoes, Kayaks, Row-Boats  
    Climbing Equipment  
    Freeweights and Home Gyms  
    GPS and Locators  
    Golf Equipment  
    Other Fitness Equipment