in reply to Re^2: regarding file from the directory and executing some commands and placing the out put on exceel sheet.
in thread regarding file from the directory and executing some commands and placing the out put on exceel sheet.

It would have been better to reply to my post rather than update the existing node.
There is something not quite right here ;
Var Output Expected --- ------------------------- ----------------------- $Gkel_gz[0] Gkel_Check.I.Jun13.dat.gz Gkel_check.1.ABC.dat.gz $Count 00108418 108418 $Count 00108418 108418 $Check[0][0] Check.I.ABC_TT1.dat check.1.ABC_TT1.dat $Check[0][1] 278 470 $Gkel[0] , Gkel_check.1.ABC.dat $Count1 -470 107670 $Count1 -470 107670 $Check[1][0] Check.I.AB_TT1.dat Check.I.AB_TT1.dat $Check[1][1] 470 278
You said the files were like this
Gkel_check.1.ABC.dat.gz Gkel_check.1.ABC.dat check.1.ABC_TT1.dat check.1.AB_TT1.dat
I don't understand how you can you get Gkel_Check.I.Jun13.dat.gz in the output ? Also, how does this match m/^check.*Check.dat$/ give these
Check.I.ABC_TT1.dat Check.I.AB_TT1.dat
in the output ?
poj
  • Comment on Re^3: regarding file from the directory and executing some commands and placing the out put on exceel sheet.
  • Select or Download Code

Replies are listed 'Best First'.
Re^4: regarding file from the directory and executing some commands and placing the out put on exceel sheet.
by Perlseeker_1 (Acolyte) on Jun 21, 2013 at 13:50 UTC
    Hi,

    sorry for the confusion

    Gkel_check.1.ABC.dat.gz Gkel_check.1.ABC.dat check.1.ABC_TT1.dat check.1.AB_TT1.dat
    if (($file=~ m/^Gkel_/) && (substr($file, -2) eq 'gz')) { my $result = `gunzip -c $file|tail -1`; $Count = substr($result,22,8); system(`gunzip -f $file`); $Orig_file = $file;

    The above condition i am using to fetch the files starts with Gkel_ abd ends with gz

    fetch the zip file and execute tail command to get the count

    and execute gunzip to uncompress the file, here i will take the file name and count

    elsif ($file=~ m/^check.*TT1.dat$/) my $result = `wc -l $file`; my ($count, $file_name) = split(' ',$result); $result{$hashkey}->[0] = $file_name; $result{$hashkey}->[1] = $count; $hashkey++;

    The above code to fetch the two files check.1.ABC_TT1.dat and check.1.AB_TT1.dat

    execute the wc -l to get the count here also i will take the file name and count

    opendir( DIR, $dir ); my @files = grep( /$pattern/, readdir(DIR) ); closedir(DIR); chdir($dir); foreach my $file (@files) { if (($file=~ m/^Gkel_/) && (substr($file, -2) ne 'gz')) { my $result = `wc -l $file`; my ($count, $file_name) = split(' ',$result); $file1 = substr($file,5,50); $Orig_file1 = $file_name; $Count1 = $count; system(`mv $file $file1`); } }

    The above code will take the unzipped file Gkel_check.1.ABC.dat and

    and move the file from Gkel_check.1.ABC.dat to check.1.ABC.dat

    execute the wc -l to get the count here also i will take the file name and count

    Output what i am expecting is:

    June-2013 Gkel_check.1.ABC.dat.gz count check.1.ABC_TT1.dat count chec +k.1.ABC.dat.gz count

    This is the first line the above output should contain a line with zip file name and its count

    Then check.1.ABC_TT1.dat and its count and unzipped file name and count

    check.1.AB_TT1.dat

    In second line i need just only check.1.AB_TT1.dat file name and its count

    regards,
      I understand now why you had 2 loops.
      Try this, as before replace #test lines with your lines marked ##
      #!perl use strict; use warnings; my @test = (470,278); #test my @Gkel=(); my @Gkel_gz=(); my @TT1=(); my @files = qw( Gkel_check.1.ABC.dat.gz check.1.ABC_TT1.dat check.1.AB_TT1.dat ); #test ##opendir( DIR, $dir ); ##my @files = grep( /$pattern/, readdir(DIR) ); ##closedir(DIR); ##chdir($dir); # sort so that AB_ comes after ABC foreach my $file (sort @files) { # check gz file if ( ($file =~ m/^Gkel_/) && ($file =~ m/gz$/) ){ ## my $result = `gunzip -c $file|tail -1`; ## my $count = substr($result,22,8); my $count = 108418; #test $Gkel_gz[0] = $file; $Gkel_gz[1] = $count; # extract .dat file ## system(`gunzip -f $file`); } # check TT1 files if ( $file =~ m/^check.*TT1.dat$/ ){ ## my $result = `wc -l $file`; ## my ($count, $file_name) = split(' ',$result); my $count = shift @test; #test push @TT1,[$file,$count]; } } # process extracted file ##opendir( DIR, $dir ); ##my @files = grep( /$pattern/, readdir(DIR) ); ##closedir(DIR); ##chdir($dir); push @files,'Gkel_check.1.ABC.dat'; #test foreach my $file (@files) { # extracted file if ( ($file =~ m/^Gkel_/) && ($file !~ m/gz$/) ){ #my $result = `wc -l $file`; #my ($count, $file_name) = split(' ',$result); my $count = 107948; # remove Gkel from filename my $file1 = substr($file,5,50); $Gkel[0] = $file; $Gkel[1] = $count; #system(`mv $file $file1`); } } # Ouput my @row1 = ('Jun-2013', # $Gkel_gz[0],$Gkel_gz[1], # zip filename and count $TT1[0]->[0],$TT1[0]->[1], # ABC_TT filename and count $Gkel[0],$Gkel[1] # unzipped filename and count ); my @row2 = ( $TT1[1]->[0],$TT1[1]->[1] # AB_TT filename and count ); print join ',',@row1,"\n"; print join ',',@row2,"\n";
      poj
        Hi,

        Now i am getting the output on two lines

        But i want write these to excel sheet and i am using

        my @row1 = ('Jun-2013',$Gkel_gz[0],$Gkel_gz[1],$TT1[0]->[0],$TT1[0]->[ +1],$Gkel[0],$Gkel[1]); my @row2 = ($TT1[1]->[0],$TT1[1]->[1]); print DETAIL "Jun-2013,$Gkel_gz[0],$Gkel_gz[1],$Gkel_gz[1],$TT1[0]->[0 +],$TT1[0]->[1],$Gkel[0],$Gkel[1],$Gkel[1],TRUE\n"; print DETAIL "'\t','\t','\t','\t',$TT1[1]->[0],$TT1[1]->[1]\n";

        Output what i am getting now

        Line numebr 1

        Jun-2013 Gkel_check.1.ABC.dat.gz count check.1.ABC_TT1.dat count check +.1.ABC.dat.gz count

        Line numebr 2

        check.1.AB_TT1.dat count

        but i want the line number 2 output below check.1.ABC_TT1.dat count

        Expected

        Jun-2013 Gkel_check.1.ABC.dat.gz count check.1.ABC_TT1.dat count check +.1.ABC.dat.gz count check.1.AB_TT1.dat count

        And also the regards,