local $/="\$\n"; open(A, 'file'); while() { if (m/^(\w+)\n/) { #use whatever reges matches 'DATA' here open(my $fh, ">$1") or die "Couldn't open '$1' for write: $!"; print $fh $_; close $fh; } }