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

topeg
 2007-11-03 16:54
#101772 #101772
User since
2006-07-10
2611 Artikel
BenutzerIn

user image
Einrücken Hilft bei der Übersichtlichkeit.
du hast ein paar schreibfehler normalerweise hätte perl fehler melden müssen.
Wie startest du die Perlscripte?
per Doppelklick, oder über die Eingabeaufforderung (Konsole)?
Über die Konsole ist es besser, da du dann auch die Fehlermeldungen sehen kannst und das "<STDIN>" am Ende nicht brauchst.

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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#!C:\\Perl\bin\perl.exe
use strict;
use warnings;

my $test=0; #mit der Zahl wird die Anzahl der Dateien gelesen
my @Verzeichnis;
opendir(Freunde, 'C://Freunde') or die "Konnte Ordner nicht öffnen ($!)\n";
while(my $Filename=readdir(Freunde))
{
 next if($Filename eq '.' or $Filename eq '..');
 if(-f 'C://Freunde/'.$Filename)
 {
  $test=$test+1;
  push(@Verzeichnis,$Filename);
 }
}
closedir(Freunde);

my @Namensliste;
for my $Filename(@Verzeichnis)
{
 $Filename=~/^(.+?)@/s;
 push(@Namensliste,$1);
}

 
open(SPEICHERN,'>','C://Verzeichnis.txt') or die "Konnte Verzeichnis nicht Speichern ($!)\n";
print SPEICHERN join("\n",@Verzeichnis);
close(SPEICHERN);
 
open(SPEICHERN2,'>','C://Namensliste.txt') or die "Konnte Titelliste nicht Speichern ($!)\n";
print SPEICHERN2 join("\n",@Namensliste);
close(SPEICHERN2);
 
#des darüber stehende ab hier will ich nicht mehr verändern, des funzt ja alles dank hilfe =)
print "$test\n$Verzeichnis[03]\n$Namensliste[03]\n";
#übereinstimmung von verz-->namen und wieviele .txt es gibt wird angezeigt

my @inhalt;
my $Zahl;
for (my $s=00;$s<=$test;$s++)
#hier sage ich er soll alle Dateien der Reihe nach öffnen bis eben die letze Datei erledigt ist
#wäre das dann nicht <=$test-1 statt <=$test ?
{
 #für was müsste ich hier $Dateiname einsetzen? bei mir finde ich diese Variabel nicht
 #müsste ich in meinem Fall dann $Verzeichnis[$s] einsetzen?
# for my $Dateiname (@Verzeichnis) # < nicht nötig in deinem Code. keine Fehlermeldung?
 open(LESEN,"<","C://Freunde/$Verzeichnis[$s]"); 
 my @inhalt=<LESEN>;
 my $Data=join(' ', @inhalt); #hier wird inhalt in eine Zeile gestopft 
 #also slurpen soweit ich verstanden habe
 # for my $Name (@Namensliste[$s])# < geht so nicht. Keine Fehlermeldung?
 for my $Name (@Namensliste) # Gehe die gesamte Namensliste durch
 {
  #falls Name in Datei vorhanden, egal ob/mayer oder Mayer
  #dann wird die Zahl um eins erhöht, falls es 2x vorkommt
  #trotzdem nur einmal da if Bedinung 1x erfüllt und es
  #dann gleich weiter geht
  if($Data=~/$Name/i)
  {
   $Zahl++;";
  }
 } 
 close(LESEN);
}
print "$Zahl\$test\n";
<stdin>
#hier lasse ich mir eben ausgeben in wievielen
#Textdateien der Name wo im Namen der Datei stand
#auch im Dateiinhalt steht und wieviele Dateien
#es insgesamt waren.

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