Perl chokes on that line because you're trying to use double-quotes inside a double-quoted string. To Perl, this is one string:
"name is ${input_queue}{" and this is another string:
"}\n".
Here are several different ways to do what you're trying to do:
- Use single quotes on the hash key.
print "name is ${input_queue}{'name'}\n";
- Don't use any quotes on the hash key.
print "name is ${input_queue}{name}\n";
This works because the key, 'name', is a bareword. It wouldn't work with a key like 'this-is-a-key'.
- Use a quoting operator on the string.
print qq(name is ${input_queue}{"name"}\n);
qq{} is just like double-quotes, but you get to choose the delimiter.
One last point: the braces around the hash name are optional:
$input_queue{name} = "blah";. If you prefer the extra braces, that's okay too.
UPDATE: Please see tye's answer for why ${input_queue}{'name'} doesn't mean the same as $input_queue{'name'} in a double-quoted string.