use Quantum::Entanglement; my ($foo, $bar, @foo); @foo = qw(one two three); $foo = entangle((1) x @foo); sub foo {my $state = $_[0]; return ${$_[1]}[$state]} $bar = p_func('foo', $foo, \@foo); if ($bar eq 'one') { .... }