#!/usr/bin/perl -w use strict; my %hash = ( son => { year => 2006, name => 'Paul', }, father => { year => 1981, name => 'Ryan', }, mother => { year => 1978, name => 'Bose', }, ); print sprintf( "%s: %s", 'Person' . $/, do { ## <== note here my $order; for ( sort keys %hash ) { $order .= join ' | ' => $_, %{ $hash{$_} }, $/; } $order; } );