Wie kann ich ein Verzeichnis und übergeordnete Verzeichnisse in einem Perl-Befehl erstellen?

StackOverflow https://stackoverflow.com/questions/1050365

Frage

In Perl, wie kann ich erstellen Sie ein Unterverzeichnis, und zur gleichen Zeit erstellen geordnete Verzeichnisse, wenn sie nicht existieren? Wie UNIX ist mkdir -p Befehl?

War es hilfreich?

Lösung

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

Die veraltete mkpath und bevorzugte make_path ergab sich aus einer Diskussion in Perl 5 Porters fädeln, dass archiviert ist hier .

Auf den Punkt gebracht, wandte sich Perl 5.10 Testen Ungeschicklichkeit im Argument Parsen der MakePath () Schnittstelle auf. So wurde es mit einer einfacheren Version ersetzt, die einen Hash als letztes Argument nahmen Optionen für die Funktion zu setzen.

Andere Tipps

Verwenden mkpath aus dem Modul File :: Path:

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

Bitte ignorieren, wenn Sie für einen Perl-Modul suchen mit ‚mkdir -p‘ Funktionalität, aber der folgende Code funktionieren würde:

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

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

Sie können ein Modul verwenden, aber dann müssen Sie es auf jedem Server installieren Sie Port Ihren Code geht. Ich ziehe es in der Regel Systemfunktion für eine Arbeit wie mkdir zu verwenden, weil es ein geringerer Overhead ist ein Modul zu importieren und rufen, wenn ich es nur einmal benötigen Sie ein Verzeichnis zu erstellen.

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

„Die make_path Funktion erstellt die angegebenen Verzeichnisse, wenn sie nicht vorhanden ist [sic!] Vor, ähnlich wie der Unix-Befehl mkdir -p

mkdir () können Sie Verzeichnisse in Ihrem Perl-Skript erstellen.

Beispiel:

use strict;
use warnings;

my $directory = "tmp";

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

Dieses Programm erstellen Sie ein Verzeichnis „tmp“ mit Berechtigungen auf 0755 genannt (nur der Besitzer hat die Erlaubnis, in das Verzeichnis zu schreiben; Gruppenmitglieder und andere können nur Dateien anzeigen und den Verzeichnisinhalt auflisten).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top