読者です 読者をやめる 読者になる 読者になる

稲沢市よりお届けしてます。

Perlをはじめとしたプログラミング周りのあれこれについて。Perl界のモブキャラとして暗躍します(謎)。

やっと気づいたwhileとforeachの違い。

「whileループは入力を1行ずつ読んで実行していくんだよ。」
「foreachループは入力リストを一気に読んで実行していくんだよ。」

という教科書的なことは、
まさしく教科書『初めてのPerl』の"標準入力からの入力"のくだりで
知識として知ってました。

が、今回の改造の際に


foreach (@data){
my $target_url = $_ -> {url};
my $target_words = $_ -> {keywords};

のところを間違って


while (@data){
my $target_url = $_ -> {url};
my $target_words = $_ -> {keywords};

にして、コマンドプロンプトで実行したら
無限ループ?(エラーメッセージが終わり無く出続ける状態)になりました。


幸い「Ctrl + "C"」で抜けれることは知っていたので、
ウィンドウの右上の「×」を焦ってクリックするということはなかったのですが、
身にしみてわかりました・・・

「foreachはリストコンテキストで読み込むから、入力リストを一気に読み込むんだ」

という当たり前のことが。


お勉強だけしてちゃダメなんだなー、
と改めて感じちゃいました。