Hi,

Thank you for looking to help me.  Unfortunately, when I used your code nothing 
was extracted.  At least when I printed $1 nothing appeared.

In order to help me learn more about Perl - I'd like to know why my code didn't 
work.  If I understand your code correctly then I should see:

        $1 = Abc123, $2 = STATUS, $3 = open, $3 = DESCRIPTION, etc.

While anything would be better than my puny effort, I was looking just to 
extract the "data" - in other words:

       $1 = "Abc123", $2 = "open", $3 = "a basket of melons", $4 = "1".

I thought I was successfully copying from a similar script - but obviously I 
don't have enough understanding in order to make it work. If I take my code 
apart, I thought that:

        \STATUS\s+(\w+)\s+   would extract the word between STATUS and 
DESCRIPTION, and
        \{\s+fruittype\s+(\d+)\s+}   would extract the number following 
"fruittype"

Individually they do - it is just when I add then together in the same line 
that I receive nothing.  What am I doing wrong?

Chris

-----Original Message-----
From: pa...@fsmail.net [mailto:pa...@fsmail.net] 
Sent: 25 May 2012 11:53 PM
To: Christopher Gray; beginners@perl.org
Subject: RE: Help required to extract multiple text fields from a text string


May you try this matching?

while(<DATA>) {
    next unless /^(\S+\s+)(\S+\s+)(\S+\s+).*\"(.*?)\"/;
    print "$1 $2 $3 $4\n";
}

HTH.

========================================
 Message Received: May 25 2012, 09:52 PM
 From: "Christopher Gray" <christopher.g...@talktalk.net>
 To: beginners@perl.org
 Cc: 
 Subject: Help required to extract multiple text fields from a text string
 
 Good day,
 
 I have a text file containing records.  While I can extract single  
sub-strings, I cannot extract multiple sub-strings.
 
 The records are of multiple types - only about a third of which have the  data 
I need.
 
 An example of a "good" record is
 
  Abc1234 STATUS   open  DESCRIPTION "A basket of melons" :: { fruittype 1}
 
 I'm trying to extract the first (Abc1234), second (open), third (A basket of
 melons) and fourth (1) strings.
 
 I can extract each of them separately - but not together.
 
 So - for example:
 
       while (<FILE>) {
           chomp;
             next if !/\{\s+fruittype\s+(\d+)\s+}/;
             my $Temp =$1;
       }
 
 Extracts the fruittype.  However, when I try and have multiple extracts:
 
   ...
            next if !/\STATUS\s+(\w+)\s+\{\s+fruittype\s+(\d+)\s+}/;
   ...
 It fails.
 
 What have I done wrong?
 
 Chris
 
 
 
 --
 To unsubscribe, e-mail: beginners-unsubscr...@perl.org  For additional 
commands, e-mail: beginners-h...@perl.org  http://learn.perl.org/
 
 
 

--
To unsubscribe, e-mail: beginners-unsubscr...@perl.org For additional commands, 
e-mail: beginners-h...@perl.org http://learn.perl.org/





--
To unsubscribe, e-mail: beginners-unsubscr...@perl.org
For additional commands, e-mail: beginners-h...@perl.org
http://learn.perl.org/


Reply via email to