use strict; use warnings; my %HoA; while (my $line = ) { chomp $line; my ($col1,$restcol) = split /:\s*/, $line ,2; my ($col2,$col3) = split ' ', $restcol,2; push @{$HoA{$col1}{$col2}},$col3; } print "Dumping Output \n"; for my $col1 (sort keys %HoA) { my $c1txt=$col1; for my $col2 (sort keys %{$HoA{$col1}}) { my $c2txt=$col2; for my $col3 (@{$HoA{$col1}{$col2}}) { printf "%-22s %-22s %-22s \n",$c1txt,$c2txt,$col3; $c1txt=''; $c2txt=''; } } } __DATA__ ULTRIX : CW18.72.0.3 IP-HOST1.log DEC_DECSTATION : CW180.72.0.3 IP_HOST_AL.log DEC_DECSTATION_ADDR : CW180.72.0.3 IP_HOST_al2.log FOR_VISITORS23_HOST : HL617.253.1101.2 IP_HOST_hostinfo.log FOR_VISITORS24_HOST : HL617.253.1101.2 IP_HOST_hostinfo2.log FOR_VISITORS25_HOST : HL617.253.1101.2 IP_HOST_webform3.log FOR_VISITORS25_HOST : HL617.253.1101.2 IP_HOST_webform4.log FOR_VISITORS25_HOST : HL617.253.1201.2 IP_HOST_webform4.log #### Dumping Output DEC_DECSTATION CW180.72.0.3 IP_HOST_AL.log DEC_DECSTATION_ADDR CW180.72.0.3 IP_HOST_al2.log FOR_VISITORS23_HOST HL617.253.1101.2 IP_HOST_hostinfo.log FOR_VISITORS24_HOST HL617.253.1101.2 IP_HOST_hostinfo2.log FOR_VISITORS25_HOST HL617.253.1101.2 IP_HOST_webform3.log IP_HOST_webform4.log HL617.253.1201.2 IP_HOST_webform4.log ULTRIX CW18.72.0.3 IP-HOST1.log