Mr. Shawn H. Corey wrote:
> On Sat, 2006-15-04 at 09:32 -0400, Steve Bertrand wrote:
>>Just out of curiosity, if you pass the hash, won't it create a 'copy' of
>>the original, manipulate it so that in the end you may have two
>>different versions (modifications) of the same hash?
>>
>>As I understand it, if you pass a href, then you actually work with the
>>original hash without making a copy? Do I understand this right?
>
> No, when Perl passes a hash, it converts it into a list. This list is
> disassociated with the hash. Any changes in the subroutine will not
> effect the original, unlike arrays:
>
> #!/usr/bin/perl
>
> use strict;
> use warnings;
>
> use Data::Dumper;
> $Data::Dumper::Sortkeys = 1;
>
> my @a = qw/ a b c d e f /;
> print Dumper [EMAIL PROTECTED];
> foo( @a );
> print Dumper [EMAIL PROTECTED];
>
> my %h = (
> a => 1,
> b => 2,
> c => 3,
> );
> print Dumper \%h;
> foo( %h );
> print Dumper \%h;
>
>
> sub foo {
> for ( @_ ){
> tr/aeiou/AEIOU/;
> }
> }
Actually it will effect the values of the hash but not the keys:
$ perl -le'
sub foo {
for ( @_ ) {
tr/a-z/A-Z/
}
}
my @a = qw/ a b c d e f g h i j /;
print "@a";
foo @a;
print "@a";
my %h = qw/ a b c d e f g h i j /;
print "@{[ %h ]}";
foo %h;
print "@{[ %h ]}";
'
a b c d e f g h i j
A B C D E F G H I J
e f c d a b g h i j
e F c D a B g H i J
John
--
use Perl;
program
fulfillment
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>