sub rec_reverse { return $_[0] if $_[0] eq ''; my( $char, $smaller_problem ) = $_[0] =~ m/\A(.)(.*)\z/s; return rec_reverse( $smaller_problem ) . $char; } print rec_reverse( "Hello\nworld." ), "\n";