Hi,
I have one file in this format
20 value1
33 value2
56 value3
I have another file in this format:
34,30-SEP-09,57,100237775,33614510126,2,34
34,30-SEP-09,57,100237775,33620766654,2,34
34,30-SEP-09,108,100237775,33628458122,2,34
34,30-SEP-09,130,100237775,33635266741,2,254
34,30-SEP-09,135,100237775,33634650517,2,254
34,30-SEP-09,149,100237775,33660985888,2,34
What I want to do is for each value in the first column of the first file (lets call it x) I want to print the last column in the 2nd file if the 5th column begins with x.
So for the above, the first value in the first column of the first file is 20. None of the column4 values in the 2nd file begin with 20 so I don't want to print anything. For 33 from the first file I would want to print the value in the last column of the 2nd file for each line e.g 34,34,34,254,254,34.
I have this, it works but my CPU usage for this process is about 30%! Is there a way to make this more efficient?
#!/usr/local/bin/perl
use lib "/usr/local/include/modules";
use Getopt::Long;
use File::Copy;
use JDFunction;
use JDProcess;
use JDInput;
#use strict;
use FileHandle;
use IO;
use POSIX qw(strftime);
use Time::Local;
$file_name="/export/home/file2";
open(DATA, $file_name) || die ("Could not open file2!");
@my_data=<DATA>;
close(DATA);
$first_file="/export/home/file1";
open $FIRST_DATA, "<", $first_file or die "Could not open first data file";
while ( $line = <$FIRST_DATA> )
{
chomp ($line);
($code, $value) = split(/\t/, $line);
foreach $line (@my_data)
{
chomp($line);
($id,$day,$ref,$valuey,$valuez,$evt_type,$subcode)=split(/,/,$line);
if ( $valuez =~ /^$code/ )
{
print "$code, $subcode\n";
}
}
}
close $FIRST_DATA;
If you know a way to make this more efficient I'd be grateful!
Thanks