#!/usr/bin/perl use strict; use warnings; my ($a, @a) = (""); sub foo : lvalue { print wantarray ? "LIST: " : "SCALAR: "; wantarray ? @a : $a } foo () = 1; print "\$a = $a; \@a = [@a]\n"; (foo ()) = 2; print "\$a = $a; \@a = [@a]\n"; foo () += 3; print "\$a = $a; \@a = [@a]\n"; (foo ()) += 4; print "\$a = $a; \@a = [@a]\n"; __END__ SCALAR: $a = 1; @a = [] LIST: $a = 1; @a = [2] SCALAR: $a = 4; @a = [2] SCALAR: $a = 8; @a = [2]