Package: perl
Version: 5.8.8-11
Severity: normal
warn without arguments inside a foreach { grep } loop
causes bad things to happen. Test program followed by output:
#!/usr/bin/perl -w
use strict;
# set to 1 to break or 0 to work
my $crash = 1;
my @list = qw/A b C/;
my @loh = map { { name => $_ } } @list;
foreach my $i (grep({ $_->{name} =~ m/[A-Z]/ } @loh)) {
# this should print out got HASH(...) twice - once for A and once for C
print "got $i\n";
# This shouldn't happen, but it does if $crash=1?!
die "$i is not a hash ref!" if (ref($i) ne 'HASH');
if ($crash) {
# this warn seems to screw with the thing that will be the next $i?
warn;
} else {
warn "false alarm, everything is OK";
}
}
What I get:
[EMAIL PROTECTED] perl broken.pl
got HASH(0x604160)
Warning: something's wrong at broken.pl line 17.
got 1
1 is not a hash ref! at broken.pl line 13.
[EMAIL PROTECTED]
what I expect:
[EMAIL PROTECTED] perl broken.pl
got HASH(0x604160)
Warning: something's wrong at broken.pl line 17.
got HASH(0x628a10)
Warning: something's wrong at broken.pl line 17.
[EMAIL PROTECTED]
-- System Information:
Debian Release: lenny/sid
APT prefers unstable
APT policy: (500, 'unstable')
Architecture: amd64 (x86_64)
Kernel: Linux 2.6.22-2-amd64 (SMP w/2 CPU cores)
Locale: LANG=C, LC_CTYPE=C (charmap=ANSI_X3.4-1968)
Shell: /bin/sh linked to /bin/bash
Versions of packages perl depends on:
ii libc6 2.6.1-6 GNU C Library: Shared libraries
pn libdb4.6 <none> (no description available)
ii libgdbm3 1.8.3-3 GNU dbm database routines (runtime
ii perl-base 5.8.8-11.1 The Pathologically Eclectic Rubbis
pn perl-modules <none> (no description available)
Versions of packages perl recommends:
ii perl-doc 5.8.8-11 Perl documentation
-- no debconf information
--
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]