develooper Front page | perl.beginners | Postings from September 2009

Re: Strange Data space wipe out with hashes

Thread Previous
From:
Shawn H Corey
Date:
September 17, 2009 05:43
Subject:
Re: Strange Data space wipe out with hashes
Message ID:
4AB22ECF.1020005@gmail.com
Jerry Rocteur wrote:
> Hi,
> 
> I came across this problem and thought I'd run it by the list so that perhaps someone can explain to me what is going on
> 
> Given a script with the following hash definition
> 
> #!/usr/bin/perl
> 
> use warnings;
> use strict;
> 
> my %sib_master_hoa  = (
>         XXXX            => [ 'XXXX <type>' ] ,
>         XXXX_ERSALL     => [ 'XXXX <type>', 'ERS CRCODOSS <type>', 'ERS ENVDOSS <type>', 'ERS ENVVAL <type>' ],
>         XXXX_ERSOTHERS  => [ 'XXXX <type>', 'ERS CRCODOSS <type>', 'ERS ENVVAL <type>' ],
> );
> 
> sub AddGroup {
>     my ($sib_user, $sib_profile, $sib_sibprofx) = @_;
>     #
>     for my $profile ( @{ $sib_master_hoa{$sib_profile}  } ) {

     for my key ( @{ $sib_master_hoa{$sib_profile}  } ) {
           my $profile = $key;

# See `perldoc perlsyn` and search for /Foreach Loops/;

>         $profile =~ s/<type>/$sib_sibprofx/g;
>         print  "-A $sib_user -g $profile\n";
>     }
> 
> }                                                                                                                #
> #  Main             MAIN                                                                                           #
> 
> AddGroup("jerry","XXXX","ONE");
> AddGroup("laurence","XXXX","TWO");
> AddGroup("ralf","XXXX_ERSALL","ONE");
> AddGroup("randal","XXXX_ERSALL","TWO")
> #EOF

__END__

> 
> The output I get is:
> 
> -A jerry -g XXXX ONE
> -A laurence -g XXXX ONE
> -A ralf -g XXXX ONE
> -A ralf -g ERS CRCODOSS ONE
> -A ralf -g ERS ENVDOSS ONE
> -A ralf -g ERS ENVVAL ONE
> -A randal -g XXXX ONE
> -A randal -g ERS CRCODOSS ONE
> -A randal -g ERS ENVDOSS ONE
> -A randal -g ERS ENVVAL ONE
> 
> The values in the array in the hash are being changed but not by me ?
> 
> I've run this on  perl, v5.8.0 built for PA-RISC1.1-thread-multi and  perl, v5.6.1 built for x86_64-linux with the
> same result.
> 
> If I define the hash inside the function I don't get the problem but I'm still confused about what is going on. I've
> never seen anywhere yet that I can't define this kind of hash globally. This of course does not mean no one has said
> it.
> 
> Thanks in advance for any ideas.

You're welcome :)


-- 
Just my 0.00000002 million dollars worth,
   Shawn

Programming is as much about organization and communication
as it is about coding.

I like Perl; it's the only language where you can bless your
thingy.

Thread Previous


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About