@out = <>; print Dump(@out); #### #!/usr/bin/perl -l use YAML; # whitespace separated column number of hostnames (base 0) $col = shift @ARGV || 0; # hostname other junk -- 0 # other junk hostname junk -- 2 # ... @out = map { [ join('.', @{$_->[0]}), $_->[1], $_->[2] ] } map { [ [ reverse split /\./, $_->[0] ], $_->[1], $_->[2] ] } sort { $a->[0] cmp $b->[0] } map { [ join( '.', reverse @{$_->[0]} ), [ @{$_->[0]} ], $_->[1] ] } map { [ [ split /\./, $_->[0] ], $_->[1] ] } map { chomp; @f = split; $f = splice @f, $col, 1; [ $f , [ @f ] ] } <>; # for regular list print "-" x 50; for $x ( @out ) { print "$x->[0] -- @{$x->[2]}"; } # for permuted list print "-" x 50; for $x ( @out ) { for $y ( @{$x->[1]} ) { push @{ $d{$y} }, [ $x->[0], $x->[2] ]; } } for $k ( sort keys %d ) { print "$k:"; print "\t$_->[0] -- @{$_->[1]}" for @{ $d{$k} }; } __END__ order and/or permute hostname with info cat <<_END_ | perl foo.pl $column isc.org tra la la la la juniper.net tra la da la da paradise.gen.nz bra la da la da troublemaking.geek.nz bra la la la la hookup.net woot toot boot automagic.org bling blang blum _END_ -------------------------------------------------- hookup.net -- woot toot boot juniper.net -- tra la da la da troublemaking.geek.nz -- bra la la la la paradise.gen.nz -- bra la da la da automagic.org -- bling blang blum isc.org -- tra la la la la -------------------------------------------------- automagic: automagic.org -- bling blang blum geek: troublemaking.geek.nz -- bra la la la la gen: paradise.gen.nz -- bra la da la da hookup: hookup.net -- woot toot boot isc: isc.org -- tra la la la la juniper: juniper.net -- tra la da la da net: hookup.net -- woot toot boot juniper.net -- tra la da la da nz: troublemaking.geek.nz -- bra la la la la paradise.gen.nz -- bra la da la da org: automagic.org -- bling blang blum isc.org -- tra la la la la paradise: paradise.gen.nz -- bra la da la da troublemaking: troublemaking.geek.nz -- bra la la la la #### @out = <> ==> map { chomp; [ split ] } ==> sort { $somthing } ==> map { sprintf "blah: @$_" } ; print Dump(@out);