Hallo Perl-Experten!
kann leider immer noch nicht begreifen wie map funktioniert -(
habe folgenden Code geschrieben, das die Strings eines Arrays an den Leerzeichen zerlegt, auf die Singularform normalisiert, zusammenfügt und ausgibt:
#####################################
my @words = („applied mathematics“, „unique terms“, „global weights“, „additional uses“);
my $new_string;
foreach my $string (@words)
{
$new_string = join ’ ', map { &stem() } split( / /, $string);
print „$new_words\n“;
}
#########################################
sub stem
{
my $word = $_;
my @stopliste = („measles“, „news“, „billiards“, „mumps“);
while($word)
{
if (grep {$_ eq $word} @stopliste)
{
$word = $word;
}
else {
if($word =~ /(ies|men|ics|(o|t|d|l|m|n|a|e|u|b|p|k|g|r|w|)s|(x|ss|sh|ch|x|s)es)$/)
{
$word =~s/(men)$/man/gos;
$word =~s/(ies)$/y/gos;
$word =~s/(ics)$/ics/gos;
$word =~s/(es)$//gos;
$word =~s/(s)$//gos;
}
else {
$word = $word;
}
}
}
return $word;
}
###################################################
meines Erachtens sollte alles unproblematisch laufen, ist aber nicht so
das Programm hängt in der Zeile mit map.
Könnte mir vielleicht jemand erklären, was da nicht stimmt???
Gruss,
Krokodil Gena