Come faccio a creare una directory e le directory principali in un comando Perl?
-
20-08-2019 - |
Domanda
In Perl, come posso creare una sottodirectory e, allo stesso tempo, creare directory principali se non esistono? Come il comando mkdir -p di UNIX?
Soluzione
use File::Path qw(make_path);
make_path("path/to/sub/directory");
Il mkpath deprecato e il make_path preferito derivano da una discussione nel thread di Perl 5 Porters che è archiviato qui .
In poche parole, i test di Perl 5.10 hanno mostrato imbarazzo nell'analisi dell'argomento dell'interfaccia makepath (). Quindi è stato sostituito con una versione più semplice che ha utilizzato un hash come argomento finale per impostare le opzioni per la funzione.
Altri suggerimenti
Usa mkpath dal modulo File :: Path:
use File::Path qw(mkpath);
mkpath("path/to/sub/directory");
Si prega di ignorare se si sta cercando un modulo Perl con funzionalità 'mkdir -p' ma il seguente codice funzionerebbe:
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 è necessario installarlo su ciascun server su cui si esegue il porting del codice. Di solito preferisco usare la funzione di sistema per un lavoro come mkdir perché è un overhead minore importare e chiamare un modulo quando ne ho bisogno solo una volta per creare una directory.
ref http://perldoc.perl.org/File/Path.html
" La funzione make_path crea le directory date se non esistono [sic!] prima, proprio come il comando Unix mkdir -p
"
mkdir () ti consente di creare directory nel tuo script Perl.
Esempio:
use strict;
use warnings;
my $directory = "tmp";
unless(mkdir($directory, 0755)) {
die "Unable to create $directory\n";
Questo programma crea una directory chiamata " tmp " con autorizzazioni impostate su 0755 (solo il proprietario ha l'autorizzazione per scrivere nella directory; i membri del gruppo e altri possono solo visualizzare i file ed elencare il contenuto della directory).