foreach中的字符串比较

时间:2016-09-07 14:41:23

标签: perl perl-module

以下测试是检查IP地址列表中的软件信息。 该程序按预期打印在所有IP上运行的软件版本。

现在,我想测试在所有IP上运行的软件是否相同?我该怎么做?

20160907T141846   INFO    Software info of 1.1.1.1 is r-2016-08-27-03
20160907T141846   INFO    Software info of 2.2.2.2 is r-2016-08-27-03
20160907T141847   INFO    Software info of 3.3.3.3 is r-2016-08-27-03
20160907T141847   INFO    Software info of 4.4.4.4 is r-2016-08-27-03

示例输出

$user1->password = 'testpassword1';

2 个答案:

答案 0 :(得分:0)

这将按照您的要求进行

sub check_matching_info {

    my ($self) = @_;

    my $ips = $self->{queryObj}->get_machine_ip;

    my %info;

    for my $ip ( @$ips ) {
        my $info = $self->{queryObj}->get_install_info($ip);
        push @{ $info{$info} }, $ip;
    }

    print keys %info == 1 ? "All IPs have the same install info" : "IPs have different install info";
}

答案 1 :(得分:0)

与往常一样,一切都已经为您编写,您只需要找到它。虽然通过List::Util可以获得核心中的一些宝石,但我们今天想要的不是核心,而是List::MoreUtils

use List::MoreUtils ('all') ;

sub check_versions_equal
{
  my ($self)= @_ ;
  my @vers= map ( $self->{queryObj}->get_install_info($_) }
            @{$self->{queryObjs}->get_machine_ip ;}
  return true unless @vers ;  # empty list case ;
  my ($v)= @vers ;
  return all { $_ eq $v } @vers ;
}