In Perl, come posso creare una sottodirectory e, allo stesso tempo, creare directory madri se non esistono? Come il comando mkdir -p di UNIX?Come si crea una directory e directory madri in un comando Perl?
risposta
use File::Path qw(make_path);
make_path("path/to/sub/directory");
Il mkpath deprecato e make_path preferito derivava da una discussione in Perl 5 Porters filo che è archiviato here.
In poche parole, il test di Perl 5.10 ha rivelato l'imbarazzo nell'analisi degli argomenti dell'interfaccia makepath(). Quindi è stato sostituito con una versione più semplice che ha preso un hash come argomento finale per impostare le opzioni per la funzione.
@skiphoppy: questo non è ancora "come il comando mkdir -p di UNIX" come indicato nella domanda. La pagina man di mkdir mostra -p, --parents no error if existing, make parent directories as needed
Ma make_path restituirà false se la directory esiste. (cioè, make_path "/ tmp/foo" o die; #will die se esiste/tmp/foo) –
Randall
Usa mkpath dal modulo File :: Path:
use File::Path qw(mkpath);
mkpath("path/to/sub/directory");
Ricercando questo appena ora, vedo che mkpath() è deprecato e l'interfaccia ufficiale è ora make_path(). Se qualcuno scrive una grande spiegazione su ciò che ci compra, farò la risposta accettata. – skiphoppy
rif http://perldoc.perl.org/File/Path.html
"La funzione make_path crea le directory date se lo fanno non esiste [sic!] Prima, molto simile al comando Unix mkdir -p
"
Gentilmente ignorare se siete alla ricerca di un Perl modulo con funzionalità 'mkdir -p', ma il seguente codice dovrebbe funzionare:
my $dir = '/root/example/dir';
system ("mkdir -p $dir 2> /dev/null") == 0
or die "failed to create $dir. exiting...\n";
è possibile utilizzare un modulo, ma poi si deve installarlo su ogni server che si sta per port il codice su. Di solito preferisco usare la funzione di sistema per un lavoro come mkdir perché è un minore sovraccarico da importare e chiamare un modulo quando ne ho bisogno solo una volta per creare una directory.
Questo approccio ha senso se si desidera evitare l'installazione dei moduli. Di solito preferisco richiedere l'installazione di moduli di cui ho bisogno o mi rifiuto di supportare il sistema. :) Preferisco utilizzare i moduli in modo da poter beneficiare dei test e delle ricerche che li riguardano, in modo da evitare errori come il mancato controllo delle chiamate di sistema o la perdita dell'output dei messaggi di errore, e dal fatto che è meno sovraccarico non avere per creare un processo. – skiphoppy
Non crea una dipendenza dal sistema operativo? –
- 1. rsync - crea tutte le directory madri mancanti?
- 2. Come creare un nuovo file insieme alle directory madri mancanti?
- 3. Impedire che le directory madri vengano catapizzate
- 4. Come creare un file e le relative directory madri in una chiamata di metodo?
- 5. Trova file e stampa solo le loro directory madri
- 6. Comando Bash per creare un nuovo file e le relative directory principali, se necessario
- 7. Perl Challenge - Directory Iterator
- 8. Crea directory utilizzando Nant
- 9. Creare una directory e copiare un file
- 10. Crea directory + sottodirectory
- 11. Come si usa un modulo Perl in una directory non in @INC?
- 12. Come creare una nuova directory e un file in Vim
- 13. Codeigniter crea una directory se non esiste
- 14. SVN Crea directory come trunk ecc.
- 15. Perché eclipse crea una directory .settings?
- 16. Come posso includere un modulo Perl che si trova in una directory diversa?
- 17. Crea directory se non esiste
- 18. Come eseguo un comando da una directory specifica senza effettivamente passare a quella directory
- 19. Makefile: Crea in un albero di directory separato
- 20. Come si crea un modulo Perl?
- 21. Come creare un nuovo progetto Meteor in una directory esistente?
- 22. Cambia directory ed esegui il file in un comando
- 23. Come trovo la directory home di un utente in Perl?
- 24. Linux comando per spostare una directory
- 25. Come creare una directory temporanea in formica?
- 26. PHP Crea e salva un file txt nella directory principale
- 27. Come trovo la directory madre di un file in Perl?
- 28. Crea directory se non esiste
- 29. Concessione di "Crea directory" Privilegi in Oracle
- 30. Come directory sicure? E come creare nuove directory quando un utente si registra?
Aggiunta questa domanda così potrò ritrovarla facilmente in futuro, invece di cercarla ogni volta. Lo cerco sempre in POSIX.pm, per qualche ragione. – skiphoppy