Beefy Boxes and Bandwidth Generously Provided by pair Networks
P is for Practical
 
PerlMonks  

Re: How to (conditionally) modify the previous line based on contents of current line?

by nothingmuch (Priest)
on Oct 19, 2002 at 21:03 UTC ( [id://206569]=note: print w/replies, xml ) Need Help??


in reply to How to (conditionally) modify the previous line based on contents of current line?

Since it's easy to do this with an array — simply look at element at index $i-1 — you could load the file into an array, process the array, then write the array back out to the file. Of course, this doesn't scale with the size of the file well. For a generally application solution, you could map the lines of the file into an array using the module Tie::File:
use Tie::File; tie my @array, 'Tie::File', "file.txt" or die "$!"; for ( my $i = 1; $i <= $#array; $i++ ) { if ( check( $array[$i] ) ) # the "current line" { modify( $array[$i-1] ); } }
In this example, I started at index 1 (the second line) because even if the first line (index 0) passes the check, there is no "previous line" to modify.
  • Comment on Re: How to (conditionally) modify the previous line based on contents of current line?
  • Download Code

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others contemplating the Monastery: (3)
As of 2024-04-19 20:11 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found