use strict; my (@lines1, @lines2, @lines3); &load_array(\@lines1, "foo1.dat"); &load_array(\@lines2, "foo2.dat"); &load_array(\@lines3, "foo3.dat"); for (my $i = 0; $i < @lines1; $i++) { my ($word2) = split(/ /, $lines2[$i]); my ($word3) = split(/ /, $lines3[$i]); print "$lines1[$i]:$word2:$word3\n"; } sub load_array($$) { my ($a_ref, $file) = @_; open (FILE, $file) or die "Can't open $file:$!\n"; @{$a_ref} = ; close FILE; chomp @{$a_ref}; }