En Perl, comment 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?Comment créer un répertoire et des répertoires parents dans une commande Perl?
Répondre
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.
@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
Utilisation mkpath à partir du module File :: Path:
use File::Path qw(mkpath);
mkpath("path/to/sub/directory");
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
ref http://perldoc.perl.org/File/Path.html
« La fonction make_path crée les répertoires donnés si elles n'existe pas [sic!] Avant, un peu comme la commande Unix mkdir -p
»
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.
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
Cela ne crée-t-il pas une dépendance au système d'exploitation? –
- 1. java: créer des répertoires
- 2. combiner des répertoires dans un répertoire virtuel
- 3. Copier une arborescence de répertoires dans un seul répertoire sur une ligne de commande
- 4. Comment créer un répertoire immuable dans svn?
- 5. Comment obtenir une liste de répertoires dans Perl?
- 6. Comment puis-je sauter un répertoire et ses répertoires enfants lors de votre commande sur
- 7. Comment synchroniser deux répertoires avec Perl?
- 8. Commande Linux: Répertoire dans un répertoire
- 9. Comment créer une classe Perl?
- 10. Créer des sous-répertoires dynamiques en utilisant htaccess et php
- 11. Sharepoint .NET Créer un répertoire
- 12. Comment ajouter des fichiers et des répertoires à un fichier zip sans le répertoire racine?
- 13. comment créer un sous-répertoire dans un répertoire
- 14. Comment distinguer un fichier d'un répertoire en Perl?
- 15. Dans SVN, comment copier uniquement les sous-répertoires d'un répertoire dans un autre répertoire?
- 16. Comment copier un répertoire de manière récursive et filtrer les noms de fichiers en Perl?
- 17. Git: Comment ignorer les répertoires correspondants dans un sous-répertoire?
- 18. Comment transférer un répertoire avec plusieurs sous-répertoires sur ftp?
- 19. Comment puis-je créer un JFileChooser sur Mac pour permettre aux utilisateurs de créer des répertoires?
- 20. Comment inclure un module Perl dans un répertoire différent?
- 21. Pour créer un répertoire des employés
- 22. créer un répertoire dans l'iPhone
- 23. Créer une commande dans CruiseControl.NET avec des dépendances de projet
- 24. Comment créer des identifiants uniques en Perl?
- 25. Comment créer les répertoires spécifiés par un mappeur Ant
- 26. Rechercher un fichier dans le répertoire avec plusieurs répertoires
- 27. Trouver tous les fichiers dans un répertoire qui ne sont pas eux-mêmes des répertoires
- 28. Comment créer et utiliser une fausse structure de répertoire?
- 29. Comment créer (et supprimer) automatiquement un répertoire temporaire dans un Makefile?
- 30. Créer un tableau contenant des noms de fichiers dans un répertoire
Ajouté cette question afin que je puisse la retrouver facilement dans le futur, au lieu de la rechercher à chaque fois. Je cherche toujours cela dans POSIX.pm, pour une raison quelconque. – skiphoppy