Ich komm einfach nicht zu der Lösung des Problems. Seit ewigkeiten gibt mir mein Programm die selbe Fehlermeldung aus:
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
Deshalb hab ich mal den wichtigen Teil rausgenommen, vielleicht könnt ihr mir ja helfen :(, die Zeile 98 habe ich in meinem Code 'markiert'.
(Ich hoffe ihr könnt durchblick bewahren).
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);
....
}
Danke im Vorraus,
Pl.