2. Frage
Lösung
#!/usr/bin/perl #Aufgabe 11.2 #Findet alle Überschriften use strict; my ($line,$regex); open(IN,"<:utf8","polt.html") or die "file not found!"; while($line = <IN>) { for(my $i=1;$i<=4;$i++) { $regex = "<h".$i.".*</h".$i.">"; if($line =~ /$regex/) { print $line; } } }
3. Frage
Lösung
#!/usr/bin/perl #Aufgabe 11.3 #Extrahiert den Wert des title-Attributs use strict; my ($line,$regex); open(IN,"<:utf8","polt.html") or die "file not found!"; while($line = <IN>) { for(my $i=1;$i<=4;$i++) { $regex = "<h".$i.".*</h".$i.">"; if($line =~ $regex) { if($line =~ /title=\"(.*?)\"/) { print $1."\n"; } } } }
4. Frage
Lösung
#!/usr/bin/perl #Aufgabe 11.4 #Extrahiert alle Links use strict; my ($line); open(IN, "<:utf8","polt.html") or die "file not found!"; open(OUT,">:utf8","links.txt"); while($line = <IN>) { if($line =~ /href=\"(.*?)\"/) { my $tmpLine = $1; if($tmpLine =~ /http/ || /www/ ) { print OUT $tmpLine."\n"; } } }
5. Frage
Lösung
#!/usr/bin/perl #Aufgabe 11.5 #Extrahiert alle Zeilen, in denen ">Bearbeiten<" steht use strict; my ($line); open(IN, "<:utf8","polt.html") or die "file not found!"; while($line = <IN>) { if($line =~ />Bearbeiten</) { print $line."\n"; } }
6. Frage
Lösung
#!/usr/bin/perl #Aufgabe 11.6 #Findet alle Wörter im Text, die genau 2mal vorkommen use strict; my ($line,@words,%wordlist,@sortedWords,$word); open(IN, "<:utf8","polt.html") or die "file not found!"; while($line = <IN>) { $line = lc($line); @words = split(/[\p{Z}\p{P}\s]+/,$line); foreach $word(@words) { $wordlist{$word}++; } } @sortedWords = sort {$wordlist{$a} <=> $wordlist{$b}} keys %wordlist; foreach $word(@sortedWords) { if($wordlist{$word} == 2) { print "Das Wort \"$word\" kommt genau $wordlist{$word}mal im Text vor.\n"; } }
7. Frage
Lösung
~ $ lynx -dump polt.html -assume_charset=UTF-8 -hiddenlinks=ignore -nolist -verbose > polt.txt
8. Frage
Lösung
#!/usr/bin/perl #Aufgabe 11.8 #Erzeugt eine Frequenzliste aller großgeschriebenen Wörter, die länger als 5 Buchstaben sind use strict; my ($line,@words,%wordlist,@sortedWords,$word); open(IN, "<:utf8","polt.txt") or die "file not found!"; while($line = <IN>) { @words = split(/[\p{Z}\p{P}\s]+/,$line); foreach $word(@words){ if($word =~ /^\p{Lu}\p{L}{5,}$/) { $wordlist{$word}++; } } } @sortedWords = sort {$wordlist{$a} <=> $wordlist{$b}} keys %wordlist; foreach $word(@sortedWords){ print "Das Wort \"$word\" kommt $wordlist{$word}mal im Text vor.\n"; }
9. Frage
Lösung
$anzahl = keys(%worthash);
10. Frage
Lösung
#!/usr/bin/perl #Aufgabe 11.10 #Gibt die Wörter einer Zeile in umgedrehter Reihenfolge aus (mit Subroutine) use strict; { my ($line); print "Bitte geben Sie eine Textzeile ein >>> "; chomp($line = <>); print &reverse($line); } sub reverse($) { my $line = $_[0]; my $reverseLine = ""; my @words = split(/ /,$line); for(my $i = (scalar(@words)-1); $i >= 0; $i--) { if($i==(scalar(@words)-1)) { $reverseLine = $words[$i]; } else { $reverseLine = "$reverseLine $words[$i]"; } } return $reverseLine."\n"; }
11. Frage
Lösung
#!/usr/bin/perl #Aufgabe 11.11 #Gibt jedes Element einer Liste zusammen mit seiner Position aus use strict; { my @words = ("Thorin","Balin","Dwalin","Fili","Kili","Dori","Nori" ,"Ori","Oin","Gloin","Bifur","Bofur","Bombur"); print &print_words_with_index(@words); } sub print_words_with_index(@) { my @words = @_; for(my $i=1;$i<=scalar(@words);$i++) { print "Wort $i = $words[$i-1]\n"; } }