perl - ¿Cómo puedo usar__DATA__ dos veces?
filehandle (2)
Para usar el archivo DATA maneja dos veces, debes rebobinarlo. El truco es que si seek(DATA, 0, 0) , se __DATA__ en la primera línea fuente, no en la línea después de __DATA__ . Por lo tanto, primero debe guardar la posición:
my $data_start = tell DATA; # save the position
print while (<DATA>);
seek DATA, $data_start, 0; # reposition the filehandle right past __DATA__
print while (<DATA>);
Ver también:
¿Cómo puedo usar __DATA__ dos veces?
#!/usr/local/bin/perl
use warnings;
use 5.012;
while ( <DATA> ) {
print;
}
while ( <DATA> ) {
chomp if $. == 1;
print scalar reverse;
print "/n" if eof;
}
__DATA__
one
two
three
four
five
six
Puede usar el módulo Data::Handle para hacer el tell()ing y seek() ing detrás de las escenas. (Aunque creo que si tiene Perl 5.10 o posterior, puede dup el identificador del archivo DATA lugar de compartir el identificador original del archivo DATA y buscarlo de ida y vuelta en él).