use strict; use warnings; my @keys = qw{ A B C D }; my( $k, $v ); print q{-} x 20, qq{\n}; my $hashref = sub { return { map { $_, shift } @keys } }->( 1 .. 4 ); print qq{ Keys: @{ [ keys %{ $hashref } ] }\n}; print qq{Values: @{ [ values %{ $hashref } ] }\n}; print qq{ Each:\n}; print qq{ $k => $v\n} while ( $k, $v ) = each %{ $hashref }; print q{-} x 20, qq{\n}; print qq{ Keys: @{ [ keys %{ sub { return { map { $_, shift } @keys } }->( 1 .. 4 ) } ] }\n}; print qq{Values: @{ [ values %{ sub { return { map { $_, shift } @keys } }->( 1 .. 4 ) } ] }\n}; print qq{ Each:\n}; my $count = 0; while( ( $k, $v ) = each %{ sub { return { map { $_, shift } @keys } }->( 1 .. 4 ) } ) { last if ++ $count > 5; print qq{ $k => $v\n}; } print q{-} x 20, qq{\n}; #### -------------------- Keys: A D C B Values: 1 4 3 2 Each: A => 1 D => 4 C => 3 B => 2 -------------------- Keys: A D C B Values: 1 4 3 2 Each: A => 1 A => 1 A => 1 A => 1 A => 1 --------------------