你如何格式化打印计数的输出
How do you format the output of printing count
下面的代码给出了
的结果
Female4946Male5054gender1
如何在元素及其编号之间添加空格,为什么它打印的数组旁边有一个 1?
#!/usr/bin/perl
use strict;
use warnings;
my @gender;
my $female=0;
while (<>) {
chomp;
my @fields = split /,/;
push @gender, $fields[5];
}
my %count;
$count{$_}++ for @gender;
print %count;
您的输入文件中可能有一个 header 行,其中包含 gender
作为列标题,并且被读取并计数一次。通过将文件句柄中的一行读入 void 来跳过第一行。
<>;
要在每对之间插入一个 space(但不要在最后一对之后!)使用 join
。 map
的代码块将为每一对构建字符串:
print join " ", map {"$_: " . $count{$_} } keys %count;
print "\n";
或者更好(从我的角度来看)它们之间有换行符:
while( my ($gender => $count) = each %count) {
print "$gender: $count\n";
}
您不是在打印数组,而是在打印散列。使用循环打印它(你可以将它隐藏到 map
中)。另外,当您可以直接创建散列时,为什么要填充 @gender 数组?
#!/usr/bin/perl
use strict;
use warnings;
my %count;
while (<>) {
chomp;
my @fields = split /,/;
$count{ $fields[5] }++;
}
for my $gender (keys %count) {
print $gender, ' ', $count{$gender}, "\n";
}
末尾的 1
来自第六列散列 gender
的行(可能是 header?)您可以 delete $count{gender}
在打印之前,或者在 while 循环之前添加 <>
以跳过 header.
你只需要
print join(' ', %count), "\n"
输出
Female 4946 Male 5054 gender 1
下面的代码给出了
的结果Female4946Male5054gender1
如何在元素及其编号之间添加空格,为什么它打印的数组旁边有一个 1?
#!/usr/bin/perl
use strict;
use warnings;
my @gender;
my $female=0;
while (<>) {
chomp;
my @fields = split /,/;
push @gender, $fields[5];
}
my %count;
$count{$_}++ for @gender;
print %count;
您的输入文件中可能有一个 header 行,其中包含 gender
作为列标题,并且被读取并计数一次。通过将文件句柄中的一行读入 void 来跳过第一行。
<>;
要在每对之间插入一个 space(但不要在最后一对之后!)使用 join
。 map
的代码块将为每一对构建字符串:
print join " ", map {"$_: " . $count{$_} } keys %count;
print "\n";
或者更好(从我的角度来看)它们之间有换行符:
while( my ($gender => $count) = each %count) {
print "$gender: $count\n";
}
您不是在打印数组,而是在打印散列。使用循环打印它(你可以将它隐藏到 map
中)。另外,当您可以直接创建散列时,为什么要填充 @gender 数组?
#!/usr/bin/perl
use strict;
use warnings;
my %count;
while (<>) {
chomp;
my @fields = split /,/;
$count{ $fields[5] }++;
}
for my $gender (keys %count) {
print $gender, ' ', $count{$gender}, "\n";
}
末尾的 1
来自第六列散列 gender
的行(可能是 header?)您可以 delete $count{gender}
在打印之前,或者在 while 循环之前添加 <>
以跳过 header.
你只需要
print join(' ', %count), "\n"
输出
Female 4946 Male 5054 gender 1