Hallo!
Ich will aus einer Reihe von HTML Dateien alles entfernen, was style oder script enthält. Zunächst werden die Dateien so bearbeitet, dass alle Zeilen mit < beginnen und in den noch unbearbeiteten Array HTML gespeichert werden. Der Rest soll in den Array AUSGABE geschrieben und ausgegeben werden. Leider gibt das Programm nur den Namen einer Datei in meinem Directory aus :( Kann jemand helfen?
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
72
73
74
75
76
77
#!/usr/bin/perl
use utf8;
use warnings;
############################### Funktionen
sub Style() {
foreach $element (@HTML) {
if ($element !~ /^<style/) {
push (@AUSGABE, $element);
}
return @AUSGABE;
}
}
######################
sub Style();
$htmldir = "/home/user";
opendir HTMLDIR, $htmldir or die "Kann $htmldir nicht öffnen: $!";
foreach $htmldatei (readdir HTMLDIR) {
if ( $htmldatei =~ /.html$/ ) {
push (@HTML,"<dateiname>" . $htmldatei . "</dateiname>");
$lines = " ";
open (WEBSEITE, "<$htmldatei") or die "can not open $htmldatei:$!";
while (<WEBSEITE>) {
# Leere Zeilen ignorieren
next if ($_ =~ /^\s*$/);
# Inhalt der aktuellen Zeile in Variable $line schreiben
$line = $_;
# Zeilenende löschen
$line =~ s/\n//;
# auf ein Leerzeichen kürzen
$line =~ s/\s+/ /g;
# Tabulator einfügen
$line =~ s/</\t</g;
# Gesamte Website in einer Zeile
$lines = $lines . " " . $line;
# auf ein Leerzeichen reduzieren
$lines =~ s/ +/ /g;
}
}
close WEBSEITE;
# Variable $lines in Array zwischen übernehmen
# Elemente beginnen nun immer mit "<"
@zwischen=split(/\t/,$lines);
push(@HTML,@zwischen);
@zwischen = ();
}
close HTMLDIR;
@AUSGABE = Style();
###################################################################
# Ausgabe bearbeitete Daten
foreach $i (@AUSGABE) {
print $i . "\n";
}
Last edited: 2017-08-04 13:18:44 +0200 (CEST)