我有一个这样的 Perl 问题:编写一个 Perl 程序,它将从给定的输入中读取一系列姓氏和电话号码。名称和数字应以逗号分隔。然后根据姓氏的字母顺序打印名称和数字。使用哈希。
知道如何解决这个问题吗?
我有一个这样的 Perl 问题:编写一个 Perl 程序,它将从给定的输入中读取一系列姓氏和电话号码。名称和数字应以逗号分隔。然后根据姓氏的字母顺序打印名称和数字。使用哈希。
知道如何解决这个问题吗?
有不止一种方法可以做到这一点:)
my %phonebook;
while(<>) {
chomp;
my ($name, $phone) = split /,/;
$phonebook{$name} = $phone;
}
print "$_ => $phonebook{$_}\n" for sort keys %phonebook;
可能类似于以下内容。
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";
}
像这样的任务是 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