Thread relativen Pfad ermitteln (45 answers)
Opened by jan99 at 2010-08-28 12:41

clms
 2010-08-31 15:17
#141072 #141072
User since
2010-08-29
373 Artikel
BenutzerIn
[default_avatar]
Guest wer
CPAN:File::Spec bietet das alles. Warum also eine unzureichende Lösung nutzen wenn man ein CoreModul nutzen kann? Sind Module so grauenvoll?

Nein, Module sind nicht grauenvoll (von einzelnen Ausnahmen mal abgesehen.) Für komplexe Standardaufgaben sind sie phantastisch. Ettliche Module von CPAN möchte ich nicht missen.

Für einfache Probleme sind sie aber nicht immer die effizienteste Art zu Programmieren. Wenn man erstmal suchen muss, welches Modul die benötigte Funktio wohl enthalten könnte, dann die Doku möglicher Kandidaten lesen und verstehen muss und anschließend noch einen Wrapper um die importierte Funktion schreiben muss, weil das Interface nicht ganz passt oder die Funktionalität nicht 100% stimmt, kostet das seine Zeit. Da ist es häufig erheblich schneller, die 5-6 Zeilen selbst zu schreiben.

Wenn Du ein passendes Modul/Funktion kennst, schön für Dich. Es spricht nichts dagegen, es zu verwenden. Aber es gilt auch hier - wie so oft in Perl - »There Is More Than One Way To Do It.«

Zu CPAN:File::Spec - nein kannte ich vorher noch nicht (und ich halte das auch für kein Verbrechen). abs2rel() kann man für die gewünschte Funktion tatsächlich nehmen. Der benötigte Wrapper ist ziemlich einfach: Vor beide Argumente ein "/" hängen und bei $base noch den Filenamen entfernen. Das von Dir angesprochene Problem mit den Windows- und MacOS-Pfaden würde CPAN:File::Spec aber auch nicht lösen, da es nur die Pfadtrenner des eigenen Betriebssystems berücksichtig. Und es ist laut Doku nicht garantiert, dass die betreibsystemspezifischen Varianten auch unter einem anderen Betriebssystem funktionieren.

Ciao, Claus

View full thread relativen Pfad ermitteln