$japh='AJPJAjajHAJPHAJaaJPAjJajAJaaJPAJHJAjJAjaJHPAJhaAJAJPJAJaaJPAjJAJpaaaJHaAJ'; $japh=~s/$_/uc($_ x2)/eg for(split(//,'japh')); print join(' ',reverse map{ucfirst lc}split('@',join('',map{split(//); chr(eval join'+',map{index('JAPH',shift(@_))<<($_*2)}map{index('JAPH',$_)}reverse split(//,'JAPH'))}$japh=~m!(....)!g)));