And how will they choose which IP to use? If all computers in my network have two IPs then they'll probably use one of them randomly, which means that some established internal connections will break after the public IP changes.
Not randomly. See Default Address Selection for Internet Protocol version 6 (IPv6).
I think the reason perl is the centre of so many big balls of mud is that it is easy to do prototypes in it.
You're very right with that, but there's more.
In many cases, Perl allows you to reach your programming goal easily, without much effort. But this unfortunately also means that it encourages quick & dirty programming. Just scribble down your code and the job is done; it just works. In other languages that are less powerful/flexible in their syntax (that does not mean restricted in their possibilities!), like C, C++ or Java, you normally have to write a lot more lines of code. This not only makes the code more readable in many cases, it also urges you to think more about what you are doing. If your programming task will take a lot of time to implement, you will try to find an optimal (or at least, good) approach, a better solution to it, make it reusable, use a design pattern - you will just think more. And the time you invest in the design is well spent, as it may save you unnecessary effort in the coding and debugging phases.
Okay, so a C/C++/Java/whatever programmer will need more time to design and implement. Perhaps. But that's not all: primarily, you must be able to design your software. You must know your design patterns, your algorithms, your best practices. Without that knowledge, most languages will give you a hard time to create working code. Heck, with many languages you will not even make it to "Hello, world" without compiler warnings if you don't understand how it works.
But not with Perl. It makes your start quite smooth. You don't have to declare your variables, care about strange #includes or imports, just write print "Hello, world!" and it will compile and execute (and you will not even see these different steps). And unfortunately, this also means -- and that is also my experience with a lot of beginners in different Perl forums and on the Usenet -- that Perl is more attractive to those who do not have a formal education in software engineering. They do not have to wade through thick volumes about "C++ in $smallint days", just to find out how to convert a string into a number, split an input line at commas, or grab a page from the Web. They will soon find a quick&dirty, one-line solution in an online tutorial or a forum that can be pasted into their code without even breaking the rest of it or make the compiler scream (no beginner will use strict or warnings pragmas unless urged to). It will not be the most efficient solution. It will probably break when the input data vary a bit. It will likely be full of security flaws (but at least no buffer overflows!). But it will do the job and give even the hobby coder a (false) feeling of competence and aptitude.
PHP has even more of that "easy for beginners" nimbus (sorry, folks), but Perl does not stand much behind. You can see the results most obviously in a lot of the CGI code that can be found on the Net. (Anyone think of "Matt's script archive"?)
So, is it the fault of a programming language that it is attractive to non-programmers? Perhaps. I'm not the one to judge.
If people choose to take those prototypes and turn them into big balls of mud, then that is their own fault. If you start with a clean sheet of paper, do a good design and then decide to implement it in perl you won't end up with a big ball of mud.
YES, absolutely! But it is just so easy to get persuaded by Perl to do it quick, sufficiently working, and dirty. *sigh*
I took the bait myself far too often.
To be is to program.