>>>>> "sw" == shawn wilson <[email protected]> writes:
sw> i ran across a peace of interesting code:
sw> my $writer = shift->(
sw> [ 200, [ "Content-type" => "text/plain" ], $s ]
sw> );
first off, there is no OO anywhere in that code. all it is is a
dereference of a code reference passed in to a sub.
sw> so, if i understand this correctly, this would be the same as
sw> my $writer = sub {
sw> my $a = shift;
sw> my $thing = sub {
sw> my $subthing = $writer->{ $a };
sw> return [ 200, [ "Content-type" => "text/plain" ], $subthing ];
sw> }
sw> }
not even close. there is no anon sub being created in the original code,
rather one is being passed in to the sub.
sw> ... or something like that. what is happening there, or how should i think
sw> about it? it seems like shift is returning $writer->[ $array ] maybe? i
sw> think using shift as a method like that is messing me up.
there is NO method there so it isn't a method call. if you have a code
reference (to a regular sub) in $code then you dereference it like this:
$code->( args ... ) ;
all the code does is skip assigning the code ref from @_ into $code. i
generally avoid that style of directly using the shift in an
expression. it is better style to store it in a variable so you have
some extra names to describe what that value is.
uri
--
Uri Guttman ------ [email protected] -------- http://www.sysarch.com --
----- Perl Code Review , Architecture, Development, Training, Support ------
--------- Gourmet Hot Cocoa Mix ---- http://bestfriendscocoa.com ---------
--
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
http://learn.perl.org/