in reply to split with '|'

What follows is an alternative which is probably faster than the OP's due to the lack of lists and arrays:

$au = 'PAUL A. HUBBARD,<SUP>1</SUP>' .' WENFENG YU,<SUP>2</SUP>' .' HORST SCHULZ,<SUP>2</SUP>' .' JUNG-JA P. KIM<SUP>1</SUP>'; $au =~ s{,((?:<SUP>.*?</SUP>)?)\s*} {$1</contributor>\n<contributor>}g; $au = "<contributor>$au</contributor>\n"; print($au); __END__ <contributor>PAUL A. HUBBARD<SUP>1</SUP></contributor> <contributor>WENFENG YU<SUP>2</SUP></contributor> <contributor>HORST SCHULZ<SUP>2</SUP></contributor> <contributor>JUNG-JA P. KIM<SUP>1</SUP></contributor>

So far, I've always found that split with a capture in the pattern is at least as easy to implement as a straight regexp.

Updated.

Replies are listed 'Best First'.
Re^2: split with '|'
by Anonymous Monk on Apr 22, 2005 at 06:02 UTC
    Thanks for your reply, but i dont need the comma before <SUP> and also the <SUP>.*?</SUP> is optional.

      Sorry, tired. Fixed.

        Yes it works fine, thats really great, hats off. I tried nearly for one hour and finally came to PM. Once again thanks for your great work.