You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Perl技术问询:如何验证标准输入与哈希键值对是否匹配

修正你的Perl键值匹配代码

看来你的代码有几个小问题导致无法正确完成验证,我来帮你一步步梳理并修正:

主要问题分析

  • 输入未处理换行符:通过<STDIN>读取的内容会包含用户按下回车的换行符\n,直接和哈希里的值对比会因为额外字符导致匹配失败
  • 变量名不完整:你代码里的$pla...明显是输入截断了,应该是完整的$place变量
  • 冗余的反向哈希:%hash2完全没必要保留,直接用原哈希%hash就能完成验证逻辑,反向哈希反而会增加不必要的复杂度

修正后的完整代码

use 5.010;
use strict;
use warnings;

my ($name, $place, %hash);

%hash = (
    Dominic => 'Melbourne',
    Stella  => 'Beijing',
    Alex    => 'Oakland',
);

print "Enter name: ";
$name = <STDIN>;
chomp $name;  # 去除输入末尾的换行符

print "Enter place: ";
$place = <STDIN>;
chomp $place;  # 同样处理地点输入的换行符

# 核心验证逻辑:先确认名字是哈希的有效键,再对比对应的值是否匹配
if (exists $hash{$name} && $hash{$name} eq $place) {
    print "Correct\n";
} else {
    print "Incorrect\n";
}

关键修改说明

  • 添加chomp处理输入:确保用户输入的名字和地点不会携带换行符,彻底解决因格式问题导致的匹配失败
  • 移除无用的%hash2:直接利用原哈希的键值对应关系验证,逻辑更直观高效
  • 完善条件判断:先用exists $hash{$name}检查输入的名字是否存在于哈希的键中,再对比对应的值,避免出现未定义值的警告

内容的提问来源于stack exchange,提问作者Duomi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 03:43:25