我有一个文件如下:
23 Line number 23
2 Line number 2
87 Line number 87
28 Line number 28
4 Line number 4
83 Line number 83
我需要将第一列作为散列键,将第二列作为散列值。我也应该使用哈希键对文件进行排序
我有一个文件如下:
23 Line number 23
2 Line number 2
87 Line number 87
28 Line number 28
4 Line number 4
83 Line number 83
我需要将第一列作为散列键,将第二列作为散列值。我也应该使用哈希键对文件进行排序
这很简单:我们split
将空白处的行分成两部分。第一部分是$key
,其余的是$value
。
然后我们keys
按%hash
字母顺序排序,并打印出所有数据。
#!/usr/bin/perl
use strict; use warnings;
my %hash;
while (<>) {
chomp; # remove newline
my ($key, $value) = split ' ', $_, 2;
$hash{$key} = $value;
}
# or shorter:
# my %hash = map {chomp; split ' ', $_, 2} <>;
my @sorted_keys = sort keys %hash;
for my $key (@sorted_keys) {
print "$key $hash{$key}\n";
}
# or shorter:
# print "$_ $hash{$_}\n" for sort keys %hash;
输入可以通过 STDIN 或作为命令行参数中命名的文件提供。
您提供的输入的输出:
2 Line number 2
23 Line number 23
28 Line number 28
4 Line number 4
83 Line number 83
87 Line number 87
如果您想要数字排序,请更改sort keys
为sort {$a <=> $b} keys
.
尝试这个:
#!/usr/perl/bin -w
use strict;
use Data::Dumper;
my $file_name = "file.txt";
open(FH, "<".$file_name) or die "Could not open $file_name";
my %hash = ();
while(<FH>) {
chomp;
my ($key, $value) = split(/ /, $_);
$hash{$key} = $value;
}
close FH;
print Dumper(%hash);