PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Perl Regular Expression... Ich zweifle an mir selbst... ;-(



26-04-2000, 15:11
Hallo!

Also die Regexp schaut doch eigentlich gut aus; wenn ich das folgende
Progrämmchen bei mir laufen lasse, liefert es ordentlich "1":

<pre>
#!/usr/bin/perl -w

use strict;

my $NameIsDir=0;
my $Comp = "/verzeichnis";

$NameIsDir = 1 if ( $Comp =~ /^\/.*/ ); # Deine Zeile
print ("\n\$NameIsDir = $NameIsDir\n\n");
</pre>

und mit $Comp = "irgendwas ohne schrägstrich" bringt es ganz normal
"0".

Bist Du Dir sicher, daß Dein Inhalt von $Comp wirklich stimmt?
Oder vielleicht hast Du an einer der Spezialvariablen ($[ o.ä.)
etwas verstellt (falls die da was beeinflussen können, mit denen
bin ich nicht besonders fit)?

cu,
Michael.

robert
27-04-2000, 00:34
Also irgend wie glaub ich langsam ich sollte noch mal ganz am Anfang mit Perl anfangen, oder meine Logik kommt da einfach nicht mehr mit und ich werde zu alt... http://www.linuxinfoserver.de/ubb/frown.gif

Folgendes:

Variable enthält einen Verzeichnis/Datei Namen (keinen kompletten Pfad, nur Namen).
Bei Verzeichnissen steht aber am ANFANG ein slash '/' als Kennzeichnung das es ein Verzeichnis ist.
Nun wollte ich dies ganz einfach abfragen, wie folgt.



$NameIsDir = 1 if ( $Comp =~ /^\/.*/ );


Aber das will zum Teufel einfach nicht funtkionieren. Und ich bin nun wirlich jemand der erst mal alles versucht um so ein (blödes, simples) Problem selber zu lösen.

Ich weiß aber nicht mehr woran es liegt. Irgend was scheine ich mal wieder nicht zu beachten.

Also, hat jemand einen winzigen kleinen Tip, der dem (verkalkenden?) Robert weiter hilft?

Robert

robert
27-04-2000, 17:18
Vielleicht ein kleiner Nachtrag zur Lösung.

Es lag NICHT an RE, sondern an einem einfachen Verhalten von Perl das ich nicht beachtet habe.



my @Liste = ('/privat', 'test', 'foo.bar')

foreach my $Comp (@Liste)
{
my $IsDirName = 0;

$IsDirName = 1 if ( $Comp =~ /^\/.*/ );
$Comp =~ s#/##; <== hier ist mein Fehler!!!
.
.
.
}


Ich habe nicht bedacht, daß beim Ändern von $Comp der Eintrag auch in @Liste geändert wird. Dadurch hat es zwar beim 1. Durchlauf funktioniert, aber der obige Code lag selber noch mal in einer Schleife um Verzeichnisinhalte mit der Liste zu Vergleichen.

Robert

robert
28-04-2000, 00:19
Hallo!

Also erst mal vielen Dank für die Bestätigung das die RE doch richtig ist (ich hab echt schon an mir gezweifelt...).

Eigentlich war (!) ich ziemlich sicher das $Comp stimmt, aber jetzt denk ich mal, das es wohl nicht so ist.

Also auf zum fröhlichem Suchen wo der Fehler steckt...

Gruß

Robert


[Diese Nachricht wurde von robert am 27. April 2000 editiert.]