Las Cadenas como Ficheros

Es posible tratar una cadena como si de un fichero se tratara pasándole a open una referencia a la cadena:

open($fh, "<",  \$string);   # read only
open($fh, ">",  \$string);   # write only, discard original contents
open($fh, "+>", \$string);   # read and write, discard original contents
open($fh, "+<", \$string);   # read and write, preserve original contents

Si se pone $/ a una referencia a un entero se intentará leer el número de registros referenciado por dicho entero. Por ejemplo:

 local $/ = \32768; # or \"32768", or \$var_containing_32768
 open my $fh, $myfile or die $!;
 local $_ = <$fh>;
leerá no mas de 32768 bytes desde el fichero.

El siguiente programa:

lhp@nereida:~/Lperl/src/testing$ cat -n stringasfile.pl
 1  use strict;
 2
 3  my $var = '*' x 100;
 4  my $max_length = 10;
 5
 6  $/ = \$max_length; # input record separator
 7  $\ = "\n";         # output record separator
 8  open my $FH, "<", \$var or die;
 9  print while <$FH>;
Cuando se ejecuta produce como salida:

lhp@nereida:~/Lperl/src/testing$ perl stringasfile.pl
**********
**********
**********
**********
**********
**********
**********
**********
**********
**********

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