Paso de un Fichero sin Prefijo como Typeglob

Los manejadores de ficheros (filehandles) pueden ser usados sin declaración previa cuando se usan sin prefijo. En tal caso no se pueden asignar o pasar como parámetros, esto es, es ilegal hacer:

open(F,"fich1"); # Recomendado: open my $F, "fich1";
open(G,"fich2");
F = G;
En los años A.R. (Antes de las Referencias) la alternativa era hacer una asignación de los typeglobs:
                  *F = *G

Lo mismo ocurrıa para el paso de ficheros como parámetros de una función. Vea el siguiente ejemplo:

lhp@nereida:~/Lperl/src$ cat -n fileparameter4.pl
 1  #!/usr/bin/perl
 2  use warnings;
 3  use strict;
 4
 5  sub welcome {
 6    local *FHANDLE = shift;
 7
 8    print FHANDLE "Welcome ...\n";
 9  }
10
11  open(FILE, ">test.txt");
12  welcome(*FILE);
13  close(FILE);

Casiano Rodríguez León
Licencia de Creative Commons
Principios de Programación Imperativa, Funcional y Orientada a Objetos Una Introducción en Perl/Una Introducción a Perl
por Casiano Rodríguez León is licensed under a Creative Commons Reconocimiento 3.0 Unported License.

Permissions beyond the scope of this license may be available at http://campusvirtual.ull.es/ocw/course/view.php?id=43.
2012-06-19