in reply to if (UNIVERSAL::isa($r, ref $l))

... and while we are at it, I noticed a different small issue with the article.

Towards the end, in the subs to_string and to_num it reads

sub to_string { my $self = shift; return "$_->{num}/$_->{den}"; } sub to_num { my $self = shift; return $_{num}/$_->{den};
while that should be (as it is in the cpan version 1.02)
sub to_string { my $self = shift; return "$self->{num}/$self->{den}"; } sub to_num { my $self = shift; return $self->{num} / $self->{den}; }

-- Hofmator