Tengo un problema con la función addfile() del módulo Digest::SHA.
En ocasiones con determinados ficheros falla la función y termina el programa:
Read failed: Bad file descriptor at program.pl line 5
Lo que quiero es controlar ese error para que el programa continúe.
Según el autor del módulo, dicha función falla (croak) cuando no puede leer el fichero por cualquier razón:
The $io_handle is read until EOF and the content is appended to the message we calculate the digest for. The return value is the $ctx object itself.
The addfile() method will croak() if it fails reading data for some reason. If it croaks it is unpredictable what the state of the $ctx object will be in. The addfile() method might have been able to read the file partially before it failed. It is probably wise to discard or reset the $ctx object if this occurs.
In most cases you want to make sure that the $io_handle is in "binmode" before you pass it as argument to the addfile() method.
Using perl Syntax Highlighting
- use Digest::SHA;
- my @files;
- my $sha256 = Digest::SHA->new(256);
- foreach my $key (@files) {
- $sha256->addfile($key);
- print "Fichero: $key. Hash: $sha256\n";
- }
Coloreado en 0.004 segundos, usando GeSHi 1.0.8.4
El problema como digo es que, en ocasiones (porque está en uso o por cualquier otra razón), la función "casca" y el programa no prosigue. Por tanto, me gustaría saber si hay alguna opción de controlar ese error para continuar con la ejecución del programa.
Muchas gracias.
Un saludo,
Ricar.