#!/usr/bin/env perl use Modern::Perl; sub rpow { my ($p, $q) = $_[0] =~ /(.)(.*)/; return $_[0] ? map { ($p.$_, $_) } rpow ($q) : ''; } say join ("\n", rpow 'ABCD');