"I want to extract all the information to the left of the last comma."
There are a few ways...
$derer = "Seattle, Washington, USA, NAME";
my @data = split(/,/, $derer);
pop(@data);
# data will now include each seperate part, but
# you could optionally paste it back together...
$derer = join(',', @data);
....Or a regex...
$derer = "Seattle, Washington, USA, NAME";
$derer =~ s/,.*?$//;
That removes the comma followed by 0 or more chars (as few as possible) to
the end of the string. You could then split it if you wanted to seperate
the data.
"if($derer =~ /(.*?),([.*?,]*)(.*)/g) {"
"Why is $2 blank?"
$2 is blank because the question mark says "match as few as possible", and
in this case is has no reason to match any more than zero (0) chars. In my
regex I use the $ to signify the end of the string to force is to match some
stuff, otherwise it would have match zero chars as well.
Rob
-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]
Sent: Thursday, December 27, 2001 4:09 PM
To: [EMAIL PROTECTED]
Subject: Re: $1, $2, $3
HI,
I have a question.
I want to extract all the information to the left of the last comma.
If there are 3 commas I would like everything to the left of the third
comma.
$derer = "Seattle, Washington, USA, NAME"; ## I only need Seattle,
Washington, USA
if($derer =~ /(.*?),([.*?,]*)(.*)/g) { ## I figure Seattle is $1
Washington is $2 and USA is $3
## I put ([.*?,]*) to tag if there is
otherinformation and commas, as many times
## following the first one. This should
be
$2.
print " \$1 = $1, \$2 = $2, \$3 = $3 \n"; ## $1 is Seattle $2
is
blank $3 is Washington, USA
$Source = $1 . " ". $2 ;
}
print "source = $Source \n"; ## Prints source = Seattle
What am I doing wrong?
Why is $2 blank?
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]