#!/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;
これは私のコードです。私は、テキストファイルから(結婚10 65 23)のような値を取って2次元配列に書きたいと思っています。私はgrade1
とgrade2
data1.txt
とdata2.txt
のように見なければならない読み込まれたテキストファイルの別の端を管理しました。値を引き出すことはできますが、2次元配列に書き込むことはできませんでした。結果は正しい。テキストファイルを読み込んで、2次元配列にperlで書き込みますか?
アフメット:257 Bugra:133 ララ:172 蘇:269 マイ出力は正しいですが、テキストファイルから取りたいGrade1とGrade2の値が必要です。 –
'my @foo =();'は冗長です: 'my @foo;'はすでに空の配列を作成しています。 – melpomene
サンプルの入出力データを表示し、「どのようにこれを行うのですか?」より具体的な質問をしてください。 – melpomene