Dateinamen oder Dateipfad in string extrahieren
kadauz
- perl
Hallo,
wie kann ich in perl aus einem bestimmte Ordner die Dateinamen bzw. den volständigen Pfad der einzelnen Dateien in nen string bekommen?
Diese dann enstehenden string sollen in ein array.
Danke für Tipps!!!
wie kann ich in perl aus einem bestimmte Ordner die Dateinamen bzw. den volständigen Pfad der einzelnen Dateien in nen string bekommen?
Diese dann enstehenden string sollen in ein array.
Deine Suchbegriffen heissen opendir() readdir() sowie filetests -f -T
mfg Beat
»» wie kann ich in perl aus einem bestimmte Ordner die Dateinamen bzw. den volständigen Pfad der einzelnen Dateien in nen string bekommen?
»» Diese dann enstehenden string sollen in ein array.Deine Suchbegriffen heissen opendir() readdir() sowie filetests -f -T
mfg Beat
Ok, das heißt damit kann ich den Namen von beliebig vielen und nicht bekannten Dateien in ein array bekommen?
»» »» wie kann ich in perl aus einem bestimmte Ordner die Dateinamen bzw. den volständigen Pfad der einzelnen Dateien in nen string bekommen?
»» »» Diese dann enstehenden string sollen in ein array.
»»
»» Deine Suchbegriffen heissen opendir() readdir() sowie filetests -f -T
»»
»» mfg BeatOk, das heißt damit kann ich den Namen von beliebig vielen und nicht bekannten Dateien in ein array bekommen?
Ok, soweit so gut. Jetzt hab ich aber nen weiteres Problem:
Ich habe folgenden Quellcode:
#/usr/bin/perl -w
use strict;
use File::Find;
#my $verzeichnis = '/htdocs/privat';
my @file_list=();
find sub {push @file_list, $File::Find::name}, $verzeichnis;
print "Content-type: text/html\n\n";
print '<html>';
print '<head>';
print '<meta name="kadauz" content="nopnop">';
foreach(@file_list)
{
print "<a href='$_'>$_</a>";
print "<br>";
}
print "</head>";
print "</body></html>";
Dieses Script soll praktisch alle Dateien samt Verzeichnis in /htdocs/privat auflisten und als Link ausgeben.
Mit Xamp macht es das auch ohne Probleme. Auf dem Webspace leider nicht. Wobei kein Fehler erscheint, sondern es so aussieht als sei das @file_list nicht befüllt. Soll heißen, er geht nicht bei foreach in die Schleife.
An was kann das liegen? Vielleicht am htdocs Ordner?
An was kann das liegen? Vielleicht am htdocs Ordner?
Möglich.
File Find braucht den korrekten Pfad.
Lass dir mal _auf dem Server_ den Inhalt von $0 ausgeben.
mfg Beat
Mit Xamp macht es das auch ohne Probleme. Auf dem Webspace leider nicht. Wobei kein Fehler erscheint, sondern es so aussieht als sei das @file_list nicht befüllt. Soll heißen, er geht nicht bei foreach in die Schleife.
An was kann das liegen? Vielleicht am htdocs Ordner?
Bist du sicher, dass der Ordner an dieser Stelle existiert? Warum prüfst du das nicht?
Struppi.
»» Mit Xamp macht es das auch ohne Probleme. Auf dem Webspace leider nicht. Wobei kein Fehler erscheint, sondern es so aussieht als sei das @file_list nicht befüllt. Soll heißen, er geht nicht bei foreach in die Schleife.
»» An was kann das liegen? Vielleicht am htdocs Ordner?Bist du sicher, dass der Ordner an dieser Stelle existiert? Warum prüfst du das nicht?
Struppi.
Ich habs geschafft. Die Pfadangabe musste ich relativ zum cgi-bin Ordner angeben, also: ../htdocs/privat
Danke für Eure Hilfe
Hallo mein Guter,
wie kann ich in perl aus einem bestimmte Ordner die Dateinamen bzw. den volständigen Pfad der einzelnen Dateien in nen string bekommen?
Diese dann enstehenden string sollen in ein array.
Schau Dir mal das Modul File::Find; an.
Oder konventionell mit readdir:
$dir = "c:/";
opendir DIR, $dir or die $!;
@files = grep{-f "$dir$_"}readdir DIR;
closedir DIR;
-f stellt dabei sicher, dass da nur Dateien ankommen. Die Funktion readdir() gäbe sonst auch . und .. zurück, das könntest du auch mit grep{not /^./} rausfiltern.
Viele Grüße,
Horst Haselhuhn
Hallo,
wie kann ich in perl aus einem bestimmte Ordner die Dateinamen bzw. den volständigen Pfad der einzelnen Dateien in nen string bekommen?
Diese dann enstehenden string sollen in ein array.Danke für Tipps!!!
glob http://de.selfhtml.org/perl/funktionen/dateiverwaltung.htm#glob
Hallo,
wie kann ich in perl aus einem bestimmte Ordner die Dateinamen bzw. den volständigen Pfad der einzelnen Dateien in nen string bekommen?
Diese dann enstehenden string sollen in ein array.Danke für Tipps!!!
Ok, hilft mir schon gut weiter.
Aber ich hab ein dickes Prob. Ich entwickel normal nur unter Linux. Jetzt wollt ich aber was unter Windows entwickeln und hab foldende normale Zeile drin:
my $Verzeichnis = "C:\Users\Sascha\Desktop\test";
Wenn ich nun $Verzeichnis ausgebe, dann kommt foldender string:
C:SERSSASCHADESKTOP ESTPS
Somit kann das Prog im weiteren Verlauf natürlich nichts mehr finden.
Was mach ich falsch?
hi Sascha,
"C:\Users\Sascha\Desktop\test";
Was mach ich falsch?
Das da: \ Notiere entweder den "/", oder maskiere den Backslash. Also ein3 Pfadangabe like c:/windows/system32/drivers/etc ist für Perl absolut ok.
Nochwas:
use Cwd 'chdir';
chdir "/tmp";
@htmls = <*.html>; # Glob, siehe Post weiter oben vom Kollegen
It means: Du kannst, sofern Du alles auf einunddemselben Laufwerk abwickelst, den Driveletter auch weglassen.
Viele Grüße,
Horst