From: Robin <[EMAIL PROTECTED]>
> On Thursday 15 July 2004 07:08, Randal L. Schwartz wrote:
> > Yes. Don't use prototypes.
> Why not? And is there another way to ensure things like lists are
> passed as references?
You can't pass a list by reference, you can only pass an ARRAY by
reference!
See
perldoc -q "What is the difference between a list and an array"
You can allways call the procedure like this:
the_sub( [EMAIL PROTECTED], [EMAIL PROTECTED]);
and it's usualy clearer.
Also if you declare the function with the prototype you migh be
restricting its ussage more than you think.
sub foo (\@) {
my $ary = shift;
print "The array is ( '" . join("', '", @$ary) . "')\n";
}
@a = (1,2,3);
foo(@a);
looks right yeah? And now call the subroutine with an anonymour
array, without using any variable.
...
...
...
foo( @{[1,2,3]} );
Nice isn't it?
I do not say do not ever use prototypes, but do be carefull and use
them only if you "must".
Here are some links:
Prototyping Subs: Good,Bad,Indifferent - on PerlMonks
http://www.perlmonks.org/index.pl?node_id=288036
FMTYEWTK about Prototypes by Tom Christiansen
http://www.perl.com/pub/a/language/misc/fmproto.html
(This seems to be broken at the moment, I've already sent an email
to the perl.com admins.
Jenda
===== [EMAIL PROTECTED] === http://Jenda.Krynicky.cz =====
When it comes to wine, women and song, wizards are allowed
to get drunk and croon as much as they like.
-- Terry Pratchett in Sourcery
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>