in reply to What should be returned in scalar context?
One thing which I have been meaning to do, but as usual never quite found enough tuits for, was write Sub::Context. With this module, subroutines with context attributes would be expected to return an array or list, but in scalar context would automagically behave as the context attribute specifies without the programmer being forced to write the code for every case.
use Sub::Context qw/arrayref first iterator custom/; sub foo : arrayref { # return wantarray ? @results : \@results; } sub bar : first { # return wantarray ? @results : $results[0]; } sub baz : iterator { # return wantarray ? @results : get_iterator(@results); } sub quux : custom { # user-defined return behavior? }
I've had the sticky note for this module on my desk for about three months now. This seems like as good a place as any for asking for suggestions on the interface and behavior.
Update: chromatic just reminded me that not only is there a module named Sub::Context, which he wrote (and which I've seen, darn it), it does what I was looking for, but in a somewhat different fashion.
Cheers,
Ovid
New address of my CGI Course.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Sub::Context (Re: ... returned in scalar context)
by theorbtwo (Prior) on Dec 08, 2003 at 05:06 UTC |