Schrift
[thread]11332[/thread]

Pfadangaben auf einheitliche Basis bringen



<< >> 4 Einträge, 1 Seite
AndiS
 2008-02-20 16:42
#106143 #106143
User since
2008-02-20
9 Artikel
BenutzerIn
[default_avatar]
Hallo!

ich bin gerade dabei ein kleines Perl-Script zu schreiben - stehe relativ am Anfang meiner großen Perl-Karriere ;-)

Benutzer meines zukünftigen Scripts sollen mehrere Pfade eingeben. Dabei gibt es das Problem, dass ein Benutzer da relativ großen Freiraum hat, sprich es können folgende Möglichkeiten eingegeben werden:

c:\Programme
c:\Programme\
\\server\pfad
\\server\pfad\

Zusätzlich muss ich ja noch darauf achten, dass \ ein Steuerzeichen ist, sprich mein Skalar dann z.B.: c:\\Programme\\ aussieht.

Da ich den Pfad allerdings im Script weiterverarbeite müsste ich die Benutzereingaben standardisiert auf Pfadnamen OHNE Backslash am Schluss umwandeln, FALLS er am Schluss wirklich mit Backslash angegeben wurde!

Ich habe da jetzt schon mit split etwas rumgebastelt, aber ich komme da nicht recht weiter.
Eigentlich wäre es ja recht einfach
1. Schaue letztes Zeichen von Skalar an
2. Wenn letztes Zeichen, schneide es weg

Hat da jemand eine Tip, wie ich das in Code schreibe?

Danke euch schonmal im voraus!

Schöne Grüße,

Andi
Gast Gast
 2008-02-20 17:05
#106144 #106144
Sieh dir mal die Funktion substr() an ;)
murphy
 2008-02-20 17:17
#106145 #106145
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
Ich würde eher mit regulären Ausdrücken arbeiten – zum Abschneiden von (Back-)Slashes am Ende des Strings eignet sich beispielsweise:
Code (perl): (dl )
$path =~ s:[\\/]+$::;


Wahrscheinlich sparst Du Dir aber viel Arbeit, wenn Du einfach die passenden Module dafür verwendest – ich denke da insbesondere an:
Code (perl): (dl )
1
2
use File::Spec::Function qw/canonpath/;
use Cwd qw/realpath/;


Sowohl CPAN:File::Spec als auch CPAN:Cwd sind Kernmodule, die mit der Perldistribution ausgeliefert werden und nicht nachinstalliert werden müssen.
When C++ is your hammer, every problem looks like your thumb.
GwenDragon
 2008-02-20 23:35
#106151 #106151
User since
2005-01-17
14761 Artikel
Admin1
[Homepage]
user image
Zudem funktionieren File::SPec und Cwd auf allen Betriebsystemen richtig.

Das heißt, kein Theater mit Windows/Mac/Linux-Pfadzeichen.
<< >> 4 Einträge, 1 Seite



View all threads created 2008-02-20 16:42.