Beefy Boxes and Bandwidth Generously Provided by pair Networks
Problems? Is your data what you think it is?
 
PerlMonks  

Re^5: Find pieces of text in a file enclosed by `@` and replace the inside

by bart (Canon)
on Mar 12, 2013 at 21:08 UTC ( #1023051=note: print w/ replies, xml ) Need Help??


in reply to Re^4: 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, there are several options.

  • Use a different set of delimiters to mark your sections something that cannot occur in real live data, as opposed to using "@" for a delimiter.
  • Have strict rules about what can be between "@", for example: allow just letters. That way you can safely distinguish between an email address and a marked section, as both parts of an email address will most likely either contain non-word characters, or you write at least one non-letter character right right next to it, you probably won't ever write an email address touching another word.
  • Find a way to escape the "@" character, for example "\@" could represent a "@", but then you need to escape the backslash too: "\\". Or, and this is possibly simpler: let "@@" represent a single "@". Ooh, I like that.


Comment on Re^5: Find pieces of text in a file enclosed by `@` and replace the inside
Replies are listed 'Best First'.
Re^6: Find pieces of text in a file enclosed by `@` and replace the inside
by kluther (Novice) on Mar 29, 2013 at 05:16 UTC
    Hi Bart, sorry for my late response. But can you show me how to do the option with "@@"? Thanks a lot!
      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.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1023051]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others cooling their heels in the Monastery: (19)
As of 2015-07-28 20:45 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (258 votes), past polls