![]() |
|< 1 2 3 4 5 >| | ![]() |
50 Einträge, 5 Seiten |
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
#!/usr/bin/perl # vi:ts=4 sw=4 et: use strict; use warnings; my %hash = ( Abend => 'NN', Sonne => 'NN', Haus => 'NN', Abendsonne => 'NN', ); my $text = q~Haus Abendsonne haussonne hurz~; for my $word ( split /\s+/, $text ) { for my $pre ( keys %hash ) { for my $post ( keys %hash ) { if ( $word =~ /^$pre$post$/i ) { print $word, $/; } } } }
QuoteJa, so in etwa habe ich mir das vorgestellt. Hab das ja mit einer foreach-Schleife versucht. Aber Rekursionen sind scheinbar nicht möglich.
Linuxer+2008-07-25 18:08:32--Wo hast Du bei 3 Schleifen eine Rekursion?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
for my $word ( split /\s+/, $text ) { for my $pre ( keys %hash ) { for my $post ( keys %hash ) { #- Kleinschreibung my $lc_word="\L$word"; my $lc_komposit="\L$pre$post"; if ( $lc_word eq $lc_komposit ) { print $word, $/; } } } }
LanX-+2008-07-25 18:04:49--Wenn du aber Computerlinguist werden willst dann setz dich IMHO lieber mit RegExes auseinander, da gibts ein sehr gutes O'reilly-Buch das fast alle Beispiele in Perl macht.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
use strict;
use diagnostics;
# Ist ne Subroutine, die funzt aber zu 100%
my %korpus = lese_korpus("korpus.txt");
my @array_korpus = keys %korpus;
foreach my $worttyp (@array_korpus) {
foreach my $pre (keys %korpus) {
foreach my $post (keys %korpus) {
if ($worttyp =~ /^$pre$post$/i) {
print $worttyp . "\n";
}
}
}
}
Unmatched ( in regex; marked by <-- HERE in m/^Wahlkampf( <-- HERE
1 2 3 4 5 6 7 8 9 10
my @array_korpus = keys %korpus; foreach my $worttyp (@array_korpus) { #hier! foreach my $pre (keys %korpus) { #hier! foreach my $post (keys %korpus) { #hier! if ($worttyp =~ /^$pre$post$/i) { print $worttyp . "\n"; } } } }
![]() |
|< 1 2 3 4 5 >| | ![]() |
50 Einträge, 5 Seiten |