my ($a, $b) = (10, 20); sub mysub : lvalue { $_[0] > 0 ? $a : $b } mysub(2) = 15; mysub(-1) = 9; printf "\$a: %d, \$b: %d, mysub(2): %d, mysub(-1): %d\n", $a, $b, mysub(2), mysub(-1);