Dateinamen (regExp) in Verzeichnis finden

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