my $prod = Math::BigInt->new( 1 ); my %digits; $digits{ $_ } ++ for split m{}, $nVal->bstr(); $prod->bmul( $_ ) for map { $digits{ $_ } > 1 ? Math::BigInt->new( $_ )->bpow( $digits{ $_ } ) : $_ } keys %digits;