>perl -E"sub mk { my $x=$_[0]; sub { $x } } $x=mk('a'); $y=mk('b'); say $x->(),$y->()" ab #### # The "=" is a scalar assignment operator, so: # - f() is evaluated in scalar context. # - The assignment returns $x. my $x = f(); # The "=" is a list assignment operator, so: # - f() is evaluated in list context. # - The assignment returns ($x) in list context, or # - the number of items returned by f() in scalar context. my ($x) = f();