Tengo muchas líneas almacenadas en una sola variable en Perl.Lectura de la variable en Perl
Me gustaría saber si es posible leer esas líneas usando el operador <>.
Tengo muchas líneas almacenadas en una sola variable en Perl.Lectura de la variable en Perl
Me gustaría saber si es posible leer esas líneas usando el operador <>.
Sí. Como se documenta en perldoc -f open
, puede abrir filehandles a variables escalares.
my $data = <<'';
line1
line2
line3
open my $fh, '<', \$data;
while (<$fh>) {
chomp;
print "[[ $_ ]]\n";
}
# prints
# [[ line1 ]]
# [[ line2 ]]
# [[ line3 ]]
Si realmente lo necesita, puede abrir una manejador de archivos para ello.
use strict;
use warnings;
my $lines = "one\ntwo\nthree";
open my $fh, "<", \$lines;
while(<$fh>) {
print "line $.: $_";
}
Alternativamente, si ya ha conseguido la materia en la memoria de todos modos, usted podría dividir en una matriz:
my @lines = split /\n/, $lines; # or whatever
foreach my $line(@lines) {
# do stuff
}
que probablemente sería más fácil de leer y mantener la línea.
encontré una alternativa útil,
, no consume < > pero funciona como si lo hiciera
for (split /^/, $lines) {
...
}
Una posible razón para hacer esto es el truco de 'ARGV abierta, '<', \ $ default_data a menos que @ ARGV' luego leyendo '<>' use los datos predeterminados a menos que se pasen los archivos. –