in reply to Align columns in a table

Use Text::Table.
#! /usr/bin/perl use strict; use warnings; use Text::Table; my $table = 'Text::Table'->new; while (<DATA>) { my @columns = split / +(?!\()/; $table->add(@columns); } print $table; __DATA__ Package Coverage Line Method Branch com.gandu.base.alltests 90% 91% (20/22) 50% (1/2) 0 +% (0/0) ...

Update: I used split to process the output of your script to keep the parentheses together with the percentages, but if you use the module and populate the table directly with the values, it gets even simpler. Instead of

push(@data_table,\@coverage_line);
you'd do
$table->add(@coverage_line);
map{substr$_->[0],$_->[1]||0,1}[\*||{},3],[[]],[ref qr-1,-,-1],[{}],[sub{}^*ARGV,3]