in reply to How to parse the zypper info output?
#!/usr/bin/perl use warnings; use strict; use feature qw{ say }; use XML::LibXML; my %repos; open my $lr, '-|', qw{ zypper -x lr }; my $dom = 'XML::LibXML'->load_xml(IO => $lr); for my $repo ($dom->findnodes('/stream/repo-list/repo')) { $repos{ $repo->{name} } = {alias => $repo->{alias}, url => $repo->findvalue('url')}; } open my $zypper, '-|', qw{ zypper info python-rpm-macros Mesa-libEGL1 libedit0 fontconfig-dev +el } or die $!; my ($package, $repository); while (<$zypper>) { if (/^Information for package (.*):/) { $package = $1; } elsif (/Repository\s+: (\S+)/) { $repository = $1; say join "\t", $package, $repository, @{ $repos{$repository} }{qw{ alias url }}; } }
|
|---|