#!/usr/bin/perl use strict; use warnings; use Data::Dumper; use Benchmark qw(:all); # For timming reasons use Fcntl qw(:flock); # import LOCK_* and SEEK_END constants $| = 1; my @value_2; my @array_2; sub second { foreach my $arg (@_) { open (READ, "<" , $arg) or die ("Could not open: ".$arg." - $!\n"); flock(READ, LOCK_EX) or die "Could not lock '".$arg."' - $!\n"; if (-z "".$arg."") { print READ "is empty!\n"; # -z File has zero size (is empty). } while ( my @doc_read = ) { chomp @doc_read; foreach $_ (@doc_read) { my @result = split (':', $_); if (/^\s*$/) { # /^\s*$/ check for "blank" lines may contain spaces or tabs next; } push (@value_2 , $result[3]); } push (@array_2, [@value_2]); } @value_2 = (); close (READ) or die ("Could not close: ".$arg." - $!\n"); } return @array_2; } my @result_2 = &second(@ARGV); print Dumper(@result_2);