Front page | perl.perl5.porters |
Postings from July 2001
[ID 20010720.006] each() fails when passed a subroutine thatreturns a hashref
Thread Previous
From:
Dennis Moore
Date:
July 20, 2001 11:10
Subject:
[ID 20010720.006] each() fails when passed a subroutine thatreturns a hashref
Message ID:
200107201809.f6KI9bk45279@forbidden.dough.net
This is a bug report for perl from archon@forbidden.dough.net,
generated with the help of perlbug 1.26 running under perl 5.00503.
-----------------------------------------------------------------
[Please enter your report here]
When each() is passed a subroutine that returns a reference to a hash, it
causes an infinite loop. Tested on 5.00503 and 5.6.1.
sub makeref {
my $foo = {
bar => [1, 2, 3],
blah => [qw/a b c/],
};
return $foo;
}
# Output:
# bar - 1 2 3
# blah - a b c
my $blah = makeref();
while (my ($k, $v) = each %$blah) {
print "$k - @$v\n";
}
# Output (infinite loop):
# bar - 1 2 3
# bar - 1 2 3
# bar - 1 2 3
# ...
while (my ($k, $v) = each %{makeref()}) {
print "$k - @$v\n";
}
[Please do not change anything below this line]
-----------------------------------------------------------------
---
Site configuration information for perl 5.00503:
Configured by markm at Sun Mar 5 13:39:27 SAST 2000.
Summary of my perl5 (5.0 patchlevel 5 subversion 3) configuration:
Platform:
osname=freebsd, osvers=4.0-current, archname=i386-freebsd
uname='FreeBSD freefall.FreeBSD.org 4.0-current FreeBSD 4.0-current #0: $Date$'
hint=recommended, useposix=true, d_sigaction=define
usethreads=undef useperlio=undef d_sfio=undef
Compiler:
cc='cc', optimize='undef', gccversion=2.95.2 19991024 (release)
cppflags=''
ccflags =''
stdchar='char', d_stdstdio=undef, usevfork=true
intsize=4, longsize=4, ptrsize=4, doublesize=8
d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=12
alignbytes=4, usemymalloc=n, prototype=define
Linker and Libraries:
ld='cc', ldflags ='-Wl,-E -lperl -lm '
libpth=/usr/lib
libs=-lm -lc -lcrypt
libc=, so=so, useshrplib=true, libperl=libperl.so.3
Dynamic Linking:
dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags=' -Wl,-R/usr/lib'
cccdlflags='-DPIC -fpic', lddlflags='-Wl,-E -shared -lperl -lm '
Locally applied patches:
---
@INC for perl 5.00503:
/usr/libdata/perl/5.00503/mach
/usr/libdata/perl/5.00503
/usr/local/lib/perl5/site_perl/5.005/i386-freebsd
/usr/local/lib/perl5/site_perl/5.005
.
---
Environment for perl 5.00503:
HOME=/home/archon
LANG (unset)
LANGUAGE (unset)
LD_LIBRARY_PATH (unset)
LOGDIR (unset)
PATH=/home/archon/bin:/usr/bin:/bin:/usr/local/bin:/usr/X11R6/bin:/sbin:/usr/sbin:/usr/local/sbin
PERL_BADLANG (unset)
SHELL=/usr/local/bin/zsh
Thread Previous