$string = 'ShELoVeSMeshElOvEsmeNOtsHeloVeSMEShELOVESmeNOTShEloVesmESheLovesMenoTsHELovEsMESHelOVeSmEnotSHeLOVeSMESHElOvESMENotSHeLoVesmEShELovEsmENOTsHELOVEsmEsHELOveSMeNoTshELOVeSmesHElOVesmEnOTSheLOvEsMeshELoVESmEnoTSHELOvEsM'; @strings = $string =~ /\w{8}/g; for( @strings ){ @string = split //; $bit = ""; for( @string ){ if( 'a' lt $_ ){ $bit .= '1' } else{ $bit .= '0' } } $letter = pack "B8", $bit; print "string: $_ bit: $bit letter: $letter\n"; } #### string: ShELoVeS bit: 01001010 letter: J string: MeshElOv bit: 01110101 letter: u string: EsmeNOts bit: 01110011 letter: s string: HeloVeSM bit: 01110100 letter: t string: EShELOVE bit: 00100000 letter: ... #### $/ = q#(\w)# ; sub sig { print scalar reverse join ' ', @_ } sig map { s$\$/\$/$\$2\$1$g && $_ } split( ' ', ",erckha rlPe erthnoa stJu" );