http://qs1969.pair.com?node_id=530430


in reply to Re: I heart Perl
in thread I heart Perl

I'm still puzzling through how japhy got from perlre's definition of (?{ ... }) to his use of it... but I can at least demonstrate what's happening.

I've simplified the string a little, as japhy's regex eliminates whitespace, but the meat of what's happening is this:

$string = 'ShELoVeSMeshElOvEsmeNOtsHeloVeSMEShELOVESmeNOTShEloVesmEShe +LovesMenoTsHELovEsMESHelOVeSmEnotSHeLOVeSMESHElOvESMENotSHeLoVesmEShE +LovEsmENOTsHELOVEsmEsHELOveSMeNoTshELOVeSmesHElOVesmEnOTSheLOvEsMeshE +LoVESmEnoTSHELOvEsM'; @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"; }

I've left the print statement so the reader can better see the translation.

Output (truncated):

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: ...

Very nice! This will certainly inspire me to wrap my head around this use of (?{...}) a bit better. Or a lot better :)



--chargrill
$/ = q#(\w)# ; sub sig { print scalar reverse join ' ', @_ } + sig map { s$\$/\$/$\$2\$1$g && $_ } split( ' ', ",erckha rlPe erthnoa stJu +" );