我正在尝试比较哈希中的数据,以便发现差异。 我的哈希值:
$VAR1 = {
10.200.40.10 => {
5678903 => {
'status' => 'ACTIVE',
'age' => '20'
}
8234234 => {
'status' => 'NOT ACTIVE',
'age' => '23'
}
}
10.200.40.11 => {
5678903 => {
'status' => 'NOT ACTIVE',
'age' => '20'
}
8234234 => {
'status' => 'NOT ACTIVE',
'age' => '23'
}
}
10.200.40.12 => {
5678903 => {
'status' => 'NOT ACTIVE',
'age' => '21'
}
8234234 => {
'status' => 'ACTIVE',
'age' => '23'
}
}
}
我想检查同一用户(例如ID为5678903的用户)在每台服务器上是否具有相同的状态和年龄值。我应该将其划分为三个单独的散列吗?
感谢所有建议!
答案 0 :(得分:1)
这里是一个示例,您可以在子哈希中比较给定用户的值。假设您的哈希称为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;
}
:
index.js