#!/usr/bin/perl use Carp; my $ret; undef $ret; ($ret) ||= foo(); warn "ret is $ret"; undef $ret; ($ret) = $ret || foo(); warn "ret is $ret"; sub foo { carp "Want " . (wantarray ? "array" : "scalar"); (1,2); } #### Want scalar at t3 line 17 main::foo() called at t3 line 8 ret is 2 at t3 line 9. Want array at t3 line 17 main::foo() called at t3 line 12 ret is 1 at t3 line 13.