Ниже приведено описание проверки информации о программном обеспечении в списке IP-адресов. Программа печатает версию программного обеспечения, работающего на всех IP-адресах, как ожидалось.сравнение строк в foreach
Теперь, я хотел бы проверить, идентично ли программное обеспечение, работающее на всех 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
Итак, что вы считали? Это выглядит довольно прямолинейно. Возьмите версию с первого; проверьте, одинаковы ли все остальные, распечатывая любые несоответствующие версии. Конечно, существует риск того, что первая машина будет с нечетной версией. Вы также можете создать хеш с подсчетом каждой версии (с ключом по версии), и когда вы закончите цикл выше, перейдите по клавишам этого нового хэша, чтобы сообщить о версиях и подсчетах. Вы также можете создать хеш-ключ на версии со списком машин, использующих эту версию. И т. Д. Все хорошее чистое базовое программирование на Perl. –
Похоже, вы пишете объектно-ориентированное программное обеспечение, и в этом случае вы должны использовать методы доступа, а не рассматривать '$ self' как обычную хэш-ссылку. – Borodin