[Omaha.pm] requesting quick help

Jay Hannah jay at jays.net
Thu Jan 11 05:51:16 PST 2007


[Hmmm... Weird. Cox didn't forward this to the pm.org server? Let's  
try again using my smtp server so I can debug...]


From: Jay Hannah <jay at jays.net>
Date: January 10, 2007 9:11:30 PM CST
To: kiran bina <kiranbina at gmail.com>
Cc: Nebraska USA Perl Mongers of Omaha <omaha-pm at pm.org>
Subject: Re: requesting quick help

(1) You've got a "sleep 1" on line 44 slowing you down. :)

(2) Given your filename list

Org1_Org2.common
Org1-Org2-Org3.A_unique
Org1_Org2_Org3.common
Org1_Org3.common
Org2-Org1-Org3.B_unique
Org2_Org3.common
Org3-Org1-Org2.C_unique

In this block of code

     if($fileName =~ /\.BC98/ || $fileName =~ /\.BC90/ || $fileName  
=~ /B_Unique/
             || $fileName =~ /Org2_Org3.common/ || $fileName =~ /Org2- 
Org1-Org3.B_unique/)
     {
         print " 1 Searching file: $file_names[0]";
        @file_names = ($file_names[0]); # ATC
     }
     elsif($fileName =~ /C_Unique/ || $fileName =~ /Org3-Org1- 
Org2.C_unique/)
     {
         print "2 Searching file: $file_names[1]";
        @file_names = ($file_names[1]); # SE_Org3
     }
     elsif($fileName =~ /ABC/ || $fileName =~ /AB/ || $fileName =~ / 
AC98/ || $fileName =~ /AC90/
             || $fileName =~ /A_Unique/ || $fileName =~ /Org1-Org2- 
Org3.A_unique/ || $fileName =~ /Org1_Org2.common/
             || $fileName =~ /Org1_Org2_Org3.common/ || $fileName =~ / 
Org1_Org3.common/)
     {
         print "3 Searching file: $file_names[2]";
        @file_names = ($file_names[2]); # RP62A
     }
     print "$fileName => $file_names[0]\n";

you were probably expecting the file "Org1_Org2_Org3.common" to fall  
into the "3 Searching file" block, but it doesn't because you're  
catching that filename with your

    $fileName =~ /Org2_Org3.common/

regex up in the "1 Searching file" block. That's because  
"Org1_Org2_Org3.common" does indeed contain the string  
"Org2_Org3.common", which is the question your regex asks Perl to  
answer.

You don't need regexs to do what you're doing, so you're less likely  
to get stung by just avoiding them like so:

     if($fileName eq "Org2_Org3.common" || $fileName eq "Org2-Org1- 
Org3.B_unique")
     {
         print "1 Searching file: $file_names[0]";
        @file_names = ($file_names[0]); # ATC
     }
     elsif($fileName eq "Org3-Org1-Org2.C_unique")
     {
         print "2 Searching file: $file_names[1]";
        @file_names = ($file_names[1]); # SE_Org3
     }
     elsif($fileName eq "Org1-Org2-Org3.A_unique" || $fileName eq  
"Org1_Org2.common" ||
           $fileName eq "Org1_Org2_Org3.common"   || $fileName eq  
"Org1_Org3.common")
     {
         print "3 Searching file: $file_names[2]";
        @file_names = ($file_names[2]); # RP62A
     }
     print "$fileName => $file_names[0]\n";

... or something even tighter... :)

Looks like that produces the output you were expecting?

HTH,

j




More information about the Omaha-pm mailing list