forで配列を読み取っている時に配列を一つ追加したいのですが誤作動します。
一方は成功し一方は失敗します。内部でどう動いているのでしょうか?また、良いコードはありますか?
my @array = (1,2,4,5);
for(@array){
if(m/2/){
# @array = (@array,3);
push (@array,3);
}
print ; # 12453と表示される
}
exit;
#こちらは無限ループになる。本当にやりたいのはこちら。
my @array = (1,2,4,5);
for(@array){
if(m/2/){
# @array = (3,@array);
unshift (@array,3);
}
print ; # 12345と表示させたい
}
unshift関数 - 配列/リスト - Perl関数のリファレンス
unshift(ARRAY, LIST)
配列の先頭にリストを追加します。
パラメータ:
ARRAY 対象の配列
LIST 追加するリスト
戻り値:
リストを追加後の配列の要素数
要素数をarrayに代入しちゃダメでしょう。
unshift関数 - 配列/リスト - Perl関数のリファレンス
unshift(ARRAY, LIST)
配列の先頭にリストを追加します。
パラメータ:
ARRAY 対象の配列
LIST 追加するリスト
戻り値:
リストを追加後の配列の要素数
要素数をarrayに代入しちゃダメでしょう。
あ、すみません。
他の方式を書いた物が残っていました。修正しました。
ただ、配列の先頭へ入れてしまうため、いずれにしてもこれではダメですね。
あ、すみません。
2017/10/01 21:53:22他の方式を書いた物が残っていました。修正しました。
ただ、配列の先頭へ入れてしまうため、いずれにしてもこれではダメですね。