use strict; use warnings; my $fileStr = <)) { my @lines = grep {/^\s*\d+\s+\S+\s+-?\d+\.\d+/} split "\n", $record; next if !@lines; my %recordData = map{/\d+\s+(\S+)\s+(\S+)/; ($1, $2)} @lines; my @solvents = grep {!/^F\d+/} keys %recordData; my @fractions = grep {/^F\d+/} keys %recordData; my ($zeroSolvent) = grep {0.0 == $recordData{$_}} @solvents; print "${zeroSolvent}_$_ => $recordData{$_}\n" for @fractions; } #### h2o_F101 => 32.47411476 h2o_F011 => 26.13597035 h2o_F002 => 4.66656083 h2o_F11-1 => 29.58963453 h2o_F111 => 30.24092207 acetonitrile_F111 => 1.95840198 acetonitrile_F101 => 2.67268035 acetonitrile_F11-1 => 1.64808218 acetonitrile_F002 => 1.69945785 acetonitrile_F011 => 0.74578421