[perl]メソッドの引数で受け取った配列データを直接編集したい
現在、業務でperlプログラムを書いてます。
perlを初めて2か月、プログラムは ほぼ初です。
よろしくおねがいします。
例えば以下のようなコードで、「sub_func」というメソッド内で「main」メソッド内の配列データを直接編集したいのですが、うまくいきません。
これは、引数で渡しているのは配列の「ポインタ」ではなく「リファレンス」であるため、「sub_func」というメソッド内で、新たに「array_ref」という配列の実態を作成してしまっているのだと認識しています。
そのため、「main」メソッドに戻ったタイミングではデータは元に戻ってしまうのだと思っています。
sub sub_func {
my ($self, $array_ref) = @_ ;
$array_ref = [4,5,6]; # returnはせずに、引数で指定したデータに格納したい
}
sub main {
my ($self) = @_ ;
# メソッドに渡すデータ
my $data = {
array => [1,2,3],
};
my $data2 = [1,2,3];
my @data3 = (1,2,3);
# メソッドの中で、$data->{array}を [4,5,6] に変えたいが・・・
$self->sub_func( $data->{array} );
$self->sub_func( $data2 );
$self->sub_func( \@data3 );
# この時点で、どれも [1,2,3] のまま
}
私の認識は間違っているのでしょうか??
また、どのようにすれば配列の要素を別のメソッド内で編集できるのでしょうか??
御助言をお願いします。
お礼
すごいですね、組み込みのクラスの中とか見れるんですね。 なんか感動しました! でも、インストールしようとしたら Error installing pry: ERROR: Failed to build gem native extension というメッセージがでて上手くいきませんでした・・・。 gemの使い方もう少し研究します、ありがとうございました。