Could use Text::Table for the output. Using an array of arrays, (also could use hash of arrays with a few adjustments to the code).
#!/usr/bin/perl
use strict;
use warnings;
use Text::Table;
use List::Util 'max';
my @final = (
[
'Line_1_3',
'Line_2_3'
],
[
'Line_3_3'
],
[
'Line_4_3',
'Line_5_3',
'Line_6_3',
'Line_7_3'
]
);
my $max_idx = max map $#$_, @final;
my $tb = Text::Table->new;
for my $i (0 .. $max_idx) {
$tb->add( map $final[$_][$i], 0 .. $#final);
}
print $tb
The hash method.
#!/usr/bin/perl
use strict;
use warnings;
use Text::Table;
use List::Util 'max';
my %final = (
'sample.txt' => [
'Line_1_3long',
'Line_2_3'
],
'sample_2.txt' => [
'Line_3_3longer'
],
'sample_3.txt' => [
'Line_4_3',
'Line_5_3',
'Line_6_3evenlonger',
'Line_7_3',
]
);
my $max_idx = max map $#$_, values %final;
my $tb = Text::Table->new;
for my $i (0 .. $max_idx) {
$tb->add( map $final{$_}[$i], sort keys %final);
}
print $tb
|