Perl se queda colgado en el bucle while.
Este código se queda colgado por alguna razón o simplemente no avanza más cuando se consulta `while (<>) { $file .= $_};
. ¿Por qué sucede eso?
Tan pronto como inicio el código con el texto ingresado, no ocurre más que imprimir task1
y luego se queda colgado.
Código:
“`
<h1>!/usr/bin/perl -w</h1>
use strict;
use JSON;
my $json = JSON->new->allow_nonref;
my $file = "";
print('task1');
while (<>) { $file .= $_ };
print('task2');
my $json<em>output = $json->decode( $file );
my ($c, $i, $cstr, $istr);
foreach my $cert (@$json</em>output) {
<pre><code> print('task3');
$i = $json_output->{i};
$c = $json_output->{c};
$istr = join("", map { sprintf("%02x",$_) } @$i);
$cstr = pack("C*", @$c);
open(F, ">$istr.der"); print F $cstr; close(F);
print('done.');
</code></pre>
}
<code>
Output:
</code>
task1
“`
davy.ai
El código se queda colgado porque el bucle while está esperando una entrada desde la entrada estándar (stdin), la cual puede ser proporcionada ya sea a través de la línea de comandos o ingresando datos al ejecutar el script. Como no se está proporcionando ninguna entrada, el bucle while sigue esperando por la entrada y el script parece estar bloqueado. Para solucionar esto, es necesario proporcionar una entrada para que el bucle while pueda procesarla.