#!/usr/bin/perl use strict; use warnings; my $size = 18; my $n = 10 ** $size; my @number = 0; my $binary = 1 . 0 x 8192; for ( split //, $binary ) { my $carry = $_; for ( @number ) { $_ += $_ + $carry; $carry = int $_ / $n; $_ %= $n; } $carry and push @number, $carry; } s/0+(?=.)// for my $decimal = join '', map sprintf('%0*d', $size, $_), reverse @number; print "$decimal\n";