You have a problem of operator precedence. !
has an higher precedence than =~
, so your expression:
if ( ! $document =~ /(Device\sID)(.*?)(Device\sID)/s ) {
is the same that:
if ( (! $document) =~ /(Device\sID)(.*?)(Device\sID)/s ) {
but you want:
if ( ! ($document =~ /(Device\sID)(.*?)(Device\sID)/s) ) {
that is the same that:
if ( $document !~ /(Device\sID)(.*?)(Device\sID)/s ) {