#!/usr/bin/perl %Test_hash=(); open(F, "xfile.test"); while ($line=){ if ($line=~ /FIRST/) { ($Test_num,$Test)=(split(/\s+/,$line))[0,2]; push (@Tests,$Test); @all_me=(); } if ($line=~ /SUBSET/ ) { $me=(split(/\s+/,$line))[2]; push(@all_me,$me); $Test_hash{$Test} = [@all_me]; } } use Data::Dumper; print Dumper([\%Test_hash]); __DATA__ FIRST ONE TEST1 SUBSET a.me SUBSET b.me SUBSET c.me