[Omaha.pm] Class::Date - change once set
Jay Hannah
jay at jays.net
Fri Nov 11 06:35:25 PST 2005
On Nov 11, 2005, at 3:06 AM, Balázs Szabó (dLux) wrote:
>>> $x = $_[0];
>>
>> $x is created, a new obj in year 2000. (via clone() inside
>> Class::Date)
>
> Not correct. $_[0] is always points to the same object as $a, $_[1]
> always points to the same object as $b; In this case, we have a new
> object, $x, which is also points to the same as $a and $_[0];
Oh. At a glance inside the guts of your class and not knowing
"overload" well I thought Class::Date was doing operator overloading on
the assignment operator (=), invoking clone().
Now I've read up a little (perldoc overload) and may understand your
guts better. Your explanation above explains that the assigment above
is a vanilla Perl reference assignment, not some deep overloaded
magic...
This part of "perldoc overload" wigs me out:
> SPECIAL SYMBOLS FOR "use overload"
>
> ...
>
> Copy Constructor
>
> The value for "=" is a reference to a function with three
> arguments,
> i.e., it looks like the other values in "use overload".
> However, it
> does not overload the Perl assignment operator. This would go
> against
> Camel hair.
"would go against camel hair?" lol! Jay swoons w/ bemused
incomprehension. I thought NOTHING was sacred inside overload. -laugh-
Debugging your class objects always trips me up because of your (very
useful)
> use overload
> '""' => "string",
I'm used to debugging and seeing this:
DB<1> p $x
main=HASH(0x8d3a28)
But on your objects I get this:
DB<2> p $a
2000-11-11 00:00:00
So when I'm trying to understand what happens during/after an
assignment operation I fail. -grin- Now that I know there's no magic
going on I can understand it, but I won't know for sure when I'm
looking at it in the debugger.
Is there any way to get the "main=HASH(0x8d3a28)" to kick out on your
objects? (So I can SEEE if its the same obj or some new one?)
> So, it does not copy OBJECTS, it just increasing and decreasing
> reference counters to objects (since perl is a reference-counting
> language).
>
> Please see the perlobj and perlref (or perlreftut) manual to get what I
> had talked about.
Yes. I understand that default behavior. I thought Class::Date was
being sneakier than the default.
Thanks again for the help, you mad scientist genius you, -grin-
j
More information about the Omaha-pm
mailing list