open OUT, ">${new_file}.meta" or die "DIAF OUT: $!"; for (my $page = 0; $page < scalar @meta; ++$page) { for (my $line = 0; $line < scalar @{$meta[$page]}; ++$line) { print "$page:$line/",scalar @{$meta[$page]},"\n"; while ($meta[$page]->[$line+1]->[0] and !$meta[$page]->[$line+1]->[1] and !$meta[$page]->[$line+1]->[2]) { print "while loop #1\n"; $meta[$page]->[$line]->[0] .= " $meta[$page]->[$line+1]->[0]"; del($meta[$page],$line+1); } while (!$meta[$page]->[$line+1]->[1] and $meta[$page]->[$line+1]->[2] and $line+1 < scalar @{$meta[$page]}) { print "while loop #2\n"; $meta[$page]->[$line]->[0] .= " $meta[$page]->[$line+1]->[0]" if ($meta[$page]->[$line+1]->[0]); $meta[$page]->[$line]->[2] .= " $meta[$page]->[$line+1]->[2]"; del($meta[$page],$line+1); } if (!$meta[$page]->[$line+1]) { print "last if check\n"; while (!$meta[$page+1]->[0]->[1] and $meta[$page+1]->[0]->[2]) { print "while loop #3\n"; $meta[$page]->[$line]->[0] .= $meta[$page+1]->[0]->[0] if ($meta[$page+1]->[0]->[0]); $meta[$page]->[$line]->[2] .= $meta[$page+1]->[0]->[2]; del($meta[$page+1],0); } } print OUT "$meta[$page]->[$line]->[0]\t$meta[$page]->[$line]->[1]\t$meta[$page]->[$line]->[2]\n"; } } close OUT; sub del { my $rArr = shift; my $ele = shift; my $last = scalar @$rArr - 1; if ($ele > $last) { warn "Invalid element removal attempted: $ele > $last\n"; return 0; } for my $num ($ele..$last-1) { $rArr->[$num] = $rArr->[$num+1]; } pop @$rArr; return 1; } #### 0:0/36 0:1/36 0:2/36 0:3/36 ... blah blah blah ... 0:13/17 0:14/17 while loop #1 while loop #1 0:15/16 0:16/17 0:17/18 0:18/19 0:19/20 0:20/21 0:21/22