How about having [http://(www\.)?perlmonks.(org|net|com)/(.+)] be rendered the same as [href:///$2] ? The next step would then be to filter <a href=...> similarly (such are already fully parsed and so can be reliably filtered).
I tend to prefer to fix the rendering over changing the text that users have entered. It automatically fixes old nodes and getting it wrong in some way doesn't leave garbage saved that then has to be found and cleaned up.
Though I also see value in having perlmonks.org redirect to www.perlmonks.org but I suspect that will annoy a few people. I'd rather go in that direction than from www.perlmonks.org to perlmonks.org as it leaves open the unlikely possibility of wanting DNS entries for perlmonks.org to be less specific than "for web traffic", despite the trend for dismissing any such future possibilities.
If such a redirection is implemented, then the destination page probably also needs to re-issue a cookie, which complicates things. Though maybe not. It seems that cookies for perlmonks.org will work for www.perlmonks.org (that isn't always the case in the other direction, which could be another reason for standardizing on www.perlmonks.org as google already does -- because I told them to).