If you use the warnings pragma you'll find that the original code produces the following error
Invalid conversion in sprintf: "%)" at test.pl line 16.
The sprintf function documentation specifies that a percent sign should be formatted '%%'. I'm not sure why excluding the extra '%' doesn't count as a syntax error.
From what I can tell the warning has been emitted via warnings since around 5.8.0. FYI I'm using 5.8.7 from Ubuntu 6.06 with the patch "SPRINTF0 - fixes for sprintf formatting issues - CVE-2005-3962." This patch is applied by either the Debian team or Ubuntu team (not sure which one). I think the patch originated from http://www.cpan.org/modules/by-module/Compress/NWCLARK/sprintf-5.8.7.patch.
So you might not be wrong per-se but sprintf in versions of Perl without this patch certainly don't do what the manual says it should.
Cheers,
Matt |