What about this? It is using spaces to have a fixed length first column, then a TAB.
#!/usr/bin/perl -w
use strict;
use warnings;
my @md5;
my $longest_filename = 0;
foreach my $arg (@ARGV) {
push (@md5, `md5sum $arg`);
$longest_filename = length($arg) if length($arg)>$longest_filename;
}
chomp(@md5);
$longest_filename++;
foreach my $entry (@md5) {
my ($md5,$filename) = $entry =~ m/^(.+?)\s(.+?)$/gis;
printf "%-".$longest_filename."s\t%-16s\n",$filename,$md5;
}
bd.pl b367dcf675902583a113a13e3b345809
p1.pl f5a10f748917ac8cf90d2e223c5b1cbf
lognlonglong_filename_tohave.txt d41d8cd98f00b204e9800998ecf8427e