Another way to do this, keeping the index of array as the number of the DATA SET
#!/usr/local/bin/perl -w
use strict;
use Data::Dumper;
my @records;
{
local $/ = '>'; # record separator.
while ( <DATA> )
{
push( @{$records[$1]}, split(/(?:\n+|>)/) )
if ( s/DATA SET ([0-9]+)\n+// );
}
}
print Dumper( \@records );
__DATA__
>DATA SET 1
1aHSAJDHSDHSADHDSALHDASLDHSALDH
1bHGDKJSHDSADHSALDHLHLDHASDLSAH
1cHKJAHCADHALIDHALSDHLSADHALHDA
>DATA SET 2
2aHSAJDHSDHSADHDSALHDASLDHSALDH
2bHGDKJSHDSADHSALDHLHLDHASDLSAH
2cHKJAHCADHALIDHALSDHLSADHALHDA
>DATA SET 3
3aHSAJDHSDHSADHDSALHDASLDHSALDH
3bHGDKJSHDSADHSALDHLHLDHASDLSAH
3cHKJAHCADHALIDHALSDHLSADHALHDA
Some extra juggling is done to clean output. This is what it looks like.
:!./test.pl
$VAR1 = [
undef,
[
'1aHSAJDHSDHSADHDSALHDASLDHSALDH',
'1bHGDKJSHDSADHSALDHLHLDHASDLSAH',
'1cHKJAHCADHALIDHALSDHLSADHALHDA'
],
[
'2aHSAJDHSDHSADHDSALHDASLDHSALDH',
'2bHGDKJSHDSADHSALDHLHLDHASDLSAH',
'2cHKJAHCADHALIDHALSDHLSADHALHDA'
],
[
'3aHSAJDHSDHSADHDSALHDASLDHSALDH',
'3bHGDKJSHDSADHSALDHLHLDHASDLSAH',
'3cHKJAHCADHALIDHALSDHLSADHALHDA'
]
];
Best Regards,
Wonko