#!/usr/bin/perl
use strict;
use warnings;
use utf8;
use open ':encoding(UTF-8)', ':std';
use List::Util qw(sum);
my $filename = 'data1.txt';
open(my $fh, '<:encoding(UTF-8)', $filename)
or die "Could not open file '$filename' $!";
while (my $row = <$fh>) {
chomp $row;
print "$row\n";
}
my $filename2 = 'data2.txt';
open(my $fh2, '<:encoding(UTF-8)', $filename2)
or die "Could not open file '$filename2' $!";
while (my $row = <$fh2>) {
chomp $row;
print "$row\n";
}
my @last =();
my %grades = (
Ahmet => {
quiz1 => 97,
quiz2 => 67,
quiz3 => 93,
},
Su => {
quiz1 => 88,
quiz2 => 82,
quiz3 => 99,
});
my %sum;
for my $name (keys %grades){
$sum{$name} = sum(values %{ $grades{$name} });
}
for my $name (sort { $sum{$a} <=> $sum{$b} } keys %sum){
push @last, "$name: $sum{$name}\n";
}
my %grades2 = (
Bugra => {
quiz1 => 33,
quiz2 => 41,
quiz3 => 59,
},
Lale => {
quiz1 => 79,
quiz2 => 31,
quiz3 => 62,
},
);
my %sum2;
for my $name (keys %grades2){
$sum2{$name} = sum(values %{ $grades2{$name} });
}
for my $name (sort { $sum2{$a} <=> $sum2{$b} } keys %sum2){
push @last, "$name: $sum2{$name}\n";
}
my @last1 = sort { lc($a) cmp lc($b) } @last;
print @last1;
Das ist mein Code. Ich möchte Werte aus einer Textdatei wie (heiraten 10 65 23) und schreibe in ein zweidimensionales Array. Ich verwaltete Array separat Ende der gelesenen Textdatei es wie grade1
und grade2
für data1.txt
und data2.txt
gesehen werden muss. Ich kann die Werte ziehen, aber ich konnte nicht in ein zweidimensionales Array schreiben. Auch das Ergebnis ist korrekt.Lesen von Textdateien und Schreiben in ein zweidimensionales Array in Perl?
Ahmet: 257 Bugra: 133 Lale: 172 Su: 269 My Ausgabe ist korrekt, aber es nimmt Werte von grade1 und grade2, die ich von Textdateien nehmen möchte. –
'my @ foo =();' ist redundant: 'my @foo;' erstellt bereits ein leeres Array. – melpomene
Zeigen Sie Beispiel-Eingabe-/Ausgabedaten an und stellen Sie eine spezifischere Frage als "Wie mache ich das?". – melpomene