#!/usr/bin/perl -w

    my @allrpms = split (/\n/, `rpm -qa`);
    my $p = "%-30.30s %-30.30s %-30.30s %s\n";
    printf  $p . "-" x100 . "\n", 'RPM', 'package name', 'installed', 'related';
    while ( my $rpm = shift @ARGV ) {
        $rpm =~ s/.*\///;
        $rpm =~ s/\.(i[3456]86|athlon|ia64|ppc|alpha|sparc|sparcv9|sparc64|m68k|noarch)\.rpm$//;
        $rpm =~ /(.*?)-\d/ || die "unable to determine package name: $rpm\n";
        my $pkg = $1;
        my $inst = `rpm -q $pkg 2>/dev/null`;
        chomp $inst;
        next if $inst eq $rpm;
        $inst = '' if $inst =~ /not installed/;
        my $pkgbase = $pkg;
        $pkgbase = $1 if $pkg =~ /(.*?)\d+/;
        my @related = grep { /^\Q$pkgbase\E-?\d/ } @allrpms;
        printf $p, $rpm, $pkg, $inst, join("\n" . " " x93, @related);
    }

