Следующий код 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(){
}
()
- person Klaus   schedule 18.09.2012&foo
указывает Perl игнорировать прототипы, поэтому вы, возможно, не заметили этого раньше. Нет необходимости в&
. - person Schwern   schedule 18.09.2012Hash::SafeKeys
, который я придумал, когда У меня была такая же проблема - person mob   schedule 18.09.2012