Array in Perl - Detect several file to be in one array


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Array in Perl - Detect several file to be in one array
# 1  
Old 09-06-2011
Array in Perl - Detect several file to be in one array

Hi everyone

I have one question about using array in perl. let say I have several log file in one folder.. example

test1.log
test2.log
test3.log
and the list goes on..

how to make an array for this file? It suppose to detect log file in the current directory and all the log file will be in one array. anyone know?
# 2  
Old 09-06-2011
Code:
% touch test{1..5}.log
% ls
test1.log  test2.log  test3.log  test4.log  test5.log
% perl -MData::Dumper -le'
  @a = glob "*.log";
  print Dumper \@a
  '
$VAR1 = [
          'test1.log',
          'test2.log',
          'test3.log',
          'test4.log',
          'test5.log'
        ];

# 3  
Old 09-06-2011
Hi

I have this code
Code:
open(MYOUTFILE, "fps.log"); 
open(RESULTFILE, ">result.txt"); 
my $total=0; 
my $lines=0;
while (<MYOUTFILE>) { chomp; my $value = (split /([,:])/)[2]; $total=$value+$total; $lines++; }
print RESULTFILE $total/$lines;

This code is work for one fps.log file only. My program suppose to detect .log file in current directory then it will do the process

Code:
while (<MYOUTFILE>) { chomp; my $value = (split /([,:])/)[2]; $total=$value+$total; $lines++; }
print RESULTFILE $total/$lines;

and print the result. Each log file have their own result file. but I fail to make it so
# 4  
Old 09-06-2011
You could use something like this:

Code:
#!/usr/bin/perl

use warnings;
use strict;

my @log_files = glob "*.log";
my ($total, $lines);

for my $log_file (@log_files) {

(my $res_file = $log_file) =~ s/\.log$/.res/; 

  open my $log_fh, '<', $log_file
    or warn "open $log_file: $!\n";

  open my $res_fh, '>', $res_file
    or die "open $res_file: $!\n";
  
  $total = $lines = 0;    
    
  while (<$log_fh>) {
    $total += (split /[,:]/)[2];
    ++$lines;
    }   

  print $res_fh $total / $lines, "\n";    
  
  close $log_fh
    or warn "close $log_file: $!\n";
    
  close $res_fh
    or warn "close $res_file: $!\n";
  }

With recent versions of Perl you could use autodie and avoid all that manual exception handling.

Last edited by radoulov; 09-06-2011 at 12:12 PM..
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Compare file to array, replace with corresponding second array

ok, so here is the issue, I have 2 arrays. I need to be able to create a loop that will find ${ARRAY1 in the text doc, and replace it with ${ARRAY2 then write the results. I already have that working. The problem is, I need it to do that same result across however many items are in the 2... (2 Replies)
Discussion started by: gentlefury
2 Replies

2. Shell Programming and Scripting

Reading from a file and assigning to an array in perl

I wrote a simply perl that searched a file for a particualr value and if it found it, rite it and the next three lines to a file. Now I have been asked to check those next three lines for a different value and only write those lines if it finds the second value. I was thinking the best way to... (1 Reply)
Discussion started by: billprice13
1 Replies

3. Shell Programming and Scripting

perl: Read array from a flat file

Hello Guru's I want to read an array into a flatfile Please let me know how to do the same So far this the below code use strict; use warnings; open (my $data , '<', $ARGV)|| die "could not open $ARGV:\n$!"; my @array=(<$data>); my @sorted=sort... (8 Replies)
Discussion started by: Pratik4891
8 Replies

4. Shell Programming and Scripting

PERL : Read an array and write to another array with intial string pattern checks

I have an array and two variables as below, I need to check if $datevar is present in $filename. If so, i need to replace $filename with the values in the array. I need the output inside an ARRAY How can this be done. Any help will be appreciated. Thanks in advance. (2 Replies)
Discussion started by: irudayaraj
2 Replies

5. Shell Programming and Scripting

Return Full File Path To Array PERL

Iam trying to load the full path of multiplie files in the same directory to an array if the filenames matches a pattern. The following is the current code; where $input=C:\test # change to and open the comparison directory chdir("$input2") || die "Cannot change dir: $!"; opendir(DIR2,... (2 Replies)
Discussion started by: cold_Que
2 Replies

6. Shell Programming and Scripting

perl, put one array into many array when field is equal to sth

Hi Everyone, #!/usr/bin/perl use strict; use warnings; my @test=("a;b;qqq;c;d","a;b;ggg;c;d","a;b;qqq;c;d"); would like to split the @test array into two array: @test1=(("a;b;qqq;c;d","a;b;qqq;c;d"); and @test2=("a;b;ggg;c;d"); means search for 3rd filed. Thanks find the... (0 Replies)
Discussion started by: jimmy_y
0 Replies

7. Shell Programming and Scripting

Perl grep array against array

Hi, Is there any way I can grep an array against another array? Basically here's what I need to do. There will be an array containing some fixed texts and I have to check whether some files contain these lines. Reading the same files over and over again for each different pattern doesnt seem... (1 Reply)
Discussion started by: King Nothing
1 Replies

8. Shell Programming and Scripting

perl -write values in a file to @array in perl

Hi can anyone suggest me how to write a file containing values,... say 19 20 21 22 .. 40 to an array @array = (19, 20, ... 40) -- Thanks (27 Replies)
Discussion started by: meghana
27 Replies

9. Shell Programming and Scripting

file content in an array PERL

Hello everybody, I'm new in this forum. I searched a long time for a solution for my problem but I didn't find the right thing. I have to read from a file (content is "abngjm" without any other signs) and have to write this content in an array. But every sign has to be called by its own... (5 Replies)
Discussion started by: e_prof
5 Replies

10. Shell Programming and Scripting

formating array file output using perl

Hello, I am trying to output the values in an array to a file. The output needs to be formated such that each array value is left jusified in a field 8 character spaces long. Also, no more than 6 fields on a line. For example: @array= 1..14; Needs to be output to the file like so: 1 ... (4 Replies)
Discussion started by: seismic_willy
4 Replies
Login or Register to Ask a Question