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