人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

perlのプログラムが誤作動します。
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と表示させたい
}


●質問者: 匿名質問者
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● 匿名回答1号
ベストアンサー

unshift関数 - 配列/リスト - Perl関数のリファレンス

unshift(ARRAY, LIST)

配列の先頭にリストを追加します。

パラメータ:
ARRAY 対象の配列
LIST 追加するリスト
戻り値:
リストを追加後の配列の要素数

要素数をarrayに代入しちゃダメでしょう。


匿名質問者さんのコメント
あ、すみません。 他の方式を書いた物が残っていました。修正しました。 ただ、配列の先頭へ入れてしまうため、いずれにしてもこれではダメですね。

関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ