Christopher J Bottaro wrote:
>
> just for practice, i made a class BinaryTree. its just a blessed reference to
> a hash that contains two things: size and root. root gets assigned to a
> BinaryTree::Node which is just a bless reference containing: key, value,
> left, right.
>
> perl deallocates according to reference counts. so if i want "destory" my
> tree structure, i'd have to make sure there are no references to any of the
> BinaryTree::Node's, right? something like this...
>
> $my pr_clear;
^
You have the '$' in the wrong place, it should be:
my $pr_clear;
> $pr_clear = sub {
> my $p = shift(); # parent node
> my $w = shift(); # which child of the parent
> my $n = shift(); # child node
> if ($n != undef) {
You cannot use undef in a comparison, use the defined function to
determine if a scalar is defined or not.
if ( not defined $n ) {
> this->$pr_clear($n, "left", $n->left());
^
> this->$pr_clear($n, "right", $n->right());
^
> $p->$w(undef);
^
You have the '$' in the wrong place, it should be:
$this->pr_clear($n, "left", $n->left());
$this->pr_clear($n, "right", $n->right());
$p->w(undef);
> }
> }
>
> sub clear() {
> this->$pr_clear(this->{root}, "left", this->{root}->left());
^ ^
> this->$pr_clear(this->{root}, "right", this->{root}->right());
^ ^
> this->{root} = undef;
^
You have the '$' in the wrong place, it should be:
$this->pr_clear(this->{root}, "left", $this->{root}->left());
$this->pr_clear(this->{root}, "right",
$this->{root}->right());
$this->{root} = undef;
If you want to remove the key 'root' then use delete().
delete $this->{root};
> }
John
--
use Perl;
program
fulfillment
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>