Erstellen Sie ein Verzeichnis in Perl für eine Protokolldatei, falls sie nicht existiert

8

Ich habe ein Perl-Skript, das ein paar Argumente braucht. Es wird so ausgeführt:

%Vor%

Ich habe die folgende Zeile im Skript:

%Vor%

Dabei wird $logfilePath von der Befehlszeile übernommen. Wenn es einen Pfad gibt, / path / to / logfile /, aber kein logfile.log, erstellt er es einfach (was die gewünschte Aktion ist). Es kann jedoch nicht gestartet werden, wenn es keinen solchen Pfad gibt. Wie kann ich das Skript veranlassen, den Pfad für die Logdatei zu erstellen, wenn es vor dem Ausführen des Skripts nicht existiert?

    
user1546927 21.08.2012, 08:58
quelle

2 Antworten

17

Angenommen, Sie haben den Pfad zur Logdatei (die den Dateinamen enthalten kann: logfile.log ) in der Variablen $full_path . Anschließend können Sie bei Bedarf die entsprechende Verzeichnisstruktur erstellen:

%Vor%

Nun enthält $full_path den vollständigen Pfad zur logfile.log -Datei. Der Verzeichnisbaum im Pfad wurde ebenfalls erstellt.

    
Alan Haggai Alavi 21.08.2012, 09:26
quelle
6

Update: Wie Dave Cross darauf hingewiesen hat, erstellt mkdir nur ein einziges Verzeichnis. Dies funktioniert nicht, wenn Sie mehrere Ebenen gleichzeitig erstellen möchten.

Verwenden Sie Perls mkdir Befehl. Beispiel:

%Vor%

Die Verwendung von Perls eigener Funktion ist besser als die Ausführung eines Unix-Befehls.

Bearbeiten: Natürlich sollten Sie auch prüfen, ob das Verzeichnis zuerst existiert. Verwenden Sie -e , um zu prüfen, ob etwas existiert. Hinzufügen zu dem obigen Code:

%Vor%     
dan1111 21.08.2012 09:22
quelle

Tags und Links