如何检查Perl中的值是否在列表中?

abl*_*mit 1 arrays perl hash list

我有一个文件,其中每一行都是一个代表id的整数.我想要做的只是检查这个列表中是否有一些特定的ID.但是代码没有用.它永远不会告诉我它存在,即使123是该文件中的一行.我不知道为什么?帮助赞赏.

open (FILE, "list.txt") or die ("unable to open !");

    my @data=<FILE>;

    my %lookup  =map {chop($_) => undef} @data;

    my $element= '123';
    if (exists $lookup{$element})
    {
        print "Exists";
    }
Run Code Online (Sandbox Code Playgroud)

提前致谢.

bri*_*foy 6

您希望确保正确地创建哈希.非常过时的印章不是你想要使用的.请改用chomp,并在创建哈希之前立即在整个数组上使用它:

 open my $fh, '<', 'list.txt' or die "unable to open list.txt: $!";
 chomp( my @data = <$fh> );
 my $hash = map { $_, 1 } @data;
Run Code Online (Sandbox Code Playgroud)