This is my first attempt. My misunderstanding was in the fact that I could
put the filehandles inside another filehandles while loop.
#!perl
use strict;
&read_the_files;
sub read_the_files{
print "\nread_the_files";#
my$file1 ="./file1.txt";
#contents of file1.txt
#1;;;;
#6;;;;
my$file2 = "./file2.txt";
#contents of file2.txt
#;;;;5
#;;;;10
my$file3 = "./file3.txt";
#contents of file3.txt
#;;;4;
#;;;9;
my$file4 = "./file4.txt";
#contents of file3.txt
#;;;;5
#;;;;10
my$writing = "./combined.txt";
my$count;
unless(open(FH, $file1)){print "\nCouldn't read $file1";exit}else{print
"\nOpen successful"}
#######################
#this next bit of code seems old and sloppy. I would have to do it on all
the files to get the last line number
# is there a newer way?
my$test = <FH>;
while( <FH>){$count = $.;}
close(FH);
print "\ncount: ".$count;
#######################
unless(open(FH1, $file1)){print "\nCouldn't read $file1";exit}else{print
"\nOpen successful"}
unless(open(FH2, $file2)){print "\nCouldn't read $file2";exit}
unless(open(FH3, $file3)){print "\nCouldn't read $file3";exit}
unless(open(FH4, $file4)){print "\nCouldn't read $file4";exit}
unless(open(FHW, ">$writing")){print "\nCouldn't write to $writing";exit;}
#get the info for each line and put it into the database line by line this
will use less memory
while($count--){
print "\n reading filehandle";
my($line1,$line2,$line3,$line4);
$line1 = <FH1>;print "\nline1: $line1";
$line2 = <FH2>;print "\nline2: $line2";
$line3 = <FH3>;print "\nline3: $line3";
$line4 = <FH4>;print "\nline4: $line4";
#putting content in empty spaces so full aray will register
$line1 =~ s/;;/;`;/g;
$line2 =~ s/;;/;`;/g;
$line3 =~ s/;;/;`;/g;
$line4 =~ s/;;/;`;/g;
#the sizes of these arrays may vary by one so I have to find the greatest one
[EMAIL PROTECTED] = split(";", $line1);
[EMAIL PROTECTED] = split(";", $line2);
[EMAIL PROTECTED] = split(";", $line3);
[EMAIL PROTECTED] = split(";", $line4);
my$n1 = @insert1;
my$n2 = @insert2;
my$n3 = @insert3;
my$n4 = @insert4;
[EMAIL PROTECTED] = [$n1,$n2,$n3,$n4];
print "\n ns : $n1,$n2,$n3,$n4";
[EMAIL PROTECTED] = sort { $b <=> $a } @ns;
[EMAIL PROTECTED];
for(my$i=0;$i<7;$i++){
if($insert1[$i] =~ /\w/){$mainline[$i] = $insert1[$i]}
if($insert2[$i] =~ /\w/){$mainline[$i] = $insert2[$i]}
if($insert3[$i] =~ /\w/){$mainline[$i] = $insert3[$i]}
if($insert4[$i] =~ /\w/){$mainline[$i] = $insert4[$i]}
}
my$printline = join(";", @mainline);
#remove backtics that had no values
$printline =~ s/`//g;
print FHW $printline."\n";
}
}
#add to mysql table after FWH is updated