Thanks! I thought I'd used that before but perlop having several examples of m/\G.../g and no examples of s/\G...//g and no mention of \G in the s/// section combined to make me think maybe that was the problem (as I was posting -- writing up a problem always brings new solutions to mind, ya know).
I verified that this works on my version of Perl as well.
I'd been meaning to post this for a week and finally had a few minutes while waiting for stuff to compile. This response got me to take some time I didn't have to write up some test cases. I must have had an unseen bug in the code when I was testing before because it works fine now.
Thanks, blakem.
- tyeand the output:# my $len= 79; my $len= 9; # my $esc= '\e'; my $esc= '@'; my $eseq= qr[$esc[^a-zA-Z]*[a-zA-Z]]; my $char= qr[(?:$eseq)*[^$esc\n]]; my $nonsp= qr[(?:$eseq)*[^$esc\s]]; local( $/ )= ''; # Paragraph mode while( <DATA> ) { print "Wrapping:\n$_"; { local( $_ )= $_; s[(?:^|(?<=\s))((?:$char){1,$len}(?:$eseq)*)\s][$1\n]g; # print "Loose code1:\n$_"; s[(?:^|(?<=\s))((?:$nonsp){$len}(?:$eseq)*)(?=[^$esc\s])][$1\n +]g; print "Loose code:\n$_"; } s[(?:\G|^)((?:$char){1,$len}(?:$eseq)*)\s][$1\n]gm; # ^^^^ ^ # print "Tight code1:\n$_"; # vv s[(?:\G|(?<=\s))((?:$nonsp){$len}(?:$eseq)*)(?=[^$esc\s])][$1\n]g; print "Tight code:\n$_"; } __END__ @[0;7mCoruscate@[0m says this is a test of the line wrapping code @[0;7mtye@[0m says this is a test @[0;7mtye@[0m says ThisIsATestOfTheEmergencyBroadcastSystemIfThisHadBe +enAnActualEmergency... @[0;7mCoruscate@[0m says this is a test of the line wrapping code @[0;7mCoruscate@[0m says it works! @[0;7mtye@[0m says this is a test @[0;7mtye@[0m says ThisIsATestOfTheEmergencyBroadcastSystemIfThisHadBe +enAnActualEmergency... ThisIsATestOfTheEmergencyBroadcastSystemIfThisHadBeenAnActualEmergency +...
Wrapping: @[0;7mCoruscate@[0m says this is a test of the line wrapping code Loose code: @[0;7mCoruscate@[0m says this is a test of the line wrapping code Tight code: @[0;7mCoruscate@[0m says this is a test of the line wrapping code Wrapping: @[0;7mtye@[0m says this is a test Loose code: @[0;7mtye@[0m says this is a test Tight code: @[0;7mtye@[0m says this is a test Wrapping: @[0;7mtye@[0m says ThisIsATestOfTheEmergencyBroadcastSystemIfThisHadBe +enAnActualEmergency... Loose code: @[0;7mtye@[0m says ThisIsATe stOfTheEmergencyBroadcastSystemIfThisHadBeenAnActualEmergency... Tight code: @[0;7mtye@[0m says ThisIsATe stOfTheEm ergencyBr oadcastSy stemIfThi sHadBeenA nActualEm ergency.. . Wrapping: @[0;7mCoruscate@[0m says this is a test of the line wrapping code @[0;7mCoruscate@[0m says it works! @[0;7mtye@[0m says this is a test @[0;7mtye@[0m says ThisIsATestOfTheEmergencyBroadcastSystemIfThisHadBe +enAnActualEmergency... Loose code: @[0;7mCoruscate@[0m says this is a test of the line wrapping code @[0;7mCoruscate@[0m says it works! @[0;7mtye@[0m says this is a test @[0;7mtye@[0m says ThisIsATe stOfTheEmergencyBroadcastSystemIfThisHadBeenAnActualEmergency... Tight code: @[0;7mCoruscate@[0m says this is a test of the line wrapping code @[0;7mCoruscate@[0m says it works! @[0;7mtye@[0m says this is a test @[0;7mtye@[0m says ThisIsATe stOfTheEm ergencyBr oadcastSy stemIfThi sHadBeenA nActualEm ergency.. . Wrapping: ThisIsATestOfTheEmergencyBroadcastSystemIfThisHadBeenAnActualEmergency +... Loose code: ThisIsATe stOfTheEmergencyBroadcastSystemIfThisHadBeenAnActualEmergency... Tight code: ThisIsATe stOfTheEm ergencyBr oadcastSy stemIfThi sHadBeenA nActualEm ergency.. .
In reply to Re^2: No \G for s///g ? (oops)
by tye
in thread No \G for s///g ?
by tye
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |