I have many entries like the ones presented stored in a variable $var I only want to print the entries that have stockStatus = In stock or stockStatus = Limited Stock ignoring case though on the match so i know /i and a multiline match

It seems each record now ends with a blank line, rather than the word “end” as in the OP. And each record is a collection of lines of the form key = value. So we add another loop, and create a hash in which each key is the storeId (as before), but each value is a (reference to a) nested hash of key/value pairs: