次の Perl コードは無限ループに陥ります。each
サブルーチン呼び出し後に自分自身をリセットするようです。どうしてこんなことに?
#!/usr/bin/perl
use warnings;
use strict;
my %h = ( "a" => "b" );
while ( my ($x, $y) = each %h ) {
&do_something( \%h );
}
sub do_something(){
my %tmp = %{$_[0]};
}
興味深いことに、これは機能します:
while ( my ($x, $y) = each %h ) {
&do_something( \%h );
}
sub do_something(){
}
これはしませんが:
while ( my ($x, $y) = each %h ) {
&do_something( %h );
}
sub do_something(){
}