$sum = 0; for ($i = 1; $i < 10; $i++) { $b = dec2bin($i); $l = int(length($b) / 2); print "$i, $b : " . substr($b,0,$l) . ", " . substr($b,-1 * $l) . "\n"; } for ($i = 1; $i < 1000000; $i++) { $m = int(length($i) / 2); if (substr($i,0,$m) == reverse(substr($i,-1 * $m))) { $b = dec2bin($i); $l = int(length($b) / 2); if (substr($b,0,$l) == reverse(substr($b,-1 * $l))) { print "$i, $b : " . substr($b,0,$l) . ", " . substr($b,-1 * $l) . "\n"; $sum = $sum + $i; } } } print "$sum\n"; ; exit; sub dec2bin { my $str = unpack("B32", pack("N", shift)); $str =~ s/^0+(?=\d)//; # otherwise you'll get leading zeros return $str; }