Perl 如何比较嵌套哈希
我试图比较散列中的数据,以找出差异。 我的哈希: 我想检查同一个用户,例如ID为5678903的用户在每台服务器上的状态和年龄值是否相同。我应该把它分成三个分开的散列吗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
谢谢你的建议 下面是一个示例,说明如何在子哈希中比较给定用户的值。假设您的散列名为
$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;
}