Thread Grundverstaendnis - Spalten einlesen und addieren (4 answers)
Opened by Student87 at 2012-11-08 14:57

Student87
 2012-11-08 14:57
#163171 #163171
User since
2012-11-08
73 Artikel
BenutzerIn
[default_avatar]
Hallo :)

Bin Perl-Neuling mit ein bisschen Bash/Awk Erfahrung und bin gerade dabei, mein erstes Programm in Perl zu schreiben: Ich will eine Datei zeilenweise einlesen und Spalte 2 aufaddieren.

Testfile sieht so aus:
1{TAB}2
1{TAB}2
1{TAB}2
1{TAB}2

Und das Programm so:
Code (perl): (dl )
1
2
3
4
5
6
open (in, "<testfile") || die ("Cannot open testfile: $!");
while (<in>){ #Testfile zeilenweise einlesen
$Summe+=$(split(/\t/,$_)[1]) #Jede Zeile splitten und Element 1 zur Variable Summe hinzuaddieren
}
print "\n";
close in;


Leider funktioniert das nicht so einfach, wo liegt mein Fehler? Ist meine Idee klar? Sonst erklaer ich gern, was ich mir beim Code gedacht habe!

So, obiges ist die Hauptfrage, dann hab ich noch eine Nebenfrage, von der ich vermutlich was lernen kann ueber Perl.

Wenn ich den Code

Code (perl): (dl )
1
2
3
4
5
6
7
open (in, "<testfile") || die ("Cannot open testfile: $!");
while (<in>){ #Testfile zeilenweise einlesen
@array=split(/\t/,$_);
print "@array[0]";
}
print "\n";
close in;


ausfuehre, dann erhalte ich als Output:

1111
{Neue Befehlsaufforderung}

Ich haette aber erwartet, dass er fuer jede eingelesene Zeile das Element 0 des Arrays printet und am Ende einen Zeilenumbruch. Also so:

1
1
1
1
{Neue Befehlsaufforderung}

Und das lustige ist: Wenn ich anstatt Element 0 das Element 1 waehle (Also die Zahl 2 des Testfiles), dann erhalte ich genau den erwarteten Output:

2
2
2
2
{Neue Befehlsaufforderung}

Wo ist denn da die Logik versteckt?

modedit Editiert von GwenDragon: Titel erweitert
Last edited: 2012-11-08 15:11:52 +0100 (CET)

View full thread Grundverstaendnis - Spalten einlesen und addieren