On Mon, Jul 07, 2008 at 10:09:37PM -0700, Larry Wall wrote: : So : : $x = nothing(); # = [] : @x = nothing(); # = () : %x = nothing(); # = () : if nothing() {...} # always false : $x = nothing()[0] # "Subscript out of range" failure
But note that binding the returned capture also fails: $x := nothing(); just as calling foo() without args can't bind to a sig with required params: sub foo ($x) {...} Binding to $x is more like looking for .[0], in other words. Note however that when you call foo(nothing()) you're really passing a Capture with 1 positional element, which contains the empty Capture returned by nothing(), so $x is presumably bound to [] by promotion of the empty list, just as foo(threeitems()) would bind an array of 3 elements. Larry