Beefy Boxes and Bandwidth Generously Provided by pair Networks
laziness, impatience, and hubris
 
PerlMonks  

comment on

( [id://3333]=superdoc: print w/replies, xml ) Need Help??

Reading "records" rather than lines is a nice approach. One minor point, your local is not really local as you have not confined it to a particular scope so it applies from the point it appears until the end of the script.

Rather than the split and array slice, another approach could be to open a file handle against a reference to the record so that you can read it line by line in an inner scope and just print the lines you want. This has the advantage that the record layout can change and it will still work.

use strict; use warnings; open my $inFH, q{<}, \ <<EOD or die $!; start id 10 address Richmond name jack xxxxx aaaaa lastname black yyyy zzzzz id 11 address Central name rick cccccc dddddd lastname hanna eeeee yyyyy id 12 address denver name jack sssss tttttt lastname strong rrrrr mmmmm id 13 address Virginia name mick aaaaaaa ooooooo lastname jagger gggggg hhhhhh id 14 address Maine name rick sssss sssss lastname stewart ssssss ffffff end EOD { local $/ = q{id}; while ( my $record = <$inFH> ) { next unless $record =~ m{name\s+jack\b}; chomp $record; $record = $/ . $record; { local $/ = qq{\n}; print for do { open my $recordFH, q{<}, \ $record or die $!; grep { m{^(?:id|address|name|lastname)} } <$recordFH>; }; } } }

I hope this is of interest.

Cheers,

JohnGG


In reply to Re^2: get n lines before or after a pattern by johngg
in thread get n lines before or after a pattern by darklord_999

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post; it's "PerlMonks-approved HTML":



  • Are you posting in the right place? Check out Where do I post X? to know for sure.
  • Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
    <code> <a> <b> <big> <blockquote> <br /> <dd> <dl> <dt> <em> <font> <h1> <h2> <h3> <h4> <h5> <h6> <hr /> <i> <li> <nbsp> <ol> <p> <small> <strike> <strong> <sub> <sup> <table> <td> <th> <tr> <tt> <u> <ul>
  • Snippets of code should be wrapped in <code> tags not <pre> tags. In fact, <pre> tags should generally be avoided. If they must be used, extreme care should be taken to ensure that their contents do not have long lines (<70 chars), in order to prevent horizontal scrolling (and possible janitor intervention).
  • Want more info? How to link or How to display code and escape characters are good places to start.
Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others sharing their wisdom with the Monastery: (6)
As of 2024-04-24 11:34 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found