Beefy Boxes and Bandwidth Generously Provided by pair Networks
Problems? Is your data what you think it is?
 
PerlMonks  

Re^2: Help Extract these lines

by Anonymous Monk
on Jun 17, 2013 at 18:31 UTC ( #1039441=note: print w/ replies, xml ) Need Help??


in reply to Re: Help Extract these lines
in thread Help Extract these lines

I thought of using a range operator to grab the two lines. But I'm confused as to why it is not grabbing the two lines.


Comment on Re^2: Help Extract these lines
Re^3: Help Extract these lines
by Preceptor (Chaplain) on Jun 17, 2013 at 18:38 UTC

    Because the 'while' loop goes off first, populating $_ with one line of DATA. Your range operator then applies to that, which is why it doesn't work.

    #!/usr/bin/perl use strict; use warnings; my %rec; while ( my $line = <DATA>) { $line .= <DATA>; $line =~ s/\"//g; $line =~s/,//g; my ( $id, $name ) = ( $line =~ m/id: (\S+)\nname: (\S+)/mg ); print "$id = $name\n"; $rec{$id} = $name; } __DATA__ "id": "xx-ada-qwebasd", "name": "telphone", "id": "fasda-asd-123123-fkja123a", "name": "car", "id": "97f921-a312-fas2", "name": "ball",

    That I think does the trick. (Basically, grabs two lines in a go, but isn't ideal if your data structure is more complicated). I suspect there's something more clever you could do to parse a file and grab out pattern matching, but I think most of those would involve reading the file in a scalar context and reading the whole lot (which may be fine, but can go wrong with large files).

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others exploiting the Monastery: (4)
As of 2015-07-03 00:20 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 (47 votes), past polls