Thread Dir ohne Unterordner in .txt Datei u.ä.. Wie? (60 answers)
Opened by stormy2211 at 2007-11-02 21:31

topeg
 2007-11-03 00:31
#101721 #101721
User since
2006-07-10
2611 Artikel
BenutzerIn

user image
Ein paar Verbesserungsvorschläge und Anmerkungen:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#!C:\\Perl\bin\perl.exe

# Verhintert Vertipper, fehlerhafte Definitionen und noch so manches Ärgernis :)
###################
use strict;
use warnings;
###################

# mit Windowspfaden kenne ich mich nicht so aus,
# aber Perl wandelt die Unixspezifische Schreibweise normalerweise passend um. 
opendir(Musik, 'C://Dokumente und Einstellungen/Stormy/Eigene Dateien/Eigene Musik');
#ist mein Musikverzeichnis was ich hier öffne
my @Liederliste=readdir Musik;
#hier speichere ich das Verzeichnis als
#.txt Datei in die @Liederliste
closedir(Musik);

#$Anzahllieder=@Liederliste; # Wenn ein Array skalar abgefragt wird, wird nur die Anzahl der Eintträge übergeben 
#hier zähle ich die Anzahl meiner Lieder durch

# das funktioniert so leider nicht
##################################
#for ($s=0;$s<=$Anzahllieder;$s=$s+1)
#Angabe wieviele Titel es der Liste hinzufügen soll
#{$Titel=index($Liederliste[$s],"@");push(@Titelliste,$Titel);}
#Befehl dass nur die einzelnen Werte der Liste bis zum "@"-Zeichen gelesen
#werden und in einer extra Liste abgespeichert werden
###################################
# Index lifert die Position eines Stinges innerhalb eines anderen.
# @Titelliste wird bei jedem Durchlauf neu initialisiert
# und außerhalb der Schleife ist es unbekannt.
# Wenn man ein ganzes Array durch gehen will, so kann man das auch anders schreiben:
# for my $filename (@Liederliste)
# Außerdem "$s=$s+1" kann man auch so schreiben "$s++"
# weiterhin müßte es "$s<$Anzahllieder" heißen, denn in "$Anzahllieder" steht die Anzahl der Einträge,
# aber im Array wird von 0 an gezählt und damit ist der letzte Eintrag "$Anzahllieder-1"

# so würde ich es machen:
my @Titelliste; # das Array vor der Scheife definieren!
for my $Filename (@Liederliste)
{
 # siehe Reguläre Ausdrücke
 $Filename=~/^(.+?)@/s;
 push(@Titelliste,$1);
}

open(SPEICHERN,'>','C://Meine Verwaltung von Multimedia/Musik/Liederliste.txt');
print SPEICHERN join("\n",@Liederliste);
close(SPEICHERN);

open(SPEICHERN2,'>','C://Meine Verwaltung von Multimedia/Musik/Titelliste.txt');
print SPEICHERN2 join("\n",@Titelliste);
close(SPEICHERN2);
#Speicherung der 2 Listen in meinem Verwaltungsordner.

# Leere Zeilen helfen den Code etwas zu strukturieren.
# Einrücken genauso :)


Ich habe es nicht getestet. Es können noch Schreibfehler drin sein... ;-)

View full thread Dir ohne Unterordner in .txt Datei u.ä.. Wie?