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"