#!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); ################################### my @Liederliste # "open" mit Fehlermeldung wenn es nicht klappt. opendir(Musik, 'C://Dokumente und Einstellungen/Stormy/Eigene Dateien/Eigene Musik') or die "Konnte Ordner nicht öffnen ($!)\n"; while(my $Filename =readdir(Musik)) { # "." und ".." überspringen next if($Filename eq '.' or $Filename eq '..'); # Ist es eine datei? if(-f 'C://Dokumente und Einstellungen/Stormy/Eigene Dateien/Eigene Musik/'.$Filename) { push(@Liederliste,$Filename); } } 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') or die "Konnte Liderliste nicht Speichern ($!)\n"; print SPEICHERN join("\n",@Liederliste); close(SPEICHERN); open(SPEICHERN2,'>','C://Meine Verwaltung von Multimedia/Musik/Titelliste.txt') or die "Konnte Titelliste nicht Speichern ($!)\n"; 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 :)