La seguente (non molto Perl-ish) CodiceCome si controlla il successo di open (file) in Perl?
#!/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 l'output come questo
directory doesn't exist.
file opened.
failed to write to file.
GLOB(0x...some-hex-digits...)
Perché $ fh non equivale a false a seguito del bando di concorso? As mydir/ non esiste, mi aspetto che il tentativo di aprire il file fallisca.
Ottengo risultati simili se la directory e il file esistono, ma il file è di sola lettura.
Ho provato questo con Perl 5.10.1 su Windows 7 x64 e con Perl 5.10.0 su Fedora-11 Linux.
Immagino che il mio test di gestione dei file sia sbagliato. Ho provato a cercarlo su Google senza fortuna. Mi aspetto che sia ovvio, ma qualsiasi suggerimento o collegamento sarebbe molto apprezzato.
Grazie, Rob.
Suggerimento aggiuntivo: usare 'perldoc -f open' per ottenere aiuto su una funzione integrata di Perl. – dolmen