Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl 如何比较嵌套哈希_Perl_Hash - Fatal编程技术网

Perl 如何比较嵌套哈希

Perl 如何比较嵌套哈希,perl,hash,Perl,Hash,我试图比较散列中的数据,以找出差异。 我的哈希: 我想检查同一个用户,例如ID为5678903的用户在每台服务器上的状态和年龄值是否相同。我应该把它分成三个分开的散列吗 谢谢你的建议 下面是一个示例,说明如何在子哈希中比较给定用户的值。假设您的散列名为$info: use List::Util qw(uniq); my $info = { ... }; # Set up the hash here my $user = "5678903"; my $status = get_user_val

我试图比较散列中的数据,以找出差异。 我的哈希:

我想检查同一个用户,例如ID为5678903的用户在每台服务器上的状态和年龄值是否相同。我应该把它分成三个分开的散列吗


谢谢你的建议

下面是一个示例,说明如何在子哈希中比较给定用户的值。假设您的散列名为
$info

use List::Util qw(uniq);

my $info = { ... };  # Set up the hash here
my $user = "5678903";
my $status = get_user_value( $info, 'status', $user );
my $age = get_user_value( $info, 'age', $user );

if ( ((uniq @$status) == 1) && ((uniq @$age) == 1) ) {
    say "Same status and age";
}
else {
    say "Not same status and age";
}

sub get_user_value {
    my ( $info, $key, $user ) = @_;

    my @values;
    for my $server (keys %$info) {
        if (exists $info->{$server}{$user}) {
            push @values, $info->{$server}{$user}{$key}
              if exists $info->{$server}{$user}{$key};
        }
    }
    return \@values;
}
use List::Util qw(uniq);

my $info = { ... };  # Set up the hash here
my $user = "5678903";
my $status = get_user_value( $info, 'status', $user );
my $age = get_user_value( $info, 'age', $user );

if ( ((uniq @$status) == 1) && ((uniq @$age) == 1) ) {
    say "Same status and age";
}
else {
    say "Not same status and age";
}

sub get_user_value {
    my ( $info, $key, $user ) = @_;

    my @values;
    for my $server (keys %$info) {
        if (exists $info->{$server}{$user}) {
            push @values, $info->{$server}{$user}{$key}
              if exists $info->{$server}{$user}{$key};
        }
    }
    return \@values;
}