sub add { my $current = 0; return '' unless @_ = grep length, @_; $current += substr $_, -1, 1, '' for @_; push @_, substr $current, 0, -1, '' if length $current > 1; return &add . $current; } #### $\ = "\n"; print add( '999999999999999999999997', '1', '2' ); print add( '9999999999', '9999999999', '999999999', '999', '9' ); # Next line is not -w safe: "Deep recursion"... grin. print add('9' x 5000, 1) eq '1' . ('0' x 5000) ? "Works" : "Doesn't work";