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:
open (in, "<testfile") || die ("Cannot open testfile: $!");
while (<in>){
$Summe+=$(split(/\t/,$_)[1])
}
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
open (in, "<testfile") || die ("Cannot open testfile: $!");
while (<in>){
@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)