#print $hash{key} "This is line 4.\n";
Note {} curly braces around $hash{key}:
print {$hash{key}} "This is line 4.\n";
Update: From print:
If you're storing handles in an array or hash, or in general whenever you're using any expression more complex than a bareword handle or a plain, unsubscripted scalar variable to retrieve it, you will have to use a block returning the filehandle value instead, in which case the LIST may not be omitted:(Update: The documentation excerpted here refers to Indirect Object syntax. Please see kcott's ++reply and the replies of others in this thread for the way to avoid this syntax and for the wisdom of doing so.)
print { $files[$i] } "stuff\n";
print { $OK ? *STDOUT : *STDERR } "stuff\n";
Give a man a fish: <%-{-{-{-<
In reply to Re: Syntax error when trying to use a hash value as a file stream specifier (updated)
by AnomalousMonk
in thread Syntax error when trying to use a hash value as a file stream specifier
by fireblood
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |