http://www.perlmonks.org?node_id=6730


in reply to How do I split a file into separate sections?

I'm not sure I understand the structure of your file well enough to answer the question correctly. From what I understand, though, it seems to me that you have a file that looks something like this:
TI: ... AU: ... JN: ... TI: ... AU: ... JN: ...
and so on. Is the pattern repeating like that? And so for each section, you have, say, a TI, an AU, and a JN, and those 3 (or however many) headers and content constitute one "section"?

The solution that chromatic provided will work for a structure like this, but the resulting data structure may not look like you expect. You could dump it out to see quickly enough what it looks like, but I just thought I'd explain quickly.

You're going to end up with a hash called %sections, where the possible headers in the file (TI, AU, and JN) are the keys, and the values are arrays of all of the lines pertaining to those sections. So, for example, say that the 5th "section" in your file looked like this:

TI: Foo AU: Bar JN: Baz
Now you want to get the data for that section. You can access that information like this:
# the index is 4 because the array index starts # at 0, btw my $ti = $sections{'TI'}[4]; my $au = $sections{'AU'}[4]; my $jn = $sections{'JN'}[4];
Just in case it needed explaining.