这是我的代码:
#!perl -w
use strict;
my %hash = (
    1 => "a",
    2 => "b",
);
foreach my $num ( keys %hash ) {
    while (<DATA>) {
        s/$num/$hash{$num}/g;
        print;
    }
}
__DATA__
121212
11111
222 
我打算用散列中存在的相应值替换所有数字.但它输出:
a2a2a2
aaaaa
222
Hit any key to close this window...
为什么foreach循环只运行一次?谁能为我解释一下?我应该如何更改代码?我希望它输出:
ababab
aaaaa
bbb
提前致谢.
该之所以foreach环似乎只运行一次是因为你从阅读<DATA>的一行的时间.第二次循环遍历外部循环时,没有更多数据可以从内循环中的数据中读取.相反,为什么不首先将所有内容都读<DATA>入列表:
@mylist = <DATA>
然后在内循环中遍历此列表.