1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
$| = 1; use strict; use warnings; print "exercise 4\n"; print "please enter a word:"; chomp (my $word = <STDIN>); my $letter = "g/i"; while (<>) { chop; foreach $letter (split) { if ($letter eq $word) { print "$_\n"; my $score ++; } } } print " number of A in word: $score\n"
1 2 3 4 5 6 7 8 9
#!/usr/bin/perl use strict; use warnings; my $word = 'abbbattaaajqaAAAgtAWG'; print cound_chars('a',$word)."\n"; sub cound_chars { return ( grep $_ eq $_[0], split //, $_[1] ) + 0; }
1 2 3
my $wort = 'abbbattaaajqaAAAgtAWG'; my $anzahl = $wort =~ y/a/a/; print "Das Wort $wort enthält das Zeichen 'a' $anzahl mal.\n";
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 27 28 29 30 31 32 33 34 35
$| = 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 = <STDIN>); 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