Vinnaren i pepparkakshustävlingen!
2007-10-26, 16:06
  #1
Medlem
Jag vill försöka extrahera ett filnamn från en sökväg och tänkte då använda mig av fileparse, men allt blir fel!

Denna kod:
use File::Basename;
($file,$directories) = fileparse("C:\katalog\underkatalog\fil.txt");

print "sökvägen är $directories\n";
print "och filen heter $file\n";

genererar:
sökvägen är C:.\
och filen heter katalogNderkatalog il.txt

Vad blir fel?
Citera
2007-10-26, 16:10
  #2
Medlem
irrblosss avatar
Citat:
Ursprungligen postat av swae
Jag vill försöka extrahera ett filnamn från en sökväg och tänkte då använda mig av fileparse, men allt blir fel!

Denna kod:
use File::Basename;
($file,$directories) = fileparse("C:\katalog\underkatalog\fil.txt");

print "sökvägen är $directories\n";
print "och filen heter $file\n";

genererar:
sökvägen är C:.\
och filen heter katalogNderkatalog il.txt

Vad blir fel?
Kanske inte funkar med windows-sökvägar med '\' istället för '/'? Testa ersätta alla \ med / innan du kör fileparse.

Edit: förresten, \ är ju ett escapetecken... Använd C:\\katalog\\underkatalog\\fil.txt, då borde det funka.
Citera
2007-10-26, 20:11
  #3
Medlem
Strängar avgränsade med " interpoleras, dvs perl evaluerar escape sekvenser och variabler.

Detta sker inte om du använder '

my $file = 'C:\some_folder\some_file.pl'

är en mer läsbar variant på

my $file = "C:\\some_folder\\some_file.pl"

Jobbar du mycket med filer kan du överväga att använda modulerna,
File::Spec och File::Slurp som tillhandahåller funktioner för filhantering. På så sätt blir din kod mer portabel.
Citera
2007-10-26, 21:43
  #4
Medlem
Tack schumi det löste mina problem!!
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback