>>12

sub hoge {
$_[1][0] = 0;
}

としてしまうと、サブルーチンから抜けたとき、データが破壊されてますよね?
サブルーチン内で変更するけど、抜けたら始めのデータと同じというようにしたいんです。