Chas Owens wrote:
> On 5/16/07, Mathew Snyder <[EMAIL PROTECTED]> wrote:
>> I have a trouble ticket application that uses a regex to find a piece of
>> information in an incoming email and auto populate a field if it is
>> found.  The
>> line it will be looking for is
>> CUSTOMER ENVIRONMENT customer_name
>> where customer_name will never have a space making it one word.  If I
>> just want
>> to pull from the line the customer_name would my regex look like
>> $MatchString = "CUSTOMER ENVIRONMENT\s+(\w)"
> 
> Bad idea.  Use qr() instead.
> 
>>
>> For what it's worth the line that will handle this is
>> $found = ($Transaction->Attachments->First->Content =~ /$MatchString/m);
>> I'm guessing that when used in an assignment like this, $1 will be
>> used as the
>> value.  The contents of (\w) in this case.  Is that correct?
> snip
> 
> Yes, the $1 match variable will hold the match if $found is true.  A
> common idiom is therefore
> 
> my $name;
> my $regex = qr/CUSTOMER ENVIRONMENT\s+(\w)/;
> if ($Transaction->Attachments->First->Content =~ /$regex) {
>    $name = $1;
> } else {
>    die "could not find name";
> }
> 
> Another way to write this is
> 
> my $regex = qr/CUSTOMER ENVIRONMENT\s+(\w)/;
> my ($name) = $Transaction->Attachments->First->Content =~ /$regex/
>    or die "could not find name";
> 

What does gr() do?

Mathew

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/


Reply via email to