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

Reply via email to