in reply to Parsing Quark file with RegEx

I think you were confusing grep (used to filter) with map (used to transform):

@FILE2 = map { local $_=$_; s/(<Bz8>)([^ ]*)/$1$2<\$>/; $_ } @FILE;

You can also do the change in place:

s/(<Bz8>)([^ ]*)/$1$2<\$>/ foreach (@FILE);

or

foreach (@FILE) { s/(<Bz8>)([^ ]*)/$1$2<\$>/; }

Replies are listed 'Best First'.
Re^2: Parsing Quark file with RegEx
by ikegami (Patriarch) on Sep 03, 2004 at 21:09 UTC

    Maybe you need s/.../.../g instead of s/.../.../ to replace all instances in the line, instead of just the first?

    Tip: In the expression in the second half of s///, you only need to escape $, @, \ and / (or whatever your seperator is). For example:

    s/[0]{4}\n/<v2\.05><e1>\n\@Normal\=<Ps100t0h100z12k0b0cKf\"ArialMT\">\ +n\@Normal\=\[S\"\",\"Normal\",\"Normal\"\]<\*L\*h\"Standard\"\*kn0\*k +t0\*ra0\*rb0\*d0\*p\(0,0,0,0,0,0,g,\"U\.S\. English\"\)>\n\@\$\:<\*J\ +*p\(9,\-9,0,9,0,0,g,\"U\.S\. English\"\)><z8f\"Helvetica\">\n/;

    and

    s/[0]{4}\n/<v2.05><e1>\n\@Normal=<Ps100t0h100z12k0b0cKf"ArialMT">\n\@N +ormal=[S"","Normal","Normal"]<*L*h"Standard"*kn0*kt0*ra0*rb0*d0*p(0,0 +,0,0,0,0,g,"U.S. English")>\n\@\$:<*J*p(9,-9,0,9,0,0,g,"U.S. English" +)><z8f"Helvetica">\n/;

    are equivalent.

      I tried it with the 'g' as well and still no go. I just don't get it. Thanks for the tip, by the way. I found that out while reading more about perl regex today, but that part was working, so I didn't want to mess around with it. I have a headache as it is ;)
        You need to provide input that fails. The input that you said failed, doesn't:
        @FILE = ( '<*ra0*p(9,-9,0,9,0,0,g,"U.S. English")><Bz8>KETTLE WORKERS F/T &' .' P/T, Nov.-Dec., $6.90/hr. Must be clean, honest & neat. Apply' .' at the Salvation Army, 316 Pleasant St., Wmtc., wkdys., 9-6 p.m.' ); foreach (@FILE) { s/[0]{4}\n/<v2\.05><e1>\n\@Normal\=<Ps100t0h100z12k0b0cKf\"ArialMT\ +">\n\@Normal\=\[S\"\",\"Normal\",\"Normal\"\]<\*L\*h\"Standard\"\*kn0 +\*kt0\*ra0\*rb0\*d0\*p\(0,0,0,0,0,0,g,\"U\.S\. English\"\)>\n\@\$\:<\ +*J\*p\(9,\-9,0,9,0,0,g,\"U\.S\. English\"\)><z8f\"Helvetica\">\n/g; s/^[0-9]{4}\n/<\*ra\(1,0,K,100,\-9,0,0\%\)\*p\(9,\-9,0,7,0,0,g,\"U\ +.S\. English\"\)><z2>\n<\*ra0\*p\(9,\-9,0,9,0,0,g,\"U\.S\. English\"\ +)><Bz8>/g; s/^[0-9]{4}D\n/<\*ra\(1,0,K,100,\-9,0,0\%\)\*p\(9,\-9,0,7,0,0,g,\"U +\.S\. English\"\)><z2>\n<\*ra0\*p\(9,\-9,0,9,0,0,g,\"U\.S\. English\" +\)><Bz8>\n\*\*\*\*\*\*DISPLAY\*\*\*\*\*\*\n/g; s/(<Bz8>)([^ ]*)/$1$2<\$>/g; } print(@FILE); __END__ output ====== <*ra0*p(9,-9,0,9,0,0,g,"U.S. English")><Bz8>KETTLE<$> WORKERS F/T & P/ +T, Nov.-Dec., $6.90/hr. Must be clean, honest & neat. Apply at the Sa +lvation Army, 316 Pleasant St., Wmtc., wkdys., 9-6 p.m.
Re^2: Parsing Quark file with RegEx
by rael9 (Novice) on Sep 03, 2004 at 20:56 UTC
    removed