Here's the whole function that contains that line, with line 150 commented like "# LINE 150":
sub release
{
my ($self, $force) = @_;
my (@tofree);
return($self) unless(ref $self);
# delete stuff that we know we can, here
if ($force)
{
foreach my $key (keys %{$self})
{
push(@tofree,$self->{$key});
$self->{$key}=undef;
delete($self->{$key});
}
}
else
{ @tofree = map { delete $self->{$_} } keys %{$self}; }
while (my $item = shift @tofree)
{
my $ref = ref($item);
if (UNIVERSAL::can($item, 'release')) # LINE 150
{ $item->release($force); }
elsif ($ref eq 'ARRAY')
{ push( @tofree, @{$item} ); }
elsif (UNIVERSAL::isa($ref, 'HASH'))
{ release($item, $force); }
}
# check that everything has gone - it better had!
foreach my $key (keys %{$self})
{
# warn ref($self) . " still has '$key' key left after release.
+\n";
$self->{$key}=undef;
delete($self->{$key});
}
}
|