Sponsored Content
Top Forums Shell Programming and Scripting Array in Perl - Detect several file to be in one array Post 302553009 by radoulov on Tuesday 6th of September 2011 10:31:29 AM
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..
 

10 More Discussions You Might Find Interesting

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

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

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

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

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

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

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

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

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

10. 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
Fatal(3pm)						 Perl Programmers Reference Guide						Fatal(3pm)

NAME
Fatal - Replace functions with equivalents which succeed or die SYNOPSIS
use Fatal qw(open close); open(my $fh, "<", $filename); # No need to check errors! use File::Copy qw(move); use Fatal qw(move); move($file1, $file2); # No need to check errors! sub juggle { . . . } Fatal->import('juggle'); BEST PRACTICE
Fatal has been obsoleted by the new autodie pragma. Please use autodie in preference to "Fatal". autodie supports lexical scoping, throws real exception objects, and provides much nicer error messages. The use of ":void" with Fatal is discouraged. DESCRIPTION
"Fatal" provides a way to conveniently replace functions which normally return a false value when they fail with equivalents which raise exceptions if they are not successful. This lets you use these functions without having to test their return values explicitly on each call. Exceptions can be caught using "eval{}". See perlfunc and perlvar for details. The do-or-die equivalents are set up simply by calling Fatal's "import" routine, passing it the names of the functions to be replaced. You may wrap both user-defined functions and overridable CORE operators (except "exec", "system", "print", or any other built-in that cannot be expressed via prototypes) in this way. If the symbol ":void" appears in the import list, then functions named later in that import list raise an exception only when these are called in void context--that is, when their return values are ignored. For example use Fatal qw/:void open close/; # properly checked, so no exception raised on error if (not open(my $fh, '<', '/bogotic') { warn "Can't open /bogotic: $!"; } # not checked, so error raises an exception close FH; The use of ":void" is discouraged, as it can result in exceptions not being thrown if you accidentally call a method without void context. Use autodie instead if you need to be able to disable autodying/Fatal behaviour for a small block of code. DIAGNOSTICS
Bad subroutine name for Fatal: %s You've called "Fatal" with an argument that doesn't look like a subroutine name, nor a switch that this version of Fatal understands. %s is not a Perl subroutine You've asked "Fatal" to try and replace a subroutine which does not exist, or has not yet been defined. %s is neither a builtin, nor a Perl subroutine You've asked "Fatal" to replace a subroutine, but it's not a Perl built-in, and "Fatal" couldn't find it as a regular subroutine. It either doesn't exist or has not yet been defined. Cannot make the non-overridable %s fatal You've tried to use "Fatal" on a Perl built-in that can't be overridden, such as "print" or "system", which means that "Fatal" can't help you, although some other modules might. See the "SEE ALSO" section of this documentation. Internal error: %s You've found a bug in "Fatal". Please report it using the "perlbug" command. BUGS
"Fatal" clobbers the context in which a function is called and always makes it a scalar context, except when the ":void" tag is used. This problem does not exist in autodie. "Used only once" warnings can be generated when "autodie" or "Fatal" is used with package filehandles (eg, "FILE"). It's strongly recommended you use scalar filehandles instead. AUTHOR
Original module by Lionel Cons (CERN). Prototype updates by Ilya Zakharevich <ilya@math.ohio-state.edu>. autodie support, bugfixes, extended diagnostics, "system" support, and major overhauling by Paul Fenwick <pjf@perltraining.com.au> LICENSE
This module is free software, you may distribute it under the same terms as Perl itself. SEE ALSO
autodie for a nicer way to use lexical Fatal. IPC::System::Simple for a similar idea for calls to "system()" and backticks. perl v5.12.1 2010-04-26 Fatal(3pm)
All times are GMT -4. The time now is 06:25 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy