This is because you're only matching a line at a time, whereas you want to match the whole file e.g
## die() if we can't open the file
open(F, "prof.xml") or die("ack: $!");
## join together all the lines into a single string
my $xml = join '', <F>; # see. also C<local $/>
## assign $data to the capture in the regex
## also note the use of the 's' modifier (see. man perlre)
my($data) = $xml =~ m{(<emp>.*</emp>)}s;
But if you're working with XML you'll be wanting an XML parser to make your life easier. Firstly there's the basic
XML::Parser, but that'll probably be a little clunky for your needs so you may want to use
XML::Simple instead.
HTH
_________
broquaint