Extracting records

D

Dj Frenzy

Hi, I am looking for a solution to this problem. I receive a list of
records like this, in one continuous string. I want to separate each
record and extract some of the data for each record. The records look
like this:

(=YEAR:1991;month:[JAN]client-NAME:[Ali-Baba-Basket-Emporium]AREA:[SouthEast]value:[ú1905]=)(=YEAR:1997;month:[dec]client-NAME:[Fletcher]AREA:[Scotland(North)]discount:[7%]value:[ú741]=)(=YEAR:2003;month:[MAR]client-NAME:[Porridge-dot-com]AREA:[N.Ireland]discount:[7%]value:[ú335]=)

For example, in this record:
(=YEAR:2003;month:[MAR]client-NAME:[Porridge-dot-com]AREA:[N.Ireland]discount:[7%]value:[ú335]=)

I want to extract the year: "2003"
month: "MAR"
clientName: "Porridge-dot-com"
area: "N.Ireland"
discount (which is an optional field): "7"
value: 335.

An help in how to do this would be appreciated.
Cheers,
Dave
 
G

Gunnar Hjalmarsson

Dj said:
I receive a list of records like this, in one continuous string. I
want to separate each record and extract some of the data for each
record. The records look like this:

(=YEAR:1991;month:[JAN]client-NAME:[Ali-Baba-Basket-Emporium]AREA:[SouthEast]value:[ú1905]=)(=YEAR:1997;month:[dec]client-NAME:[Fletcher]AREA:[Scotland(North)]discount:[7%]value:[ú741]=)(=YEAR:2003;month:[MAR]client-NAME:[Porridge-dot-com]AREA:[N.Ireland]discount:[7%]value:[ú335]=)

For example, in this record:
(=YEAR:2003;month:[MAR]client-NAME:[Porridge-dot-com]AREA:[N.Ireland]discount:[7%]value:[ú335]=)

I want to extract the year: "2003"
month: "MAR"
clientName: "Porridge-dot-com"
area: "N.Ireland"
discount (which is an optional field): "7"
value: 335.

How about:

my @records;

for (split /\)\(/) {

if (/(\d+) # year
[^\[]+\[
([^\]]+) # month
[^\[]+\[
([^\]]+) # clientName
[^\[]+\[
([^\]]+) # area
(?:
\]discount:\[
(\d+) # discount
)?
[^\[]+\[\D?
(\d+) # value
/x) {

push @records, {
year => $1,
month => $2,
clientName => $3,
area => $4,
discount => ($5 or 0),
value => $6,
}
}
}
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,755
Messages
2,569,537
Members
45,023
Latest member
websitedesig25

Latest Threads

Top