Leser: 1
![]() |
|< 1 2 >| | ![]() |
16 Einträge, 2 Seiten |
1
2
3
4
Can't use string ("") as a subroutine ref while "strict refs" in use at /home/jakob/pl l
ine 98, <STDIN> line 4.
Shell beendet 255
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
36
use strict;
use warnings;
print "Kannst du schon Minusrechnen?\n";
my $ja_nein = <STDIN>;
if ($ja_nein =~ /ja/i) {
$rechenfaehigkeit++;
....
} else {
...
my %rechenart = (
'+' => sub { $_[0] + $_[1] },
'-' => sub { $_[0] - $_[1] },
'*' => sub { $_[0] * $_[1] },
'/' => sub { $_[0] / $_[1] },
'**' => sub { $_[0] ** $_[1] },
);
my @zeichen = qw# + - * / ** #;
my $anzahl_der_zeichen = @zeichen;
....
while (1) {
my $zahl1 = sprintf '%d', (int(rand($rechenfaehigkeit +1)));
my $zahl2 = sprintf '%d', (int(rand($rechenfaehigkeit +1)));
my $arrayindizies = ((int(rand( $anzahl_der_zeichen +1 ))) -1);
my $welches_zeichen = $zeichen[$arrayindizies];
[b]Das ist die Zeile 98!!![/b] my $ergebnis = $rechenart{$welches_zeichen}->($zahl1, $zahl2);
....
}
my $welches_zeichen = $zeichen[ rand @zeichen ];
pl+2007-08-16 23:05:32--Stiltipp: Als Programmierer wiederholt man sich nicht, sondern generiert Mehrfachdaten aus anderen Daten. [¹] [²] Stell dir vor, du fügst einen neues Wertepaar zu %rechenart hinzu, aber vergisst, auch @zeichen zu aktualisieren. Hier wird's wohl kaum passieren, weil die beiden so dicht beieinanderstehen, aber sonst ist dies eine ernstzunehmende Fehlerursache.Code: (dl )1
2
3
4
5
6
7
8
9my %rechenart = (
'+' => sub { $_[0] + $_[1] },
'-' => sub { $_[0] - $_[1] },
'*' => sub { $_[0] * $_[1] },
'/' => sub { $_[0] / $_[1] },
'**' => sub { $_[0] ** $_[1] },
);
my @zeichen = qw# + - * / ** #;
my @zeichen = keys %rechenart;
![]() |
|< 1 2 >| | ![]() |
16 Einträge, 2 Seiten |