11 votes

Comment créer un répertoire s'il n'en existe pas en utilisant Perl ?

Actuellement, ma sortie Perl est codée en dur pour se déverser dans le répertoire UNIX suivant :

my $stat_dir = "/home/courses/".**NEED DIR VAR HERE**;

Le nom du fichier est construit comme tel :

$stat_file = $stat_dir . "/".$sess.substr($yr, 2, 2)."_COURSES.csv";

J'ai besoin d'une approche similaire pour créer des répertoires UNIX, mais je dois d'abord vérifier s'ils existent avant de les créer.

BONUS DE CRÉDIT SUPPLÉMENTAIRE :
Numérotation automatique (révisions) du fichier $stat_file afin que lorsque ces fichiers sont pompés dans le même répertoire, ils n'écrasent pas ou ne s'ajoutent pas aux fichiers existants dans le répertoire. (Je ne sais pas si cette question a déjà été posée sur S.O. - désolé si c'est un re-post)

19voto

chaos Points 69029

Erm... mkdir $stat_dir unless -d $stat_dir ?

Cela ne semble pas être une bonne idée d'intégrer des questions "supplémentaires" de ce type.

14voto

Ed Guiness Points 21866

Utilisez le -d opérateur et Fichier::Chemin .

eval { mkpath($dir) };
if ($@) {
  print "Couldn't create $dir: $@";
}

mkpath a un avantage (sur mkdir ) qu'il peut créer des arbres de profondeur arbitraire.

Et utiliser -e pour vérifier que le fichier existe

my $fileSuffix = 0;
while (-e $filename) {
    $filename = $filePrefix . ++$fileSuffix . $fileExtension;
}

4voto

hpavc Points 930

Rappelez-vous que l'existence des répertoires -d ne signifie pas que -w est accessible en écriture. Mais en supposant que vous êtes dans une zone personnelle, le mkdir($dir) unless(-d $dir) devrait fonctionner correctement.

3voto

MGoDave Points 1538

Perl a une fonction intégrée 'mkdir'.

Jetez un coup d'œil à perldoc perlfunc ou à le mkdir script de Perl Power Tools .

Je crois qu'il est sûr de créer un répertoire qui existe déjà, jetez un coup d'œil à la documentation.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X