What's wrong with this eval statement in Perl?
eval, libxml2, perl
Solution
Easy, $tree doesn't persist past the `eval {}`. Braces in perl as a general rule always provide a new scope. And warn requires you to provide its arguments $@.
my $tree;
eval {
# parses the file contents into the new libXML object.
$tree = $parser->parse_file($file)
};
warn $@ if $@;
Problem
What's wrong with this `eval` statement in Perl? I'm trying to check that the XML is valid by catching any exceptions thrown from the parsing of the file with XML::LibXML: ``` use XML::LibXML; my $parser = XML::LibXML->new(); #creates a new libXML object. eval { my $tree = $parser->parse_file($file) # parses the file contents into the new libXML object. }; warn() if $@; ```