Hilfe bei Regular Expressions...
korrigan
- perl
Hallo zusammen,
ich habe zur Zeit ein Problem mit meinem Perl Script!
Ich übergebe via Konsole einen Pfad zu einem Verzeichnis auf einem Server und aufgrund dieser Übergabe wird geprüft, wie der Zustand des Verzeichnisses (also freier Speicher, vergebener Speichert etc. ) ist.
Mein Problem ist nun, das dieser Pfad ja in einer Variablen gespeichert ist, ich jedoch festlegen muss, das der Pfad nicht "mitten in einem anderen Pfad auftaucht", sprich, der Pfad genau so anfängt wie der übergebene! Wie kann ich nun Festlegen, dass nur dann ein Verzeichnis gefunden wird wenn auch diese Bedingung zutrifft?
An die Verzeichnisse und ihre Zustände komme ich mittels "df -lk". Das ergebnis wird in einer Variablen zwischengespeichert und die Variable wird dann zeilenweise darauf geprüft ob sie den gesuchten Pfad enthält.
Beispiel:
if($variable =~ /$pfad/){
... prüfe das Verzeichnis...
}
vllt kann mir jemand weiter helfen, habe langsam keine Idee mehr :(
Vielen Dank und liebe Grüße
vllt kann mir jemand weiter helfen, habe langsam keine Idee mehr :(
Tja die Ideen kommen, wenn man die Grundlagen von Perl RE überhaupt erst einmal zur Kenntnis nimmt.
Vielleicht suchst du aber eher index();
mfg Beat
Vielleicht suchst du aber eher index();
hmm... ich möchte ja nicht das vorhanden sein eines, zum Beispiel slashes überprüfen, sondern ob der Pfad genau dem entspricht was übergeben wurde!
die Endbedingung setze ich ja mit einem einfachen "$" hinter der variablen und hatte vielleicht gedacht es gäbe soetwas auch für den Anfang. Bzw. habe auch schon Dinge in der Richtung gefunden, jedoch bestand da das problem, dass ich keinen "festen String" prüfe sondern eben eine Variable
Was ich will ist Quasi: Treffe nur, wenn der Beginn des Pfades genauso lautet wie der übergebene Pfad!
Wenn also das Verzeichnis "/home/robert/schule" lautet und ich den Pfad "/schule" übergebe soll er mir NICHT dieses Verzeichnis geben!
Bei der Übergabe von "/home/*" soll er wiederum treffen! (Das mit dem Stern ist bereits gelöst)
@Beat: Werde mich jetzt nochmal genauer mit index() beschäftigen, es wird wahrscheinlich funktionieren aber ist eben etwas komplizierter und ich hatte gehofft eine schnelle einfache Lösung mit Hilfe der RegExp zu bekommen :)
@Beat: Werde mich jetzt nochmal genauer mit index() beschäftigen, es wird wahrscheinlich funktionieren aber ist eben etwas komplizierter und ich hatte gehofft eine schnelle einfache Lösung mit Hilfe der RegExp zu bekommen :)
my $Vorgabe = '/user/home';
my $Input ='/user/home/some/path';
( index( $Input, $Vorgabe) != 0 )
and return( 'Falsche Pfadangabe');
Hingegen öffnest du bei m/$Userinput/ andere Gefahren, die du erst beherrschen lernen musst.
mfg Beat
Moin, moin!
Was das $ für das Ende ist, ist das ^ für den Anfang.
Alles klar?
Norbert
Was das $ für das Ende ist, ist das ^ für den Anfang.
Naja... das hab ich ja schon probiert, soweit hat mir dann auch google weiter geholfen ;) Das funktioniert allerdings leider nicht.
Ich vermute das Problem liegt an der Variablen! Ich werd es nun mit dem Index probieren =)
Ich danke euch für die Antworten und die Hilfe
Liebe Grüße
» Was das $ für das Ende ist, ist das ^ für den Anfang.
Naja... das hab ich ja schon probiert, soweit hat mir dann auch google weiter geholfen ;) Das funktioniert allerdings leider nicht.
Das können wir nicht Wissen, dass du das probiert hast, denn das funktioniert. Wenn es bei dir nicht funktioniert, dann machst du etwas falsch, nur hellsehen kann keiner hier.
Aber, wenn du einen regulären Ausdruck vermeiden kannst, ist das gut, da wenn es geht eine Stringoperation im Zweifel imer effektiver ist.
Struppi.