Hi Anirban,

a few comments on your code.

On Thursday 02 Jun 2011 08:06:54 Anirban Adhikary wrote:
> Hi list
> 
> I have wirtten the following perl code which has some configuration
> params such as prefix,suffix,midfix and nofix. The logic is filenames
> will be selected based on prefix,suffix and midfix pattern.After the
> fiter through above 3 patterns if file names exists with nofix
> patterns it will be removed from the final list.
> 
> use strict;
> use warnings;
> 

It's good you're using strict and warnings.

> #my $pfx ="CAT";
> my $pfx = '';
> my $sfx = '.Z' ;
> my $mfx =   'r';
> my $nfx= "dmp.Z,Q.Z,dat.Z,ctl.Z,A.Z";
> my @fnames =
> ("CAT_arcdf231456_dmp.Z","ABCD_1234.txt","FILE_STAT.Z","CAT_qwerty.Z");
> 
> my($re_pfx,$re_sfx,$re_mfx,$re_nfx);
> my(@pre_fix,@sfx_fix,@mid_fix,@not_fix);
> 
> if((length($pfx)) > 0 and $pfx !~ /^\s+$/) {
>       @pre_fix = split(/,/,$pfx);
>       #find_largest_element(@pre_fix);
>       $re_pfx  = join "|",@pre_fix;
>       $re_pfx = qr/$re_pfx/;
> }
> if((length($sfx)) > 0 and $sfx !~ /^\s+$/) {
>         @sfx_fix = split(/,/,$sfx);
>         $re_sfx  = join "|",@sfx_fix;
>         $re_sfx = qr/$re_sfx/;
> }
> 
> if((length($mfx)) > 0 and $mfx !~ /^\s+$/) {
>         @mid_fix = split(/,/,$mfx);
>         $re_mfx  = join "|",@mid_fix;
>         $re_mfx = qr/$re_mfx/;
> }
> 

1. You have quite a lot of duplicate code here. You can extract it into a 
function call, a hash and/or a loop.

2. You may wish to use http://perldoc.perl.org/functions/quotemeta.html .

3. You should have a space between the "if" and the "(".

4. You can just say «if (length($mfx) and $mfx !~ /\A\s+\z/)».

> 
> if((length($nfx)) > 0 and $nfx !~ /^\s+$/) {
>       @not_fix = split(/,/,$nfx);
>       $re_nfx   = join "|", @not_fix;
>       $re_nfx      = qr/$re_nfx/;
> }
> my @listed;
> 

You should have an empty line between "}" and the "my @listed";

> foreach my $fname(@fnames) {
>                       if($fname =~ /^.*?$re_nfx$/) {
>                               #print "FILE NAME [$fname] is not a valid file 
\n";
>                               next;
>                       }elsif ($fname =~ /^$re_pfx/){
>                               push(@listed,$fname);
>                       }elsif ($fname =~ /^.*$re_sfx$/) {
>                               push(@listed,$fname);
>                       }elsif ($fname =~ /^.*$re_mfx.*$/) {
>                                push(@listed,$fname);
>                       }elsif() {
>                                push(@listed,$fname);
>                       }else {
>                                   push(@listed,$fname);
>                       }
> 

1. Your indentation here is bad.

2. You can combine the elsif into several clauses using "or" or "||".

3. It's better not to cuddle the else's and elsif's:

                        } elsif ($fname =~ /^$re_pfx/) {
                                push(@listed,$fname);
                        } elsif ($fname =~ /^.*$re_sfx$/) {


Regards,

        Shlomi Fish

-- 
-----------------------------------------------------------------
Shlomi Fish       http://www.shlomifish.org/
First stop for Perl beginners - http://perl-begin.org/

I hope that you agree with me that 99.9218485921% of the users wouldn't bother
themselves with recompilation (or any other manual step for that matter) to
make their games run 1.27127529900685765% faster ;-) -- Nadav Har'El

Please reply to list if it's a mailing list post - http://shlom.in/reply .

--
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