in reply to Doubt on hash keys

Because parentheses almost always only affect precedence - they don't create a list (or in this case, some kind of "sub list"), and => is just a kind of comma with some semi-magical auto-quoting properties. You are initializing the hash to ( 'hi', 'hello', 'all', 'bye', 'later', 'gone' ), where 'hello', 'bye', and 'gone' are the values for the keys (respectively) 'hi', 'all', and 'later'.

It looks like you want to make the values for $hash{'hi'} and $hash{'bye'} be hashes. Since hash values can only be scalars, you need to explicitly make a hash reference:

my %hash = ( 'hi' => { 'hello' => 'all' }, 'bye' => { 'later' => 'gone' }, ); print $hash{'hi'}{'hello'}; # prints "all"