#!/usr/bin/perl # http://perlmonks.org/?node_id=1146524 use strict; use warnings; chomp( my @data = ); my @widths; for( @data ) { my @fields = split /,/; $widths[$_] |= $fields[$_] for 0..$#fields; } my $format = join(' ', map '%-' . length() . 's', @widths) . "\n"; printf $format, split /,/ for @data; print "\n"; my @keys = split /,/, shift @data; my $i = 0; for( @data ) { print "$keys[$i++ % @keys]: $_\n" for split /,/; } __DATA__ name,address,postcode,mobile, pat,50 car road,aa1 1ab,99999 patr,100 car av,bb1 1bb,88888