我有一个像这样的Perl问题: 编写一个Perl程序,它将读取给定输入中的一系列姓氏和电话号码。名称和数字应以逗号分隔。然后根据姓氏按字母顺序打印名称和数字。使用哈希值。
知道如何解决这个问题吗?
答案 0 :(得分:1)
有多种方法可以做到这一点:)
my %phonebook;
while(<>) {
chomp;
my ($name, $phone) = split /,/;
$phonebook{$name} = $phone;
}
print "$_ => $phonebook{$_}\n" for sort keys %phonebook;
答案 1 :(得分:0)
或许类似以下内容。
my %hash;
foreach(<>){ #reads yor args from commandline or input-file
my @arr = split(/\,/); #split at comma, every line
$hash{$arr[0]} = $arr[1]; #assign to hash
}
#print hash here
foreach my $key (sort keys %hash ) #sort and iterate
{
print "Name: " . $key . " Number: " . $hash{$key} . "\n";
}
答案 2 :(得分:0)
这样的任务是perl命令行开关的强项。有关更多信息,请参阅perldoc perlrun!
命令行输入
$ perl -naF',\s*' -lE'$d{$F[0]}=$F[1];END{say"$_: $d{$_}"for sort keys%d}'
Moe, 12345
Pi, 31416
Homer, 54321
<强>输出强>
Homer: 54321
Moe: 12345
Pi: 31416
答案 3 :(得分:0)