$| = 1; #wozu diese Zeile? use strict; use warnings; # das würde ich schon in 2 Zeilen schreiben print "exercise 4\n"; print "please enter a word:"; chomp (my $word = ); my $letter = "g/i"; # Letter klingt nach einem Buchstaben, nicht nach 3 while (<>) { # wozu diese Loop? Und warum benennst du die Loop-Variable nicht? # Was soll der Benutzer denn eingeben? # $_ sollte man höchstens in der innersten Loop verweden, und auch nur, # wenn diese kurz ist (max 1 oder allerhöchstens 2 Zeilen) chop; # warum hier dann kein chomp? foreach $letter (split) { # Split ohne Argumente? Was splittest du hier? # Du splittest in die Variable $letter, deine Vorbelegung von $letter war # also nutzlos?! if ($letter eq $word) { # Das macht doch nur gar keinen Sinn. Ein Buchstabe eines Wortes # soll gleich dem ganzen Wort sein? Das kann nur für einbuchstabige # Wörter wie das englische "a" oder das niederländische "U" funktionieren! print "$_\n"; # "my" hier? Damit wäre die Variable hinter der } verloren! my $score ++; } } } print " number of A in word: $score\n" # das kann doch nicht mal Kompilieren, weil es die Variable hier nicht mehr gibt