#!/usr/local/bin/perl -w use strict; use Data::Dumper; my @records; { local $/ = '>'; # record separator. while ( ) { 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 #### :!./test.pl $VAR1 = [ undef, [ '1aHSAJDHSDHSADHDSALHDASLDHSALDH', '1bHGDKJSHDSADHSALDHLHLDHASDLSAH', '1cHKJAHCADHALIDHALSDHLSADHALHDA' ], [ '2aHSAJDHSDHSADHDSALHDASLDHSALDH', '2bHGDKJSHDSADHSALDHLHLDHASDLSAH', '2cHKJAHCADHALIDHALSDHLSADHALHDA' ], [ '3aHSAJDHSDHSADHDSALHDASLDHSALDH', '3bHGDKJSHDSADHSALDHLHLDHASDLSAH', '3cHKJAHCADHALIDHALSDHLSADHALHDA' ] ];