perl upgrade from 5.18 to 5.20 was a bit painful. i could tell it was looking … odd, on my machines w/ almost no perl packs installed (git deps basically). on those systems, the simple emerge -utav perl managed to work with only a few complaints.
my spam scanning system, however, was another thing. amavis & spamassassin = such perl. it took several hours to figure this stuff out (due to minutes long ‘calculating dependencies’ on this ancient hardware).
TLDR:
emerge -utav $(qlist -IC 'virtual/perl-*')
OK. so. I’ve seen other issues in the past, and they boiled down to ‘having the wrong things’ in world (/var/lib/portage/world).
OK, yeah, I’ve got perl-core/IO-Socket-IP in there … 7 virtuals … 6ish dev-perl packs. Maybe it’s that.
emerge --deselect -av IO-Socket-IP
emerge -utavD perl
# different, not fixed.
emerge --deselect -av virtual/perl-ExtUtils-ParseXS perl-File-Temp perl-IO-Zlib perl-Locale-Maketext-Simple perl-Net-Ping perl-Package-Constants perl-libnet
emerge -utavD perl
# different, not fixed.
emerge -utavD perl ... added all dev-perl packages ... then some others ... no help.
# start using qlist, from a gentoo forum suggestion
emerge -utav perl Net-HTTP JSON Net-DNS Net-SSLeay libwww-perl DBI DBD-mysql IO-Socket-IP HTML-Parser perl-version net-server perl-Pod-Parser spamassassin Net-Ping MIME-tools $(qlist -IC 'virtual/perl-*') dev-perl/extutils-pkgconfig
emerge -utav perl Net-HTTP JSON Net-DNS Net-SSLeay libwww-perl DBI DBD-mysql IO-Socket-IP HTML-Parser perl-version net-server MIME-tools $(qlist -IC 'dev-perl/*') $(qlist -IC 'virtual/perl-*') dev-perl/extutils-pkgconfig amavisd-new
emerge -utav $(qlist -IC 'dev-perl/*') $(qlist -IC 'virtual/perl-*') $(qlist -IC 'perl-core/*')
# aaaaaaand, this worked:
emerge -utav $(qlist -IC 'virtual/perl-*')
If you are having a hard time upgrading perl on gentoo, apparently emerge -u with all installed virtual/perl-* atoms is the way to go.
If it doesn’t work, I would guess that deselecting perl-core/* and virtual/perl-* from world was actually important.