Deine beschreibungen sind nicht wirklich im detail nachvollziehbar:
Richtig ist: perl 5.18 wird abgelöst durch 5.20
Das hat zur konsequenz dass ein elend langer rattenschwanz von programmen neu gegen das neue perl5.20 kompiliert werden muss(te). Erst dann, wenn alle betreffenden, bei dir installierten pakete in ihre neuen form in den repos sind solltest du d-u-en. Dann allerdings ollte in der tat perl5.18 entfernt werden.
Bei mir gab es die situation, dass die letzten drei tage noch drei pakete nicht in neuer form vorlagen und entfernt worden wären. Ein d-u eben jetzt zeigt, dass nun *bei mir* ausser perl5.18 nichts mehr entfernt wird. Ich kann nun ein d-u durchführen.
Tja, bleibt zu fragen: Was tut nicht? Hast du packages auf hold?
Aus oben genanntem sollte klar werden, dass libper5.18 erst das system verlassen *kann* wenn wenn alle davon abhängenden packe in neuer form installierbar sind. Oder du diese pakete gehen läßt, was du vermutlich nicht willst.