I'm fairly good at using regexes to find things, but using them to *replace* things is something I find quite difficult. I have a text file with lines like this:

<snip>

1 (1) DAVENPORT, LINDSAY 3380.00 16 .00 49.00 USA .00
2 (2) CLIJSTERS, KIM 3206.00 17 .00 .00 BEL .00
[...]
28 (28) MOLIK, ALICIA 671.00 15 .00 195.00 AUS .00
29 (33) MEDINA GARRIGUES, ANABEL 660.75 27 30.00 10.00 ESP 2.00
30 (35) KOUKALOVA, KLARA 660.75 23 16.00 20.00 CZE 2.00

</snip>

that I want to turn into a tab-delimited file. Unfortunately, I can't simply turn all spaces into tabs: note that there are people with two-word surnames. However, I'm having difficulty coming up with any ideas on how to find information on either side of a space, and changing that into something plus a tab. I tried the following to deal with the country codes:

while (<FILEFROM>) {
 chomp;
 if ($_ =~/\d\s[A-Z]{3}\s/) {
 $_ = s/$1/$1\t/g;
 }
 print FILETO "$_\n";
}

But all I got was a file with a bunch of lines of 1's. I tried escaping the $'s, figuring it wouldn't help, and it didn't: I ended up with an empty file. I also tried putting () around each of the $'s, and that gave me an even odder file, with each line containing a two-digit number, with no relationship I can spot between the numbers and the country codes: USA produces 54, 51, and 52 the first three times it's matched, while RUS produces 50, 54, 54, and 56 the first four times it's matched.

I've tried reading perlre, and it's given me no help. I don't know where to begin.

--
Ted Schuerzinger, [EMAIL PROTECTED]

_______________________________________________
Perl-Win32-Users mailing list
[email protected]
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs

Reply via email to