http://www.perlmonks.org?node_id=375414


in reply to Golf: Fix de facto HTML comments

This solution seems too straight-forward and obvious, so I feel like I must have missed an important detail...

51 characters:

#2345678 1 2345678 2 2345678 3 2345678 4 2345678 5 s/<!--(.*?)-->/(my$x=$1)=~s!--!-¬!g;"<!--$x-->"/egs

Update: I did miss an important detail, so here's a revision (62 chars):

This failed with <!----->, not changing it (now there's an -- after the opening <!--, which is not the final one (though it overlaps with the final one)). Here's a fix:

#2345678 1 2345678 2 2345678 3 2345678 4 2345678 5 2345678 6 12 s/<!--(.*?)-->/(my$x=$1)=~s!--!-¬!g;$x=~s!-$!¬!;"<!--$x-->"/egs
That's 62 chars. This seems to fix that problem. And I can't think of a case where it would alter more characters than necessary. We shall see though.. I tried doing something fancy with zero-width assertions, but couldn't get anything shorter than this.

blokhead