Hallo zusammen,
Ich möchte in Perl nachsehen, ob ein bestimmtes Namensmuster als Datei bereits in einem Verzeichnis steht.
Wenn ich den Dateinamen direkt angebe, wird er gefunden
=> if ( -e $dateiname ) {
Wenn ich das als regulären Ausdruck versuche (da ich nur den ersten Teil des Dateinamens kenne (der Rest ist variabel)) geht es nicht
=> if ( -e (/\b$vgl/) ) {
Hängt da daran, dass regExp keine Skalare sind und -e einen skalaren Ausdruck erwartet??
Wenn ja,wie kann ich das dann in PERL lösen??
Bin schon gespannt und sage schon mal DANKE fürs Mitdenken!!
Daniela
*************************
Hier meine Beispieldatei:
!/usr/bin/perl
$_ = „11490480330.tif“;
$vgl = „11490480330.tif“;
$verzeichnis = „C:\perltest“;
$pattern = „/\b“ . $vgl . „/“;
if (chdir $verzeichnis) {
if ( -e (/\b$vgl/) ) { # dies ergibt NEIN
if ( -e $vgl ) { # dies ergibt JA
if ( -e $pattern ) { # dies ergibt NEIN
print „Ja - $_ existiert\n“;
} else {
print „NEIN - $_ existiert nicht\n“;
}
} else {
print „Konnte nichts ins Verzeichnis $verzeichnis wecheln!\n“;
exit;
}
Hallo Daniela,
Ich möchte in Perl nachsehen, ob ein bestimmtes Namensmuster
als Datei bereits in einem Verzeichnis steht.
Wenn ich den Dateinamen direkt angebe, wird er gefunden
=> if ( -e $dateiname ) {
Wenn ich das als regulären Ausdruck versuche (da ich nur den
ersten Teil des Dateinamens kenne (der Rest ist variabel))
geht es nicht
=> if ( -e (/\b$vgl/) ) {
Hängt da daran, dass regExp keine Skalare sind und -e einen
skalaren Ausdruck erwartet??
Nein, Du musst dem regulären Ausdruck schon
sagen, gegen was er vergleichen soll:
sprich, Du musst die ganzen Dateinamen schon
mal irgendwie da haben.
Wenn ja,wie kann ich das dann in PERL lösen??
Meine Idee, ohne viel an Deinem Code
zu ändern, wäre glob(’*.*’) für die
Filenamen und grep{ expr } für das
raussuchen, z.B.:
$vgl = "11490480330.tif";
$verzeichnis = 'C:\perltest';
$pattern ='\b'.$vgl;
chdir $verzeichnis or die "gracefully: $! ($verzeichnis)";
my @list= **grep** { /$pattern/ } **glob** ('\*.\*');
if ( scalar @list ) { # dies ergibt 'true' wenn /$vgl/ da ist
print "Ja - $vgl existiert\n";
}
else {
print "NEIN - $vgl existiert nicht\n";
}
Oder so …
Grüße
CMБ
Lieber Semjon,
Danke, das war genau mein Denkfehler!!
Schöne Woche noch!!
Daniela