delete の一般版というか、undef の削除した内容を返すような関数はあるのでしょうか?
スカラーの場合だと、こんな感じの関数で。

sub Del {
my $v = $_[0];
$_[0] = undef;
return $v;
}