You can retrieve the namespace by the namespaceURI method:
in reply to LibXML, XPath and Namespaces
my $doc = XML::LibXML->load_xml(location => '1.xml');
my $root = $doc->documentElement;
my $nsuri = $root->namespaceURI;
You have to register the namespace before you can use it. It is annoying, but it is how XML works: if no namespace is specified, it means the empty namespace, not a default one (imagine the main:: package in Perl having no name).
If you find XML::LibXML too verbose (as I do), you might like XML::XSH2 which is a simple wrapper around it which reduces most of the incantations. Nevertheless, you still have to
register-namespace gt http://www.govtalk.gov.uk/CM/envelope ;