我意識到在使用XML :: Smart保存之後警告有問題。Perl,在XML :: Smart保存後警告不工作
#!/usr/bin/perl
use strict;
use warnings;
use XML::Smart;
my $XML = XML::Smart->new() ;
print STDOUT "Before save: Print to STDOUT works\n";
print STDERR "Before save: Print to STDERR works\n";
warn "Before save: Warn works\n";
$XML->save('newfile.xml') ;
print STDOUT "After save: Print to STDOUT works\n";
print STDERR "After save: Print to STDERR works\n";
warn "After save: Warn does not work\n";
測試是在OSX 10.8.2版本的Perl 5.12.4完成XML的智能版1.77
這可能是密切相關的XML ::智能的內部工作,但有沒有恢復方法警告打印(復位STDERR)。
[編輯19/3/2013]:在HP-UX構造函數中也存在問題。以下由ikegami提供的解決方法可用於新建和保存以解決該問題。
這對我來說很好。我在草莓Perl 5版本16.2。你確定你沒有錯過警告嗎?它不會作爲輸出的最後一行顯示,除非您以'STDOUT-> autoflush'開頭。 – Borodin 2013-03-17 17:11:30
確認:在archlinux x86_64,XML-Smart-1.77和perl 5.16.2上的相同問題,您應該填寫一個錯誤報告。使用'$ | ++',沒有任何變化 – 2013-03-17 17:17:43
這似乎與'XML :: Smart :: Shared'中定義的稱爲'_unset_sig_warn()'的函數有關,它試圖通過將'$ SIG {__ WARN __}'詞彙變量。 – TLP 2013-03-17 17:25:42