For small-scale projects like that, scripting languages are great. But on larger projects, the advantages of scripting languages turn into disadvantages.
For example, say you're writing a short program in Perl that just has to work right now. If you discover that in some corner case, you need to shove another data member into one of your objects, you don't have to go back and fix your object definition -- you can just cram it into an instance and have done with it.
But large programs are very hard to understand if objects don't have a coherent identity over time. Scripting languages give you the freedom to "just make it work now", but they don't give you the ability to make decisions about your program's inner structure and enforce them. This inner structure is what makes a large program understandable and maintainable.