in reply to Prototyping Subs: Good,Bad,Indifferent
The only use I've had for a prototype in my career, was with the share() subroutine in my forks module. That subroutine should be passed a single scalar, array or hash, but receive the appropriate reference as the parameter (without flattening). Take this example:
will print something like:sub foo (\[$@%]) { print "received a $_[0]\n" } foo( $a ); foo( @a ); foo( %a );
received a SCALAR(0x107c84) received a ARRAY(0x107d44) received a HASH(0x107d68)Without the prototype this wouldn't work at all. I guess this was one of the neat features added in 5.8.0.
On the other hand, I know of people who use prototypes on subroutines that are intended to be called as methods purely for the documentational value.
Hope this helps.
Liz
|
|---|