It would be helpful if you said what you want to do for each match. I'd do a scalar context //g match first, loop through the to get the rest (untested):
$data =~ /^\d+STRUCT/g or "warn: gang aft agley";
while ($data =~ /\d+STRUCT/g) {
# process match
}