XML::Smart save の使用後に warn に問題があることに気付きました。
#!/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-smart バージョン 1.77 で行われます
これはおそらく XML::Smart の内部動作に密接に関連していますが、警告の出力を復元する方法はありますか (STDERR をリセットします)。
[EDIT 19/3/2013]: HP-UX では、コンストラクターにも問題があります。ikegami が提供する以下の回避策は、問題を解決するために new と save の両方で使用できます。