in reply to sprintf minor problem

print sprintf("%5.5d", 1) . "hello\n";
The second is calling the print function with the results of the sprintf, and then trying to '.' the result of the print fun with "hello\n", throwing away the result.

(The first one calls sprintf in list context, and makes it a scalar for an argument to print by prepending ''.)

C.