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

MatthiasW
 2010-08-31 20:10
#141078 #141078
User since
2008-01-27
367 Artikel
BenutzerIn
[default_avatar]
2010-08-31T13:17:09 clms
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.

Also mit File::Spec würde ich es folgendermaßen machen:
Code (perl): (dl )
1
2
3
4
5
6
use File::Spec::Functions ':ALL';

my $report = catfile "report", "meinbericht.html";
my $data   = catfile "daten",  "meinedaten.txt";

my $fromto = abs2rel rel2abs($report), rel2abs +(splitpath $data)[1];

2010-08-31T13:17:09 clms
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.

Das verstehe ich jetzt nicht so richtig. Könntest du vielleicht an einem Beispiel verdeutlichen, wann es zu Problemen kommen könnte?

MfG
perl -E'*==*",s;;%ENV=~m,..$,,$&+42;e,$==f;$"++for+ab..an;@"=qw,u t,,print+chr;sub f{split}say"@{=} me"'

View full thread relativen Pfad ermitteln