#!/usr/bin/perl -w
use diagnostics;
use strict;
{
my $cache = [Foo->new];
sub access_cache {
return @$cache;
}
}
foreach (&access_cache()) {
print "before: ", ref($_), "\n";
print "object: ", $_, "\n";
print "after: ", ref($_), "\n";
print "\n";
}
foreach (&access_cache()) {
print "before: ", ref($_), "\n";
print "object: ", $_, "\n";
print "after: ", ref($_), "\n";
print "\n";
}
package Foo;
sub new {bless [], $_[0]};
use overload '""' => sub {$_[0] = Bar->new; return $_[0]->[0]};
package Bar;
sub new {bless ['barbar'], $_[0]};
use overload '""' => sub {return $_[0]->[0]};
####
before: Foo
object: barbar
after: Bar
before: Foo
object: barbar
after: Bar
####
before: Foo
object: barbar
after: Bar
before: Bar
object: barbar
after: Bar