use strict; use warnings; use Data::Dumper; open my $firstFH, q{<}, \ < ) { chomp; my( $col1, $lastVal ) = ( split m{;} )[ 0, -1 ]; push @order, $col1; push @arr1, $lastVal; } close $firstFH or die qq{close: < HEREDOC: $!\n}; open my $secondFH, q{<}, \ < ) { chomp; my( $col1, $lastVal ) = ( split m{;} )[ 0, -1 ]; if( $col1 eq $order[ $idx ] ) { push @arr2, $lastVal; } else { push( @arr2, q{0} ), $idx ++ until $col1 eq $order[ $idx ]; push @arr2, $lastVal; } $idx ++; } push @arr2, q{0} until scalar @arr1 == scalar @arr2; close $secondFH or die qq{close: < HEREDOC: $!\n}; print Data::Dumper->Dumpxs( [ \ @arr1, \ @arr2 ], [ qw{ *arr1 *arr2 } ] ); print q{[} . join( q{; }, @arr1 ) . qq{]\n[} . join( q{; }, @arr2 ) . qq{]\n};