Thread uninitialized value $_ in array (8 answers)
Opened by Hartmannsgruber at 2013-08-28 16:17

payx
 2013-08-28 16:40
#169786 #169786
User since
2006-05-04
564 Artikel
BenutzerIn

user image
Hallo Hartmannsgruber,

zusätzlich zu Renées Hinweisen:

Zeile 17-19:

Code (perl): (dl )
1
2
3
foreach $_ (@ar_zahl) {
        $summe = $ar_zahl[$_];
}


foreach (oder gleichbedeutend for) iteriert über die Werte im Array, nicht über die Indices. Deshalb (und wegen dem Aufsummieren) muss es in Zeile 18 heißen: $summe += $_;.

Um die Warnung loszuwerden, schreibe in Zeile 14: chomp ( $ar_zahl[$_-1] = <STDIN>); (vgl. Renées Hinweis: der erste Index im Array ist 0). Abgesehen von der Warnung tut Dein Programm aber auch ohne diese Änderung (aber mit der obigen Änderung) das gewünschte.

Generell ist es besserer Stil, nicht viel mit $_ zu programmieren. Schreibe also lieber:

Code (perl): (dl )
1
2
3
4
for my $index (1..$anzahl) {
        print "Bitte Zahl nummer $index eingeben: ";
        chomp ( $ar_zahl[$index-1] = <STDIN>);
}


und

Code (perl): (dl )
1
2
3
for my $zahl (@ar_zahl) {
        $summe += $zahl;
}


HTH
Grüße
payx

View full thread uninitialized value $_ in array