my @x; sub foo :lvalue { my ($cond, $i) = @_; if ($cond) { return $x[$i]; } else { return $x[0]; } } #### my @x; sub foo :lvalue { my ($cond, $i) = @_; my $lvalue; if ($cond) { $lvalue = \$x[$i]; } else { $lvalue = \$x[0]; } $$lvalue; } #### my @x; sub foo :lvalue { my ($cond, $i) = @_; my $lvalue; ($cond) ? $x[$i] : $x[0]; } #### our @fields; BEGIN { @fields=qw(one two three) }