in reply to Re^4: Prototype for constant items???
in thread Prototype for constant items???
The problem is, the scalar of an array IS just a plain old scalar. You can't expect to tell the difference between the size of an array (such as '3'), and a plain old number (such as '3'). And your function really shouldn't care how the caller came up with the parameter it passed you.
If you expect an integer from 1 to 5, and you are passed the scalar of an array that happens to have between 1 and 5 elements, that is hardly wrong. It may just be a fancy way of counting widgets.
Givesuse strict; use warnings; use Carp; use constant BAR => 3.14159265; my @list = ('p','i','e'); taster(BAR); taster(22/7); taster("constant"); taster(\@list); taster(@list); taster(scalar @list); sub taster { my $p1 = shift; carp "Hey, that's too many parameters!" if @_; print "Ref of $p1 is '".(ref $p1)."'\n"; }
Ref of 3.14159265 is '' Ref of 3.14285714285714 is '' Ref of constant is '' Ref of ARRAY(0x182af0c) is 'ARRAY' Hey, that's too many parameters! at test.pl line 18 main::taster('p', 'i', 'e') called at test.pl line 12 Ref of p is '' Ref of 3 is ''
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^6: Prototype for constant items???
by LanX (Saint) on Sep 26, 2009 at 00:48 UTC | |
by SuicideJunkie (Vicar) on Sep 28, 2009 at 13:53 UTC |