Thread integer und split (3 answers)
Opened by nano at 2015-04-05 02:26

Raubtier
 2015-04-05 12:05
#180593 #180593
User since
2012-05-04
1076 Artikel
BenutzerIn
[default_avatar]
Ich sag dir, wie es ohne split geht:

Code (perl): (dl )
1
2
3
my $wort = 'abbbattaaajqaAAAgtAWG';
my $anzahl = $wort =~ y/a/a/;
print "Das Wort $wort enthält das Zeichen 'a' $anzahl mal.\n";


Weil ich gerade Zeit hatte, habe ich deinen Code einmal kommentiert (ich werde dir keine fertige Lösung mit split schreiben):
Code (perl): (dl )
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

View full thread integer und split