SPUG: Perl oddity?

Colin Meyer cmeyer at helvella.org
Thu Jan 29 12:34:08 CST 2004


On Thu, Jan 29, 2004 at 02:19:00AM -0800, John W. Krahn wrote:
> On Wednesday 28 January 2004 21:06, Tim Maher wrote:

[...]

> > My guess is that localtime is "prototyped" as receiving a
> > scalar value, so in that ??? statement you're actually
> > passing the number of items in the array, which is 1, rather
> > than the epoch-seconds value (I'll leave the testing of that
> > hypothesis to you.)
> 
> You "guess"?!  :-)   It's easy enough to prove.
> 
> $ perl -le' sub context { print wantarray ? "LIST" : "SCALAR", " context" } localtime context'
> SCALAR context

Or you can use:

  perl -le'print prototype "CORE::localtime"'
  ;$

So, it optionally takes one scalar argument. Lots on prototypes in
'perldoc perlsub'.

... speaking of which, how many Perl programmers make use of prototypes
on a regular basis? It seems that most of my modules are OO, and method
calls in Perl ignore the prototype, so I end up seldomly using them.

-Colin.



More information about the spug-list mailing list