#! perl use strict; use warnings; my ($process) = ; # slurp in all the data at once # Use a look-ahead assertion while ($process =~ /(0x[0-9a-f]{1,2})(.*?)(?=0x[0-9a-f]{1,2}|\Z)/gi) { my ($hex, $text) = ($1, $2); print "Match found: $hex$text\n" if $text =~ /in mmgsdi_evt_cb/; } print "Finished\n"; __DATA__ 0x0 in mmgsdi_evt_cb mmgsdi X mmgsdi Y 0xd in mmgsdi_evt_cb 0x1a in mmgsdi_evt_cb 0xe in mmgsdi_evt_cb 0xf in mmgsdi_evt_cb mmgsdi Z 0x13 in mmgsdi_evt_cb mmgsdi Z mmgsdi Z