Thanks very much Tim. I just did a quick test on my real file and it worked perfectly.
I definitely still have a lot to learn with both Perl and regex's, so I really appreciate the explanation as well. Though your script is very compact, I learned a lot from it. Such as how you initialized the array. I have a couple of scripts where I get warnings about either improper or uninitialized arrays, or something to that effect. I tried to fix those, but was unsuccessful. Those scripts produced the output I wanted, but the warnings are bothersome. I'll take another look at those scripts to see if initializing using "my @arrayname = ( );" will help. Also, the "push" structure for adding elements to the array was very helpful. I have a way to do it, and while my way works and is somewhat creative, my way is actually really embarrassingly bad and inefficient coding. So, I learned from that too. It's funny how all this stuff is in the Perl books that I've been reading, but once I need to solve a problem, the exact right way to do it doesn't come to me. I can spend hours trying to do some pretty simple stuff. I can usually come up with a solution, but I know that it's not usually efficient nor is it really close to the right way to do it. But, the good news is, if I think about where my Perl skills are today compared to a month ago, I'm making progress ! Anyway, sorry for being so looong winded. The bottom line is that I really appreciate your help. "Tim Johnson" <[EMAIL PROTECTED]> 01/23/2004 01:32 AM To "Tim Johnson" <[EMAIL PROTECTED]>, <[EMAIL PROTECTED]>, <[EMAIL PROTECTED]> cc Subject RE: Need help with a regex Ooh. That's embarassing. I didn't pay close enough attention to the OP. Some of the inside matches contain spaces. My regex should have been: /^\S+\s+(.+)\s+/ which would match: * the beginning of the line (^) * followed by one or more non-whitespace characters (\S+) * followed by one or more whitespace characters (\s+) * followed by one or more of any characters including whitespace (.+) * followed by one or more whitespace characters (\s+) because Perl will match the largest possible number of characters, the .+ will match everything between the two outside spaces. -----Original Message----- From: Tim Johnson Sent: Thu 1/22/2004 9:31 PM To: [EMAIL PROTECTED]; [EMAIL PROTECTED] Cc: Subject: RE: Need help with a regex Try this on for size: ##################### use strict; use warnings; my @cities = (); open(INFILE,"myfile.txt") || die "Couldn't open myfile.txt for reading!\n"; while(<INFILE>){ $_ =~ /^\S+\s+(\S+)/; push @cities,$1; } #do something to @cities ##################### which basically means to match: * the start of the line (^) * followed by one or more non-whitespace characters (\S+) * followed by one or more whitespace characters (\s+) * followed by one or more non-whitespace characters (\S+) the parentheses around the last non-whitespace match assign it to $1 Note: Check out "perldoc perlre" for the man pages. It might be worth looking over real quick before you dig into the book. Or, for the quick and easy way without a regex, how bout: ############################# use strict; use warnings; my @cities; open(INFILE,"myfile.txt") || die "Could not open myfile.txt for reading!\n"; while(<INFILE>){ push @cities,(split /\s+/,$_)[1]; } ############################# which does a split on the line and returns the second element of the resulting list and assigns it to @cities. -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] Sent: Thu 1/22/2004 9:01 PM To: [EMAIL PROTECTED] Cc: Subject: Need help with a regex This newbie needs help with a regex. Here's what the data from a text file looks like. There's no delimiter and the fields aren't evenly spaced apart. apples San Antonio Fruit oranges Sacramento Fruit pineapples Honolulu Fruit lemons Corona del Rey Fruit Basically, I want to put the city names into an array. The first field, the fruit name, is always one word with no spaces.