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

Muffi
 2013-08-28 16:48
#169788 #169788
User since
2012-07-18
1465 Artikel
BenutzerIn
[default_avatar]
$_ wird von Perl selbst belegt (z.B. in Schleifen). Man sollte da nicht selbst rumfuhrwerken, wenns keinen guten Grund dafür gibt.

PS. Ich würds so 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
#!perl

use strict;
use warnings;

# das zu initialisieren macht wenig Sinn, schon garnicht mit "" wenns Zahlen sind.
#Zudem unterdrückts vielleicht hilfreiche warnings bei Fehlern im Programm, wenn die Variablen nicht belegt werden.
my ($anzahl, $summe, $durchschnitt);
my @ar_zahl = ();

print "Wie viele Zahlen möchten sie eingeben?: ";
chomp ($anzahl = <STDIN>);

foreach (1..$anzahl) {
        print "Bitte Zahl nummer $_ eingeben: ";
        chomp (my $input = <STDIN>);
        push @ar_zahl, $input; # push macht hier klarer, dass einfach angefügt wird und vermeidet Fehler beim Indexzählen.
}

$summe += $_ for @ar_zahl; # $summe += ist Kurzform für $summe = $summe +
$durchschnitt = $summe / @ar_zahl; # / forciert hier sowas wie numerischen Kontext. Arrays in diesem (oder besser scalarkonext) liefern die Anzahl ihrer Elemente

print "Anzahl der eingebenen Zahlen: $anzahl\n";
print "Sumer der eingebenen Zahlen: $summe\n";
print "Durchschnitt der eingebenen Zahlen: $durchschnitt\n";
1 + 1 = 10

View full thread uninitialized value $_ in array