#!/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