Thread seltsames um print (10 answers)
Opened by topeg at 2010-02-04 20:27

topeg
 2010-02-05 00:34
#131830 #131830
User since
2006-07-10
2611 Artikel
BenutzerIn

user image
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";

View full thread seltsames um print