(no muy Perl-ish) siguiente código¿Cómo se verifica el éxito de abrir (archivo) en Perl? El
#!/usr/bin/perl
if (! -e "mydir/")
{
print "directory doesn't exist.\n";
}
open (my $fh, ">", "mydir/file.txt");
if ($fh)
{
print "file opened.\n";
print $fh;
print $fh "some text\n" or die "failed to write to file.\n";
close ($fh);
}
else
{
print "failed to open file.\n";
}
produce la salida como este
directory doesn't exist.
file opened.
failed to write to file.
GLOB(0x...some-hex-digits...)
¿Por qué es $ fh no es equivalente a la falsa después de la llamada abierta? Como mydir/ no existe, esperaría que el intento de abrir el archivo fallara.
Obtengo resultados similares si el directorio y el archivo existen, pero el archivo es de solo lectura.
He intentado esto con Perl 5.10.1 en Windows 7 x64, y con Perl 5.10.0 en Fedora-11 Linux.
Supongo que la prueba de manejo de archivo es incorrecta. He intentado buscar en Google esto sin suerte. Espero que sea algo obvio, pero cualquier sugerencia o enlace sería muy apreciado.
Gracias, Rob.
Consejo adicional: use 'perldoc -f open' para obtener ayuda sobre una función incorporada de Perl. – dolmen