I have a script that is parsing through large text files
Each section in the file begins with a lower case t and ends with a capital T with lines starting with J, D or S in between.
The problem is in the lower t section. It only executes at the start and never again, and I just cannot wrap my head around the problem.
Any help is greatly appreciated.
#!/usr/bin/perl
my @lines = ('t13:45\n', 'D13:45\n', 'S13:45 Unicorn\n','D13:45\n', 'S
+13:45\n', 'T13:45\n', 't13:45\n', 'D13:45\n', 'T13:46\n','t13:45\n',
+'D13:45\n', 'S13:45\n','D13:45\n', 'S13:45 UNICORN\n', 'T13:45\n', 't
+13:45\n', 'D13:45\n', 'T13:46\n');
my $value = "unicorn";
$i = 0;
$newsection = 0;
#my $debug = "true";
print "Let's start\n" if $debug;
while (my $row = shift(@lines)) {
chomp($row);
if($newsection <= 0) {
if ($row =~ /^[t]/) {
$i++;
print "New section started\n" if $debug;
print "Inserting $row into array\n" if $debug;
push(@section,$row);
}
elsif ($row =~ /^[J]/) {
print "Section continued\n" if $debug;
push(@section,$row);
}
elsif ($row =~ /^[S]/) {
print "Section continued\n" if $debug;
push(@section,$row);
}
elsif ($row =~ /^[D]/) {
print "Section continued\n" if $debug;
push(@section,$row);
}
elsif ($row =~ /^[T]/) {
print "Section Ended\n" if $debug;
push(@section,$row);
$newsection = 1;
}
}
else {
$newsection = 0;
print "Checking for value\n" if $debug;
if ( grep( /$value/i, @section )) {
print "Value discovered, saving section\n" if $debug;
foreach (@section) {
print "$_\n";
}
}
@section = ();
undef(@section);
}
}
exit;
Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
Read Where should I post X? if you're not absolutely sure you're posting in the right place.
Please read these before you post! —
Posts may use any of the Perl Monks Approved HTML tags:
- a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
| |
For: |
|
Use: |
| & | | & |
| < | | < |
| > | | > |
| [ | | [ |
| ] | | ] |
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.