首页 > 解决方案 > 使用哈希在 Perl 中编写程序

问题描述

我想在收到用户输入后 2 天打印。

例子:

enter a day :
Input : Wednesday

Output : monday

我尝试使用带有数组的散列但找不到结果。

%hash=('mon',1,'tue',2,'wed',3);
@arr=keys %hash;

标签: perl

解决方案


你的尝试是倒退的。您要搜索的字符串应该是哈希的键。

my @days = qw( mon tue wed );
my %index_of_day = map { $days[$_] => $_, $_ => $_ } 0..$#days;

defined( my $input = <> )
   or die("Premature EOF\n");

chomp($input);

my $old_index_of_day = $index_of_day{$input}
   or die("Unrecognized day $input\n");

my $new_index_of_day = $old_index_of_day - 2;
$new_index_of_day += @days while $new_index_of_day < 0;

my $output = $days[$new_index_of_day];

推荐阅读