in reply to s!!! vs. s///

There is no real difference. The substitution op can take nearly any character as delimiter. See perlop for the rules concerning that.

The reason your s/// fails is that you have an additional slash in the substitution string. Backwhack it (escape with \ ) to make that version work.

s/(^\d+[.]\s.+)/<h1>$1<\/h1>/g ; # ^

After Compline,
Zaxo