へーなるほど。知らなかった・・・。これはハマリやすそうな罠。勉強になるなぁ。

my @arr = (1, 2, 3, 4);
print "**@arr**\n";
foreach (@arr) { read_data() }
print "**@arr**\n";

sub read_data { print while (<DATA>) }

__DATA__
AAA
BBB

実行結果
**1 2 3 4**
**   **