#!/usr/bin/perluseList::Util'sum';usestrict;usewarnings;subis_happy{my$n=shift;my(%seen,$happy);$happy=sub{my$n=shift;$n==1?1:$seen{$n}++?0:&$happy(sum(map$_**2,$n=~/\d/g));};&$happy($n);}my($want,$count,$n)=(8,0,0);is_happy(++$n)andprint"Found happy number ".++$count.": $n\n"while$count<$want;