in reply to XML::Simple and output

This is one of the idiosyncrasies of Perl syntax: when printing to a filehandle, there must be no comma between the filehandle and the format string. See printf.

Update 1: See also the comment at the end of brian_d_foy’s 2005 thread Perl oddities:

You don't put a comma between the filehandle name and the list you give to print. I've just always thought that was odd, and I go out of my way to point it out to people in Perl classes. I don't have a problem with this while I code, but I still think it's an odd corner of syntax.

Update 2: With the comma, Perl thinks the filehandle is the first thing to be printed, so it stringifies it and prints the string to STDOUT. You can see this by doing it explicitly, like this:

18:09 >perl -we "open my $fh, '<', 'Test1.txt'; printf '%s', $fh;" GLOB(0x2fc0a4) 18:13 >

Hope that helps,

Athanasius <°(((><contra mundum Iustus alius egestas vitae, eros Piratica,

Replies are listed 'Best First'.
Re^2: XML::Simple and output
by soonix (Chancellor) on Feb 16, 2014 at 16:10 UTC
    I think this is easier to memorize, if you write
    print$fh "whatever you want to print";
    so that it is optically a single "command word"...
      I still prefer
      print {$fh} "whatever";
      لսႽ† ᥲᥒ⚪⟊Ⴙᘓᖇ Ꮅᘓᖇ⎱ Ⴙᥲ𝇋ƙᘓᖇ
        Yes, but you still have to "omit" the comma...
        OTOH, either way you have to remember it is a special case.
Re^2: XML::Simple and output
by expat (Initiate) on Feb 17, 2014 at 01:17 UTC

    Is my face red!

    The hours that comma cost me

    Thanks much