>I guess my question is: aren't these two equal statements?
>
> my $hash=\%tmpEntry;
> my $hash={ %tmpEntry };
>
>This is what I get from the command line:
No, they're not the same. See below:
-------=======+++++++++++++=======-------
my $hash = \%tmpEntry;
#creates a new scalar variable that is
#a reference to %tmpEntry;
-------=======+++++++++++++=======-------
my $hash = { %tmpEntry };
#creates a new, empty, anonymous hash and inserts
#the keys and values of %tmpEntry into it. Then
#it creates a new scalar variable that is a
#reference to the anonymous hash.
-------=======+++++++++++++=======-------
-----Original Message-----
From: Shawn [mailto:[EMAIL PROTECTED]]
Sent: Friday, July 12, 2002 3:13 PM
To: [EMAIL PROTECTED]; Craig Moynes/Markham/IBM
Cc: [EMAIL PROTECTED]
Subject: Re: anonymous reference problems
Hey Jeff,
> >I have a loop, each iteration through the loop the hash %tmpEntry gets a
> >new set of values. And each iteration through the loop I place this hash
> >into another hash, like so:
> >
> >[snip]
> > print "Added entry.\n";
> >$oncall{$tmpEntry{'StartDate'}} = \%tmpEntry;
> >[snip]
> >
> >tmpEntry is defined outside the loop, because I need to handle the last
> >case outside of the loop. This doesn't work, all the entries end up
> >being the same, because of the reference to the memory location.
>
> You'll need to use { %tmpEntry } then, instead of \%tmpEntry.
Can you explain the difference between the anonymous hash and the referenced
hash, and why it would make a difference here?
Is it because the anonymous scalar reference does not keep the same memory
space?
I guess my question is: aren't these two equal statements?
my $hash=\%tmpEntry;
my $hash={ %tmpEntry };
This is what I get from the command line:
>perl -e "%hash=(1=>'one',2=>'two'); my $hash=\%hash; print $hash,qq~\n~;
$hash={%hash}; print $hash,qq~\n~;"
HASH(0x1ac2db8)
HASH(0x1acf150)
>perl -e "%hash=(1=>'one',2=>'two'); my $hash=\%hash; print %$hash,qq~\n~;
$hash={%hash}; print %$hash,qq~\n~;"
1one2two
1one2two
Shawn
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]