in reply to Re^2: Recursive substitution difficulties
in thread Recursive substitution difficulties

Thanks. That looks pretty straightforward. Is it possible to use that all on a command line invocation? Right now I have something like:

perl -pe "s/^(.*?)\t(.*?)\|(.*?)\t(.*?)(?=\n)/<wrapper1>$1</wrapper1>< +wrapper2>$2\|$3</wrapper2><wrapper3>$4</wrapper3>/g;" inputfile
and then a follow-up to expand wrapper2 and the delimited fields within.

Replies are listed 'Best First'.
Re^4: Recursive substitution difficulties
by ikegami (Patriarch) on Mar 16, 2010 at 01:53 UTC

    I was humouring your weird way of doing things, but it doesn't scale. Split the input into fields, edit the fields you want

    perl -lape' $F[1] =~ s{\|([^|]*)\|([^|]*)}{<name>$1</name><value>$2</value>}; $F[2] =~ s{\|([^|]*)\|([^|]*)}{<foo>$1</foo><bar>$2</bar>}; $_ = join("\t", @F); ' inputfile
      Thanks for your help. I will look to integrate the solutions you provided and see what is the best way to get from point A to point B (tab-delimited with some variable-length pipe-delimited subfields to XML).