Ran this on win2k with activestate build 630 and on Compaq TRU64 with
perl 5.6.0 and see no corruption. Might want to upgrade...
Has3
Christopher Humphries wrote:
>Can anyone shed light on this problem?
>
>I am using ActiveState's Perl Build 522 on Windows 2000.
>
>I noticed some strange behaviour with a hash whilst writing a subroutine.
>
>What happens is that if I pass a hash by reference to a subroutine, traverse
>that hash using a while() loop, and return in the middle of the loop, the
>hash is corrupted in some way.
>
>I have written some example code that reproduces this same behaviour (see
>below):
>
>Run this from the command line:
>
>Set the $extra_loop variable to 0 or non-0 and observe the different
>behaviour.
>
>----------------------------------------------------------------------------
>-----------------------
>#!/usr/bin/perl
>
> use Data::Dumper;
>
> print "\n";
> print "A Problem With Hash References?\n";
> print "\n";
> print "Try this with \$extra_loop set to 0 or non-0\n";
> print "\n";
>
> $extra_loop = 1;
>
>
> $hash =
> {
> 'key0' => 'value0',
> 'key1' => 'value1',
> 'key2' => 'value2',
> 'key3' => 'value3',
> };
>
>
> if( $extra_loop )
> {
> foreach my $key ( keys %{$hash} ) { my $value = ${$hash}{$key}; }
> }
>
> print "\n";
> print Dumper( $hash );
> print "\n";
>
>
> test( $hash );
>
>
> if( $extra_loop )
> {
> foreach my $key ( keys %{$hash} ) { my $value = ${$hash}{$key}; }
> }
>
> print "\n";
> print Dumper( $hash );
> print "\n";
>
> exit;
>
>sub test
>{
> while( my( $key, $value ) = each %{$hash} )
> {
> if( $value eq 'value1' )
> {
> return;
> }
> }
>}
>----------------------------------------------------------------------------
>-----------------------
>
>Is this a 522 problem? A Win2k problem? A general Perl problem?
>
>I would appreciate any thoughts and comments.
>
>Thanks,
>
>Chris Humphries
>
>
>_______________________________________________
>ActivePerl mailing list
>[EMAIL PROTECTED]
>http://listserv.ActiveState.com/mailman/listinfo/activeperl
>
>
>
>
>
_______________________________________________
ActivePerl mailing list
[EMAIL PROTECTED]
http://listserv.ActiveState.com/mailman/listinfo/activeperl