peter: foreach jedes wort nur einmal

$KeybSatz = "$datei";
$KeybSatz =~ s/[^a-z0-9A-Z]/ /gi;
$KeybSatz  =~ s/  / /gi;

@Keyb = split(/ /,"$KeybSatz");
$KeybSatzAnzahl =@Keyb;
 foreach(@Keyb)  {
print " $_\n";
}
soll aber keine doppelte wörter auslesn.

mfg peter

  1. ich hoffe du benutzt

    use strict;
      use warnings;

    $KeybSatz = "$datei";

    ^      ^ überflüssig.

    $KeybSatz =~ s/[^a-z0-9A-Z]/ /gi;

    ^ überflüssig.

    $KeybSatz  =~ s/  / /gi;

    ^ überflüssig.

    @Keyb = split(/ /,"$KeybSatz");

    ^         ^ überflüssig.

    $KeybSatzAnzahl =@Keyb;
    foreach(@Keyb)  {
    print " $_\n";
    }
    soll aber keine doppelte wörter auslesn.

    Das verstehe ich nicht. Wenn du in einem Array keine doppelten Einträge haben möchtest, hilft dir perldoc -q duplicate. Wie dort auch steht, hättest du vielleicht gar keinen Hash verwenden sollen.

  2. Hallo Peter

    Das sollte tun:
    my %wordtable = ();
    my @words = grep {$wordtable{$_}++ == 0} split(/ /,$satz);

    Grüße

    Daniel