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


in reply to Re^6: Find pieces of text in a file enclosed by `@` and replace the inside
in thread Find pieces of text in a file enclosed by `@` and replace the inside

Well I was thinking something along these lines:
s<\@(.*?)\@>{ length $1 ? subst($1) : '@' }ge;
Whether this is sufficient depends on whether the string it matches and replaces, must be able to contain a '@'. Well, you can write strings like "blah blah @foo@@@@bar@ blah" where both "foo" and "bar will get the special treatment, and the "@@" in the middle of the quadruple will be replaced by a single "@". I guess that will probably suffice.