Question

Sous Perl, comment puis-je créer un sous-répertoire et, en même temps, créer des répertoires parents s'ils n'existent pas? Comme la commande mkdir -p d'UNIX?

Était-ce utile?

La solution

use File::Path qw(make_path);
make_path("path/to/sub/directory");

Les méthodes obsolètes mkpath et make_path préféré résultent d'une discussion dans le fil de discussion Perl 5 Porters archivé ici .

En résumé, les tests Perl 5.10 ont révélé une gêne dans l'analyse des arguments de l'interface makepath (). Elle a donc été remplacée par une version simplifiée utilisant un hachage comme dernier argument pour définir les options de la fonction.

Autres conseils

Utilisez mkpath à partir du module File :: Path:

use File::Path qw(mkpath);
mkpath("path/to/sub/directory");

Veuillez ignorer si vous recherchez un module Perl avec la fonctionnalité 'mkdir -p' mais que le code suivant fonctionne:

my $dir = '/root/example/dir';

system ("mkdir -p $dir 2> /dev/null") == 0 
    or die "failed to create $dir. exiting...\n";

Vous pouvez utiliser un module, mais vous devez ensuite l'installer sur chaque serveur sur lequel vous allez porter votre code. Je préfère généralement utiliser la fonction système pour un travail tel que mkdir, car il s’agit d’une charge moins lourde à importer et à appeler un module lorsque j’en ai besoin une seule fois pour créer un répertoire.

ref http://perldoc.perl.org/File/Path.html

" La fonction make_path crée les répertoires donnés s'ils n'existent pas [sic!] auparavant, un peu comme la commande Unix mkdir -p "

mkdir () vous permet de créer des répertoires dans votre script Perl.

Exemple:

use strict;
use warnings;

my $directory = "tmp";

unless(mkdir($directory, 0755)) {
        die "Unable to create $directory\n";

Ce programme crée un répertoire appelé " tmp " avec les autorisations définies sur 0755 (seul le propriétaire a l'autorisation d'écrire dans le répertoire; les membres du groupe et les autres peuvent uniquement afficher les fichiers et répertorier le contenu du répertoire).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top