Linux Classes
Share This With a Friend  
LINUX CLASSES - PERL PROGRAMMING

How Does Perl Pattern Matching Work?

One mystery remains: What's this (/^#/) stuff all about? Remember the grep command, and the discussion of regular expressions? If you think about it, the little Perl program in the previous example acts a lot like grep, since it sifts through each line and prints it if a pattern is matched. In Perl, the forward slashes indicate that a pattern match is to be performed. The regular expression inside the slashes defines the search pattern, and $_ is the variable that the search is performed on. In our case, the ^# inside the slashes means to match only lines that begin with the pound sign.

So if we make the previous example a bit more generic, allowing it to get the search pattern and file name from the command line, it will behave almost exactly like the grep utility:

open MYFILE, $ARGV[1] or die "Can't open $ARGV[1]: $! \n";
while (<MYFILE>) {
if (/$ARGV[0]/) { print "MATCH: $_"; }
}

Learn More about Perl

We've barely scratched the surface of what you can do with the Perl language. Try the man perl command to get more information on Perl, read Programming Perl by Larry Wall (O'Reilly & Associates), the inventor of the Perl language, or visit the Perl Institute Web site at http://www.perl.org.

Previous Lesson: Perl and Files
Next Lesson: Sending Email

[ RETURN TO INDEX ]


   

Comments - most recent first
(Please feel free to answer questions posted by others!)

Srini     (30 Sep 2014, 06:31)
How to extract the number which is present after AAA?

12345 AAA 67890

I need 67890 to be extracted.
Thanks.
manter     (23 Dec 2012, 22:42)
sorry:
#!/usr/bin/perl
manter     (23 Dec 2012, 22:41)
Majed, are you sure that the first line of your script goes like this:
#/usr/bin/perl
#
#or whatever the output of
#which perl is.
Majed     (07 Dec 2011, 08:02)
forgot to put notify me about new comments on this page.
Majed     (07 Dec 2011, 08:01)
i tried this perl script the output is:
srvmon var # ./anothertest.pl
./anothertest.pl: line 3: open: command not found
./anothertest.pl: line 4: syntax error near unexpected token `)'
./anothertest.pl: line 4: `while (<MYFILE>) {'

I welcome your comments. However... I am puzzled by many people who say "Please send me the Linux tutorial." This website *is* your Linux Tutorial! Read everything here, learn all you can, ask questions if you like. But don't ask me to send what you already have. :-)

NO SPAM! If you post garbage, it will be deleted, and you will be banned.
*Name:
Email:
Notify me about new comments on this page
Hide my email
*Text:
 
 


Ask Bob Rankin - Free Tech Support


Copyright © by - Privacy Policy
All rights reserved - Redistribution is allowed only with permission.