Thread seltsames um print
(10 answers)
Opened by topeg at 2010-02-04 20:27
Wen es interessiert.
Hier ein " PerlIO::via" Paket, das alle Eingaben über ein Handle, das damit geöffnet wurde, in einer angegebene Datei mitschreibt. Das brauchte ich gerade. Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 #!/usr/bin/perl use strict; use warnings; # Paket zum kopieren aller Ein/Ausgaben {package PerlIO::via::mycopy; my $copyfile=undef; sub copyfile { my $f=shift(); # ignoriere die Übergeben Klasse oder Objekt $f=shift() if(defined($f) && (ref($f) eq __PACKAGE__ || $f eq __PACKAGE__) ); $copyfile = $f if(defined $f); return $copyfile; } sub PUSHED { my ($class,$mode,$fh)=@_; my $cf=$copyfile; return -1 unless(defined($cf)); if(ref($cf) ne 'GLOB') { $cf=undef; open($cf, '>', $copyfile) || return -1; } print $cf "Start Log at ".localtime()."\n"; return bless($cf,$class); } sub FILL { my ($myfh,$fh)=@_; if (defined( my $line=readline($fh) )) { print $myfh "IN: $line"; return $line; } return undef; } sub WRITE { my ($myfh,$buf,$fh)=@_; print $myfh "OUT: $buf"; return -1 unless(print $fh $buf); return length($buf); } 1;} package main; # entweder ein Filehande #open(my $log, '>', 'log.txt') or die "Error open Log ($!)\n"; #PerlIO::via::mycopy->copyfile($log); # oder ein Dateiname #PerlIO::via::mycopy->copyfile('log.txt'); # nach STDERR PerlIO::via::mycopy->copyfile(\*STDERR); { # STDOUT über mycopy umleiten open(my $stdout, ">&STDOUT"); close(STDOUT); open (STDOUT, ">&:via(mycopy)", $stdout) or die "Unable to mycopy standard output: $!\n"; } print "TEST1\n"; print "TEST2\n"; print "TEST3\n"; |