Beefy Boxes and Bandwidth Generously Provided by pair Networks
We don't bite newbies here... much
 
PerlMonks  

General Question on parsing a variable

by diamondsandperls (Beadle)
on Feb 06, 2013 at 20:51 UTC ( #1017502=perlquestion: print w/ replies, xml ) Need Help??
diamondsandperls has asked for the wisdom of the Perl Monks concerning the following question:

I have a variable that has many instances of stored data in it like the below..the beginning is storeId of each data entry the variable has and an ending of end I have many instances but only want to display the matches and the full data snapshot if criteria in the middle is matched then print the variable.

storeId = 111
a bunch of randomness
mysearch string criteria i want to match and only print this subset data instead of other instances
more randomness
end

Comment on General Question on parsing a variable
Re: General Question on parsing a variable
by moritz (Cardinal) on Feb 06, 2013 at 20:56 UTC
Re: General Question on parsing a variable
by Athanasius (Abbot) on Feb 07, 2013 at 05:43 UTC

    You will find it easier to access the records if you read them into a suitable data structure first. In Perl, that usually means a hash:

    my %hash; $hash{$1} = $2 while $var =~ /storeID = (\d+)\s+(.*?)end/gs;

    Then you can search like this:

    my $criterion = ...; print "storeID = $_\n", $hash{$_} for grep { $hash{$_} =~ /$criterion/ + } keys %hash;

    Hope that helps,

    Athanasius <°(((><contra mundum Iustus alius egestas vitae, eros Piratica,

      http://scsys.co.uk:8002/228600

      I have many entries like the ones presented stored in a variable $var I only want to print the entries that have stockStatus = In stock or stockStatus = Limited Stock ignoring case though on the match so i know /i and a multiline match

        It seems each record now ends with a blank line, rather than the word “end” as in the OP. And each record is a collection of lines of the form key = value. So we add another loop, and create a hash in which each key is the storeId (as before), but each value is a (reference to a) nested hash of key/value pairs:

        Hope that helps,

        Athanasius <°(((><contra mundum Iustus alius egestas vitae, eros Piratica,

Re: General Question on parsing a variable (what)
by Anonymous Monk on Feb 07, 2013 at 08:27 UTC
    What is your question?

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://1017502]
Approved by Corion
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others wandering the Monastery: (10)
As of 2015-07-06 23:33 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (85 votes), past polls