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?
> 
> Steve
> 
> 

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/;
  }
}


-- 
__END__

Just my 0.00000002 million dollars worth,
   --- Shawn

"For the things we have to learn before we can do them, we learn by doing them."
  Aristotle

* Perl tutorials at http://perlmonks.org/?node=Tutorials
* A searchable perldoc is at http://perldoc.perl.org/



-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>


Reply via email to