2009-06-26 8 views

Répondre

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

Le mkpath dépréciée et make_path préféré provient d'une discussion en Perl 5 Porters fil qui est archivé here. En un mot, le test Perl 5.10 a montré une maladresse dans l'analyse de l'argument de l'interface makepath(). Il a donc été remplacé par une version plus simple qui prenait un hachage comme argument final pour définir les options de la fonction.

+3

@skiphoppy: Ceci n'est toujours pas "comme la commande mkdir -p d'UNIX" comme indiqué dans la question. La page de manuel de mkdir montre -p, --parents no error if existing, make parent directories as needed Mais make_path retournera false si le répertoire existe. (ie, make_path "/ tmp/foo" ou die: # will die si/tmp/foo existe) – Randall

3

Utilisation mkpath à partir du module File :: Path:

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

En recherchant cela tout à l'heure, je vois que mkpath() est obsolète et que l'interface officielle est maintenant make_path(). Si quelqu'un écrit une grande explication sur ce que cela nous achète, je vais faire de cela la réponse acceptée. – skiphoppy

3

Veuillez ignorer si vous cherchez un Perl module avec fonctionnalité « mkdir -p », mais le code suivant fonctionnerait:

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 l'installer sur chaque serveur que vous allez au port votre code sur. Je préfère généralement utiliser la fonction système pour un travail comme mkdir car il s'agit d'un moindre coût d'importation et d'appel d'un module lorsque j'en ai besoin qu'une seule fois pour créer un répertoire.

+0

Cette approche est logique si vous voulez éviter d'installer des modules. Je préfère généralement demander l'installation des modules dont j'ai besoin, ou je refuse de supporter le système. :) Je préfère utiliser des modules pour pouvoir tirer parti des tests et des recherches qui y sont effectués, afin d'éviter les erreurs telles que la non-vérification des appels système ou la perte de messages d'erreur. pour créer un processus. – skiphoppy

+0

Cela ne crée-t-il pas une dépendance au système d'exploitation? –

Questions connexes