package Tree; sub next_inorder{ my $self = persist(); yield { $self->{left}->next_inorder } if $self->{left}; yield { $self }; yield { $self->{right}->next_inorder if } $self->{right}; yield_return undef; } # and later... while (my $node = $root->next_inorder()) { print $node->{data}; }