\nmy %norm =\n (\n "a" => [],\n "b" => [],\n "c" => [],\n );\n
(note that you still need to fix the () vs {} issue.)
But in any case the right solution is to assume that %norm needs no initialization at all. Perl will autovivify it to be The Right Thing.
In fact that's kind of the point of having all the syntax - Perl has enough clues to be able to figure out The Right Thing and do it for you. For instance you can write:
\n push @{ my $norm{$key} }, $value;\n
and if need be it will realize, "There is no value in %norm for $key - I need to create one and clearly it should be an anonymous array." In, say, Ruby you'd have to write two lines - one to make sure that the array was there and another to push something onto it.
(Whether the syntax is worth that benefit I'll not debate. I'm trying to explain Perl, not advocate it.)
Cheers,
Ben