OVH Cloud OVH Cloud

Fichier unique

3 réponses
Avatar
Arno
Bonjour,

Voila j'ai un script perl qui récupère des informations pour les stocker
dans un fichier. Jusque là pas de problème. Cependant, il peut y avoir
plusieurs instance du script qui tournent en même temps. J'ai donc besoin
que chaque script écrive ses données dans un fichier unique. Je me demandais
donc si il existait un équivalent à la fonction mkstemp du C ?

--
Arno - Pour le mail : http://cerbermail.com/?P5oJnDlxNt

3 réponses

Avatar
oups - Use ROT13 to decode
Arno wrote:

Bonjour,

Voila j'ai un script perl qui récupère des informations pour les stocker
dans un fichier. Jusque là pas de problème. Cependant, il peut y avoir
plusieurs instance du script qui tournent en même temps. J'ai donc besoin
que chaque script écrive ses données dans un fichier unique. Je me demandais
donc si il existait un équivalent à la fonction mkstemp du C ?



Bonjour,

l'utlisation de POSIX::getpid() (*) ou $$ peut t'aider, si :

$dataname="data";
$datapath="/path/to/data/";
$data=$datapath . $dataname . "_" . $$;
open(DATA, $data) or die (Cannot open $data : $!);

En esperant que ceci t'aide,
Cordialement,

(*) Returns the process identifier. Identical to
Perl's builtin variable $$, see "$PID" in perlvar.

--
oups

Avatar
David Landgren
Arno wrote:
Bonjour,

Voila j'ai un script perl qui récupère des informations pour les stocker
dans un fichier. Jusque là pas de problème. Cependant, il peut y avoir
plusieurs instance du script qui tournent en même temps. J'ai donc besoin
que chaque script écrive ses données dans un fichier unique. Je me demandais
donc si il existait un équivalent à la fonction mkstemp du C ?



Directe de la doc (perldoc -q temporary)

use File::Temp qw/ tempfile tempdir /;

$dir = tempdir( CLEANUP => 1 );
($fh, $filename) = tempfile( DIR => $dir );

# or if you don't need to know the filename

$fh = tempfile( DIR => $dir );

Ce module est dans la distribution depuis Perl 5.6.1, sinon il suffit
de le télécharger depuis CPAN.

David

Avatar
Arno
Un beau jour, David Landgren a écrit:

Arno wrote:
Bonjour,

Voila j'ai un script perl qui récupère des informations pour les
stocker dans un fichier. Jusque là pas de problème. Cependant, il
peut y avoir plusieurs instance du script qui tournent en même
temps. J'ai donc besoin que chaque script écrive ses données dans un
fichier unique. Je me demandais donc si il existait un équivalent à
la fonction mkstemp du C ?



Directe de la doc (perldoc -q temporary)

use File::Temp qw/ tempfile tempdir /;

$dir = tempdir( CLEANUP => 1 );
($fh, $filename) = tempfile( DIR => $dir );

# or if you don't need to know the filename

$fh = tempfile( DIR => $dir );

Ce module est dans la distribution depuis Perl 5.6.1, sinon il suffit
de le télécharger depuis CPAN.


Merci bien, c'est exactement ce que je cherchait.

--
Arno - Pour le mail : http://cerbermail.com/?P5oJnDlxNt