If you know the start and end point use a range operator.
Note: In this context "eof" doesn't really correspond to the eof end-of-file marker, it is just a string that isn't found before the end of the file. It works in this situation, but beware of using it in a general case. If you want the true eof marker, use the hex char at ordinal 4, "\x4"
use warnings; use strict; my $start = '4-Dec-2009'; my $end = "eof"; print "Date,Total\n"; while (<DATA>) { if ( /^$start/ .. /^$end/ ) { chomp; my (@items) = split /,/; printf "%s,%d\n", $items[0], $items[1] + $items[2]; } } __DATA__ Date,Expense,Income 1-Dec-2009,12,87 2-Dec-2009,54,204 3-Dec-2009,75,214 4-Dec-2009,78,198 5-Dec-2009,98,155 6-Dec-2009,10,180 7-Dec-2009,51,91 8-Dec-2009,32,130 9-Dec-2009,29,207
produces:
Date,Total 4-Dec-2009,276 5-Dec-2009,253 6-Dec-2009,190 7-Dec-2009,142 8-Dec-2009,162 9-Dec-2009,236
In reply to Re: copying records from one file to another with filter.
by thundergnat
in thread copying records from one file to another with filter.
by avanta
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |