in reply to sprintf( @_ ) doesn't do what I want!

As odd as this may seem, it nevertheless works:

sprintf($_[0], @_[1..$#_])

...or...

sprintf(shift, @_)

perlsub explains prototypes, and that's what's going on here. You can see the prototype for sprintf like this:

perl -E 'say prototype(q{CORE::sprintf})' $@

Dave