やっと気づいた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はリストコンテキストで読み込むから、入力リストを一気に読み込むんだ」
という当たり前のことが。
お勉強だけしてちゃダメなんだなー、
と改めて感じちゃいました。