ある関数内からスコープ外にある無名ハッシュの値を
操作したいのですがうまくいきません

my $p = { data => 1 };

&abc($p);
print "$p->{data}\n";

sub abc {
my $p = shift;
$p->{data} = 2;
}

↑のようにやってみたのですがなぜかダメでした
再帰処理がしたいので関数内から直接変数の値をいじることはできません