Verzeichniss als auswahl darstellen
Michael Tyssen
- cgi
Ich möchte Verzeichnisse mit deren Namen darstellen können.
Mit Dateinen soll das so gehen:
opendir(DIR, $verzeichnis) or die "kann Verzeichnis nicht lesen $!";
while (defined($file = readdir(DIR))) {
print "<a href="$file">$file</a><br>";
}
closedir(DIR);
Wie mache ich das jetzt mit Verzeichnisse?
Gruß
Tyssen
hi!
Mit Dateinen soll das so gehen:
opendir(DIR, $verzeichnis) or die "kann Verzeichnis nicht lesen $!";
while (defined($file = readdir(DIR))) {
print "<a href="$file">$file</a><br>";
}
closedir(DIR);
Wie mache ich das jetzt mit Verzeichnisse?
Genauso. Verzeichnisse sind auch nichts anderes als etwas speziellere
Dateien. Der obige Codeabschnitt gibt also nicht nur die Dateien,
sondern auch schon die Unterverzeichnisse aus.
Wenn du nur die Unterverzeichnisse ausgeben willst, könntest du zum
Beispiel noch eine Anweisung in die Schleife einbauen, die für jeden
Eintrag überprüft, ob es ein Verzeichnis ist:
if (-d $file) {
print $file, "\n";
}
bye, Frank!
Ich danke dir Frank,
manchmal sieht man den Wald vor lauter Bäume nicht.
jetzt muß ich nur noch die Anzeigen der Verzeichnisse drüber wegbekommen: . ..
Einen Dateitestoperator dafür ist bei selfhtml nicht gelistet oder ich habe es nicht gefunden.
Gruß
Tyssen
Einen Dateitestoperator dafür ist bei selfhtml nicht gelistet
oder ich habe es nicht gefunden.
http://selfhtml.teamone.de/cgiperl/funktionen/dateiverwaltung.htm#dateitest
Hi!
jetzt muß ich nur noch die Anzeigen der Verzeichnisse drüber wegbekommen: . ..
@dirs = grep(!/^..?$/, @dirs);
oder
use File::Spec ();
@dirs = grep(-d, File::Spec->no_upwards(readdir(DIR)));
oder
print($file) if (-d($file) && $file !~ /^..?$/);
oder
...
TA(S)MWTDI (there are (so) many ways to do it)
So long
Hi Tyssen,
Wie mache ich das jetzt mit Verzeichnisse?
da Du als Kontext nicht "Perl", sondern "CGI" angegeben hast:
Möchtest Du auf diese Weise "Directory Browsing" nachprogrammieren?
Wenn ja, dann weicht meine Antwort von derjenigen ab, die Frank bereits
gegeben hat.
In diesem Falle würdest Du ebenfalls einen Link (<a href>) ausgeben, aber
sinnvollerweise nicht auf das Verzeichnis, sondern - wiederum auf Dein
CGI-Skript selbst! Wobei Du diesem dann den Pfad zu diesem Verzeichnis
(und zwar möglichst nur einen _relativen_ Pfad - absolute Pfade über den
URL durchschleifen ist "böse") als CGI-Parameter übergibst.
Auf diese Weise kannst sich der Benutzer Deines Skripts von Verzeichnis
zu Verzeichnis 'durchhangeln'. Wenn Du auch wieder 'nach oben' willst,
dann mußt Du die Einträge '.' und '..' sonderbehandeln: '.' wirst Du
nicht brauchen, aber den tatsächlichen Wert von '..' mußt Du explizit
ausrechnen (eine Verzeichnisebene aus Deinem bisherigen relativen Pfad
entfernen).
Viele Grüße
Michael