[Perl] Redireccionar Output...
Gunnar Wolf
gwolf@campus.iztacala.unam.mx
Mon, 17 Jun 2002 12:37:48 -0500 (CDT)
> No... La idea es que a veces si lo mande con print normal y a veces con
> archivo... Para evitar tener que hacer dos rutinas, una para browser y ot=
ra
> para archivo...
Otra idea, m=E1s elegante y moderna: Usa IO::Handle, manejando los
filehandles como bonitos y pr=E1cticos objetos. S=ED, STDIN/STDOUT pueden s=
er
objeteados tambi=E9n:
open(ARCH,'>/tmp/archivo.out'); # No s=E9 si haya modo de abrirlo con un
# m=E9todo de IO::Handle, me parece que el
# m=F3dulo s=F3lo trabaja con filehandles y=
a
# existentes
my $stdout =3D IO::Handle->new;
die "No pude abrir STDOUT: $!" unless ($stdout->fdopen(fileno(STDOUT),'w'))=
;
my $arch =3D IO::Handle->new;
die "No pude abrir el archivo: $!" unless ($arch->fdopen(fileno(ARCH),'w'))=
;
genHtml($stdout); # Se va a STDOUT
genHtml($arch); # Se va a ARCH
undef $arch; # Lo cierra autom=E1ticamente al destruir el objeto
sub genHtml {
my $fd =3D shift;
die "El argumento no me gusta!" unless (ref $fd eq 'IO::Handle');
die "El archivo no est=E1 abierto!" unless ($io->opened);
while (my $cont =3D genContenido()) {
$fd->print($cont);
}
return 0;
}
--=20
Gunnar Wolf - gwolf@campus.iztacala.unam.mx - (+52-55)5623-1118
PGP key 1024D/8BB527AF 2001-10-23
Fingerprint: 0C79 D2D1 2C4E 9CE4 5973 F800 D80E F35A 8BB5 27AF