* Michael Ludwig <michael.lud...@xing.com> [2010-01-29 18:30]: > It appears you can use that information to restore a filehandle > configuration: > > # Gut: STDOUT duplizieren und Duplikat umstellen. > # STDOUT (global) wird nicht verstellt. > sub out_bin_good { > open my $fh, '>&STDOUT' or die "dup STDOUT: $!"; > binmode $fh, ':raw' or die "binmode: $!"; > print $fh "BINÄR 3\t", @_; > print STDERR "* layer: $_\n" for PerlIO::get_layers( $fh ); > } > > # Auch gut: IO-Modus sichern und wiederherstellen. > sub out_bin_also_good { > my @layers = PerlIO::get_layers( STDOUT ); > binmode STDOUT, ':raw' or die "binmode: $!"; > print "BINÄR 4\t", @_; > print STDERR "* layer: $_\n" for PerlIO::get_layers( STDOUT ); > my $layers = join '', map ":$_", @layers; > binmode STDOUT, $layers; > print STDERR "reset STDOUT to $layers\n"; > print STDERR "* layer: $_\n" for PerlIO::get_layers( STDOUT ); > }
Considering the relative complexities of the approaches and the fact that conservation of filehandle state is not a concern in your case, I know which solution *I* would favour… Regards, -- Aristotle Pagaltzis // <http://plasmasturm.org/>