use strict; use warnings; $/ = undef; my $data = ; $data =~ s{^(.*?)\|}{sprintf '%-45s', $1}meg; print $data; __DATA__ ABCDEFGHIJKLMNOPQRST|1234 ABCDEFGHI|12345 ABCDE|1234 ABCDEFGHIJKL|123 ABCDEFG|123456 ABCDEFGHIJKLMNO|12 #### use strict; use warnings; while (my $line = ) { my ($lhs,$rhs) = split /\|/, $line, 2; printf "%-45s%s", $lhs,$rhs; } __DATA__ ABCDEFGHIJKLMNOPQRST|1234 ABCDEFGHI|12345 ABCDE|1234 ABCDEFGHIJKL|123 ABCDEFG|123456 ABCDEFGHIJKLMNO|12