in reply to u+ fails to force scalar context to empty list assignment: +( () = ... )
#!/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
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: u+ fails to force scalar context to empty list assignment: +( () = ... )
by ikegami (Patriarch) on Mar 12, 2019 at 00:19 UTC | |
by LanX (Saint) on Mar 12, 2019 at 02:32 UTC | |
by ikegami (Patriarch) on Mar 12, 2019 at 06:16 UTC | |
by LanX (Saint) on Mar 12, 2019 at 08:16 UTC |