in reply to syntax issue

use strict; use warnings; my %h = ('a', ['A', 'B'], 'b', 'B','a b', 'A B'); print join('-', keys %h) . "\n\n"; print join('-', values %h) . "\n\n"; print "@{$h{'a'}}\n\n"; print "$_ => $h{$_}\n" for keys %h; print "\n"; use Data::Dumper; print Dumper(\%h);

Output:

a-a b-b ARRAY(0x1801180)-A B-B A B a => ARRAY(0x1801180) a b => A B b => B $VAR1 = { 'a' => [ 'A', 'B' ], 'a b' => 'A B', 'b' => 'B' };

Note that hashes do not retain order, so the elements may display in a different order from the order you defined them.

Personally, I prefer this format if I'm creating a hash, just makes things a lot more clear:

my %h = ( 'a' => ['A', 'B'], 'b' => 'B', 'a b' => 'A B' );