如何使这个嵌套循环继续在perl?

nie*_*ang 3 perl hash

这是我的代码:

#!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 
Run Code Online (Sandbox Code Playgroud)

我打算用散列中存在的相应值替换所有数字.但它输出:

a2a2a2
aaaaa
222
Hit any key to close this window...
Run Code Online (Sandbox Code Playgroud)

为什么foreach循环只运行一次?谁能为我解释一下?我应该如何更改代码?我希望它输出:

ababab
aaaaa
bbb
Run Code Online (Sandbox Code Playgroud)

提前致谢.

Ben*_*enj 5

该之所以foreach环似乎只运行一次是因为你从阅读<DATA>的一行的时间.第二次循环遍历外部循环时,没有更多数据可以从内循环中的数据中读取.相反,为什么不首先将所有内容都读<DATA>入列表:

@mylist = <DATA>

然后在内循环中遍历此列表.