#!/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