It looks like you need to go through some tutorials. I like perldoc perlrequick and perldoc perlretut. Some comments on your code, in no particular order:
If you want only the second . to be allowed to match a newline, but not the first, you can set the s flag for just a part of your regex: m/.*INT8U(?s:.)\)/
If you want the match to begin at the beginning of the line that has INT8U, use ^ and the m flag: m/^.*INT8U.../m. Without //m, ^ matches only at the beginning of the string, not on interior newlines.
m// only checks if part of $Hap matches, it doesn't alter $Hap. To get the part of $Hap that matched, use $& (only after testing that the match was successful) or assign it from the match: if (($match) = $Hap =~ m/.../). (That will get the whole match as long as your pattern has no capturing parentheses.)
It sounds as if you have experimented with reading a line at a time or the whole file at a time via undef $/. A line at a time isn't going to work if you need results from more than one line (as it sounds as if you do). See above for getting just the matched part when reading the whole file. If you need to get multiple matches out of the whole file, use a while loop and the //g flag: while ($Hap =~ m/.../g) { print $& }