I will test it further but I think number 2. (and 4.!) in your list may have been the problem.
I was viewing the output in two ways, both through the terminal. Either I was printing to STDOUT and looking at the output directly, or printing it to a file (after removing it) and calling the Unix head method on it. Both gave me the missing \t problem.
I've now tried to copy the file locally and open it with TextWrangler and TextEdit, and that seems to give the required output. Thank you for your suggestion.
I was using Perl 5.14.