foreach中的字符串比较
string comparison in foreach
下面的测试是查看IP地址列表中的软件信息。
该程序按预期在所有 IP 上打印软件版本 运行。
现在,我想测试下软件运行是否所有IP都一样?我该怎么做?
sub test_check_software_info_on_all_the_ips {
my ($self) = @_;
$self->{'machine_ip'} = $self->{'queryObj'}->get_machine_ip();
foreach my $ip ( @{ $self->{'machine_ip'} } ) {
$self->{'install_info'} = $self->{'queryObj'}->get_install_info($ip);
INFO( 'Software info of ' . $ip . ' is ' . $self->{'install_info'} );
}
}
示例输出
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
这会按照你的要求去做
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";
}
一如既往,一切都已经为你写好了,你只需要找到它。虽然核心中有一些 gem 可以通过 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 ;
}
下面的测试是查看IP地址列表中的软件信息。 该程序按预期在所有 IP 上打印软件版本 运行。
现在,我想测试下软件运行是否所有IP都一样?我该怎么做?
sub test_check_software_info_on_all_the_ips {
my ($self) = @_;
$self->{'machine_ip'} = $self->{'queryObj'}->get_machine_ip();
foreach my $ip ( @{ $self->{'machine_ip'} } ) {
$self->{'install_info'} = $self->{'queryObj'}->get_install_info($ip);
INFO( 'Software info of ' . $ip . ' is ' . $self->{'install_info'} );
}
}
示例输出
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
这会按照你的要求去做
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";
}
一如既往,一切都已经为你写好了,你只需要找到它。虽然核心中有一些 gem 可以通过 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 ;
}