in reply to Parsing block of texts

G'day perlance,

Reading the entire file contents into a string, and then reading all of that data again to parse it, is not very efficent: instead, parse the data as you're reading it (once). I also think you're completely on the wrong track with '... split(/($pattern)/ ...'; to be honest, I'm not really sure what you were hoping to achieve with that.

All you probably need is something simple like this:

#!/usr/bin/env perl use strict; use warnings; my $chunk = -1; while (<DATA>) { if ((split)[1] eq 'False') { ++$chunk; print "#Chunk $chunk:\n"; } print; } __DATA__ GO:0002366 False GO:0002446 True GO:0002275 True GO:0043312 True GO:0006733 False GO:0019674 False GO:0043588 False GO:0055065 False GO:0055080 True

Output:

#Chunk 0: GO:0002366 False GO:0002446 True GO:0002275 True GO:0043312 True #Chunk 1: GO:0006733 False #Chunk 2: GO:0019674 False #Chunk 3: GO:0043588 False #Chunk 4: GO:0055065 False GO:0055080 True

— Ken