Wie kann ich die cd in ein Verzeichnis mit perl?
Ich versuche Folgendes..
system "cd directoryfolder"
aber es funktioniert nicht, auch ich versuche das system "exit" verlassen Sie das terminal, aber es funktioniert nicht.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Code:
Perldoc:
system
vor derchdir
.system
fordert, muss wohl ein shell-Skript statt. Versuchen Sie Folgendes direkt auf der command line:wget download.com/download.zip; unzip download.zip; cd download; sh install.sh
.Der Grund, warum Sie nicht tun, diese Dinge durch den Aufruf
system
ist, dasssystem
wird einen neuen Prozess starten, führen Sie Ihren Befehl, und die Rückgabe des exit-status. Also, wenn Sie rufensystem "cd foo"
starten Sie ein shell-Prozess, das wird, wechseln Sie zu den "foo" - Verzeichnis und beendet sich dann. Nichts jeder Folge passieren wird, in Ihrem perl-Skript. Ebensosystem "exit"
wird einen neuen Prozess starten und sofort beenden es wieder.Was wollen Sie für die cd-Hülle, ist - wie bobah Punkte aus - die Funktion
chdir
. Für das beenden des Programms, gibt es eine Funktionexit
.Jedoch - weder von denen auf den Zustand des terminal-Sitzung, die Sie sind in. Nach Ihrem perl-Skript abgeschlossen ist, wird das Arbeitsverzeichnis des Terminals wird die gleiche wie vor dem Start, und Sie werden nicht in der Lage, um zu beenden der terminal-Sitzung, indem Sie
exit
in Ihrem perl-Skript.Dies ist, weil Ihre perl-Skripts ist wieder ein separater Prozess vom terminal aus Schale, und die Dinge, die geschehen, in separaten Prozessen in der Regel nicht gegenseitig stören. Dies ist ein feature, kein bug.
Wenn Sie möchten, Dinge zu ändern, die in Ihrer shell-Umgebung, müssen Sie Anweisungen, die verstanden und interpretiert, die von Ihrer shell.
cd
ist so ein builtin-Befehl in der shell, wieexit
.Ich immer wieder gerne erwähnen
File::chdir
fürcd
-ing. Es ermöglicht änderungen an der working-directory, die lokal auf den umschließenden block.Als Peder erwähnt, das Skript ist im Grunde alle Systemaufrufe zusammen gebunden mit Perl. Ich präsentiere eine weitere Perl-Implementierung.
wird:
Diese verwendet auch zwei nicht-core-Module (und
Archive::Extract
wurde nur Kern seit Perl v5.9.5), so müssen Sie möglicherweise um Sie zu installieren. Verwenden Sie diecpan
- Dienstprogramm (oderppm
auf AS-Perl) zu tun.