Модуль RPM2 использует оператор сравнения, <=>, для сравнения версий одноименных пакетов. Следующий скрипт (rpmver.pl) показывает, как сравнить все локальные файлы rpm-пакета с определенным именем с новейшей установленной версией этого пакета (если он установлен).
| 
 #!/usr/bin/perl -w 
  
# 
  
# Compare versions of all *.rpm files against the 
  
# latest packages installed (if installed) 
  
# 
  
# Usage: 
  
# rpmver.pl 
  
# This script looks for all *.rpm files. 
  
# 
  
use strict; 
  
use RPM2; 
  
my $rpm_db = RPM2->open_rpm_db(); 
  
for my $filename (<*.rpm>) { 
  
my $h = RPM2->open_package( $filename ); 
  
# Ensure we compare against the newest 
  
# package of the given name. 
  
my ($installed) = 
sort { $b <=> $a } $rpm_db->find_by_name($h->name); 
  
if (not $installed) { 
  
printf "Package %s not installed.\n", $h->as_nvre; 
  
} else { 
  
my ($result) = ($h <=> $installed); 
  
if ($result < 0) { 
  
printf "Installed package %s newer than file %s\n", 
  
$installed->as_nvre, 
  
$h->as_nvre; 
  
} else { 
  
printf "File %s newer than installed package %s\n", 
  
$h->as_nvre, 
  
$installed->as_nvre; 
  
} 
  
} 
  
} 
  
 | 
Сортировка { $a <=> $b } перед вызовом find_by_name сортирует все пакеты с заданным именем по версии, поэтому сравнение происходит с новейшей версией установленного пакета. ($h <=> $installed) сравнивает информацию хэдера файла на диске с информацией об установленном пакете из БД.
При запуске скрипта вывод будет зависеть от локальных rpm-файлов, имеющихся в каталоге на диске:
| 
 $ perl rpmver.pl 
  
Package acroread-4.0-0 not installed. 
  
Package canvas-7.0b2.0-1 not installed. 
  
Installed package jikes-1.18-1 newer than file jikes-1.14-1 
  
Installed package SDL-1.2.4-5 newer than file SDL-0.9.9-4 
  
Package ted-2.8-1 not installed.  
  
 | 
 Далее - Закрытие БД RPM 
 Назад - Получение информации о пакетах 
 Содержание