Pathologically Eclectic Rubbish Lister | |
PerlMonks |
Indexing multiplicate firstnames with regexby stringZ (Acolyte) |
on May 27, 2009 at 15:22 UTC ( [id://766449]=perlquestion: print w/replies, xml ) | Need Help?? |
stringZ has asked for the wisdom of the Perl Monks concerning the following question:
Dear PerlMonks!
I have a text file containing names, like George Fortran Jessi Heavens Bill Clinton Barack Obama Bill Gates Steve Jobs Bill Green George Bush These names are just for the sake of example. I would like to mark the firstnames occur more than one with a concatenated incremented number, so this list of names would be: George1 Fortran Jessi Heavens Bill1 Clinton Barack Obama Bill2 Gates Steve Jobs Bill3 Green George2 Bush I can do this with hashes and arrays, but I want to do it with regex substitution. My code: $dat = join(" ", @a); $i = 1; $dat =~ s/([a-zA-Z\+) (.*) \1/${1}$i ${2} ${1}$i/g; print $dat; This is what I could do, it does not find all occurences and doesn't increment $i. These two things are my problems. @a is an array containing all the firstnames, and only them. $dat is a string where firstnames are separated by space. I don't know if there's a solution manipulating an array with substitution. It would be so good if I could do this for an array containing whole records ( 'Jessi Heavens' would be an element instead of only the firstname 'Jessi') and there still was a way to do the thing with regex. Thanks in advance stringZ
Back to
Seekers of Perl Wisdom
|
|