Легко, $ tree не сохраняется после eval {}
.Скобки в perl, как правило, всегда предоставляют новую область видимости.И предупреждение требует от вас предоставить его аргументы $ @.
my $tree;
eval {
# parses the file contents into the new libXML object.
$tree = $parser->parse_file($file)
};
warn $@ if $@;