I thought that if we got away from using the refaddr, we would solve the problem. Won't the following methodology work?
Here is my attempt to create an alternate ID. I don't want to post the whole program inline; here are the changes.
11c11,15
< *ID = \&Scalar::Util::refaddr;
---
> sub ID ($) {
> my ($self) = @_;
>
> return ref($self) ? $$self : '';
> }
28c32
< *{ $caller . '::ident' } = \&Scalar::Util::refaddr;
---
> *{ $caller . '::ident' } = \&Class::Std::ID;
360a365,366
> my $count = 0;
>
370a377
> $$new_obj = $count++;
512c519,523
< *ID = \&Scalar::Util::refaddr;
---
> sub ID ($) {
> my ($self) = @_;
>
> return ref($self) ? $$self : '';
> }
519a531
> $$new_obj = $count++;
We won't care if the address of the anonymous hash changes; that is not the key. We have an alternate key that stays in tact. This is my first stab at it.
When I made tried this on my Mac, I barfed on the coercions test.
% make test
PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_h
+arness(0, 'blib/lib', 'blib/arch')" t/*.t
t/00.load.........# Testing Class::Std v0.0.4
t/00.load.........ok
+
t/access..........ok
+
t/automethod......ok
+
t/coercions.......Deep recursion on anonymous subroutine at /Users/esh
+arris/.cpan/build/Class-Std-0.0.4/blib/lib/Class/Std.pm line 14.
Deep recursion on subroutine "Class::Std::ID" at (eval 26) line 3.
t/coercions.......dubious
+
Test returned status 0 (wstat 11, 0xb)
t/cumulative......ok
+
t/dump............ok
+
t/pod-coverage....skipped
all skipped: Test::Pod::Coverage 1.04 required for testing POD
+ coverage
t/pod.............skipped
all skipped: Test::Pod 1.14 required for testing POD
t/simple..........ok
+
Failed Test Stat Wstat Total Fail Failed List of Failed
----------------------------------------------------------------------
+---------
t/coercions.t 0 11 ?? ?? % ??
2 tests skipped.
Failed 1/9 test scripts, 88.89% okay. 0/152 subtests failed, 100.00% o
+kay.
make: *** [test_dynamic] Error 2
Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
Read Where should I post X? if you're not absolutely sure you're posting in the right place.
Please read these before you post! —
Posts may use any of the Perl Monks Approved HTML tags:
- a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
Outside of code tags, you may need to use entities for some characters:
| |
For: |
|
Use: |
| & | | & |
| < | | < |
| > | | > |
| [ | | [ |
| ] | | ] |
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.
|
|