Note that if you're storing FILEHANDLES in an array or other expression, you will have to use a block returning its value instead: print { $files[$i] } "stuff\n"; print { $OK ? STDOUT : STDERR } "stuff\n"; #### print { $Unique_DeviceType{$Unique_SN{$sn}->devicetype} } ... #### my $fh = $Unique_DeviceType{$Unique_SN{$sn}->devicetype}; print $fh ...