#!/usr/bin/perl -w use warnings; use strict; # -------------------- # force context # -------------------- sub VOID (&) { print "VOID:\t"; $_[0]->(); return; } sub LIST (&) { print "LIST:\t"; () = $_[0]->(); return; } sub SCALAR (&) { print "SCALAR:\t"; scalar $_[0]->(); return; } # -------------------- # tests # -------------------- sub ctxt { unless (defined wantarray) { print "is void\n"; } elsif (wantarray) { print "is list\n"; } else { print "is scalar\n"; } } SCALAR { ctxt }; SCALAR { +(ctxt) }; # u+ no effect LIST { ctxt }; LIST { +(ctxt) }; # u+ no effect VOID { ctxt }; VOID { +(ctxt) };; # u+ no effect # BUT LIST { 0+(ctxt) }; # forcing scalar context
SCALAR: is scalar SCALAR: is scalar LIST: is list LIST: is list VOID: is void VOID: is void LIST: is scalar
(code stolen from older post)
Cheers Rolf
(addicted to the Perl Programming Language :)
Wikisyntax for the Monastery
FootballPerl is like chess, only without the dice
In reply to Re: u+ fails to force scalar context to empty list assignment: +( () = ... )
by LanX
in thread u+ fails to force scalar context to empty list assignment: +( () = ... )
by rsFalse
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |