-+  Associazione
-+  Documenti
 |-  Modern Perl
 |-  Bibliografia
 |-  Articoli
 |-  Talk
 |-  Perlfunc
 |-  F.A.Q.
 |-  F.A.Q. iclp
-+  Eventi
-+  Community
-+  Blog
-+  Link
Corso di Perl



 


indietro

[6] Come si crea un file temporaneo? file, temporaneo

Se non vi serve conoscere il nome del file, potete usare open() con undef al posto del nome del file. La funzione open() crea un file temporaneo anonimo.

	open my $tmp, '+>', undef or die $!;
	
Altrimenti, potete usare il modulo File::Temp.
  use File::Temp qw/ filetemp dirtemp /;
  $dir = dirtemp( CLEANUP => 1 );
  ($fh, $nomefile) = filetemp( DIR => $dir );
  # oppure, se non avete bisogno del nome del file
  $fh = filetemp( DIR => $dir );

File::Temp è un modulo standard fin dal Perl 5.6.1. Se avete installato un Perl abbastanza recente, usate il metodo di classe new_tempfile dal modulo IO::File per ottenere un file aperto in lettura e scrittura. Usate quanto segue se non avete la necessità di sapere il nome del file:

    use IO::File;
    $fh = IO::File->new_tmpfile()
        or die "Impossibile creare un nuovo file temporaneo: $!";

Se siete costretti a creare un file temporaneo a mano, usate l'ID del processo e/o il valore dell'ora corrente. Se avete bisogno di più file temporanei in un unico processo, usate un contatore:

    BEGIN {
        use Fcntl;
        my $dir_temp = -d '/tmp' ? '/tmp' : $ENV{TMPDIR} || $ENV{TEMP};
        my $nome_base = sprintf("%s/%d-%d-0000", $dir_temp, $$, time());
        sub file_temp {
            local *FH;
            my $conta = 0;
            until (defined(fileno(FH)) || $conta ++ > 100) {
                $nome_base =~ s/-(\d+)$/"-" . (1 + $1)/e;
                # O_EXCL e` richiesto per ragioni di sicurezza. 
                sysopen(FH, $nome_base, O_WRONLY|O_EXCL|O_CREAT);
            }
            if (defined(fileno(FH))) {
                return (*FH, $nome_base);
            } else {
                return ();
            }
        }
    }

vedi in inglese

AUTORE E COPYRIGHT

Copyright (c) 1997, 1998, 1999, 2000, 2001 Tom Christiansen e Nathan Torkington. Tutti i diritti riservati.

Questa documentazione è libera; puoi ridistribuirla e/o modificarla secondo gli stessi termini applicati al Perl.

Indipendentemente dalle modalitè di distribuzione, tutti gli esempi di codice in questo file sono rilasciati al pubblico dominio. Potete, e siete incoraggiati a farlo, utilizzare il presente codice o qualunque forma derivata da esso nei vostri programmi per divertimento o per profitto. Un semplice commento nel codice che dia riconoscimento alle FAQ sarebbe cortese ma non è obbligatorio.

D:
Progetti e documenti in rilievo
Corso di Perl Progetto pod2it
D:
La ML di Perl.it
mongers@perl.it è la lista ufficiale di Perl Mongers Italia per porre quesiti di tipo tecnico, per rimanere aggiornato su meeting, incontri, manifestazioni e novità su Perl.it.
Iscriviti!
D:
Annunci Google