use utf8;
use strict;
use warnings; no warnings "redefine";
use Umlaut qw(textmodus);
use IO::File;
use Fehler qw(fehler);

sub writer($$) {
	my($data,$fn) = @_;

	my $fh = ref $fn ? $fn : new IO::File($fn,O_WRONLY|O_EXCL|O_CREAT);
	fehler "Could not create file '$fn': $!\n" unless $fh;

	textmodus($fh);
	{
		local $| = 1;
		my $r;
		if(ref $fh eq "GLOB") {
			$r = print $fh $data;
		} else {
			$r = $fh->print($data);
		}
		unless($r) {
			my $x = $!;
			unlink($fn);
			fehler "Write error on file '$fn': $x\n";
		}
	}
	ref $fn or $fh->close or do {
		my $x = $!;
		unlink($fn);
		fehler "Close error on '$fn': $x";
	};
	1;
}
1;
