Could you possibly change the title to be more descriptive? (I don't care to spend time what that would be.)
while reading file line by line
in @data, save lines from /^G/ (inclusive) to
next /^G/ (exclusive)
call parse_check on @data
$data =~ /^G/ or early return
@find = split $data on ":"
remove /^G/ from $find
@field = parsed CSV output of @data[1,$#data].
remove /^E/ from @field
for space in @field
match space with each of @find
if all succeed, well, you succeeded
and return true
outside of loop, return false