※ ChatGPTを利用し、要約された質問です(原文:for文の中でのforeachの問題)
for文の中でのforeachの問題
このQ&Aのポイント
for文の中でのforeachを使ってテンプレートに数字を挿入する際、数字の部分が一定値(31)のままになってしまう問題が発生しています。どうしてでしょうか?
上記の質問では、テンプレート(##の部分に数字を31から0まで入れる)に対して、foreachを使って数字を挿入していますが、結果として数字の部分が一定値(31)のままになってしまいます。
初めに31で始まり、0まで減少するループを使ってテンプレートに数字を挿入していますが、どうしても数字が変化しない問題が発生しています。
[aaa]のようなテンプレートを読み込んで[aaa.out]のような記述を生成しようとして[aaa.pl]のような
記述をしたのですがどうしても数字の部分が一定値(31)のままになってしまいます。どうしてでしょうか?
※初歩的な質問で恐縮ですが、よろしくお願いします。
[aaa:テンプレート(##の部分に数字を31から0まで入れる)]
IOBUF_PCI33_3 AD##(
.I(AD_O[##]),
.O(AD_I[##])
);
---------------------------------------
[aaa.out:希望する出力]
IOBUF_PCI33_3 AD31(
.I(AD_O[31]),
.O(AD_I[31])
);
IOBUF_PCI33_3 AD30(
.I(AD_O[30]),
.O(AD_I[30])
);
...
IOBUF_PCI33_3 AD0(
.I(AD_O[0]),
.O(AD_I[0])
);
------------------------------------
[aaa.pl: 作成したperl]
#! /usr/local/bin/perl
@template = <>;
for($i=31; $i>=0; $i--){
foreach (@template){
s/##/$i/;
print $_;
}
}
------------------------------------
お礼
お礼が遅れましてすみません。 この方法でばっちりOKでした!! 原理がまだいまいちピンときていないのですが、会社に"Programming Perl"の本があるので、 foreachのところを復習しようと思います。 普通の参考書にはこのような内部処理的な話しはあまり出ていないと思われるのですが、何か参考書としてお勧めのもの をご存知でしたらアドバイス頂ければ幸いです。 また問題にぶち当たった時は宜しくお願いいたします。