ich bevorzuge bei groesseren Anwendungen den Weg:
x) kurze hauptprogramme (sind meistens unter 100 Zeilen)
x) Code nach Thematik/Interfaces gruppiert in Module auslagern
x) Pro Funktion/Methode moeglichst nur ein Gedankengang, der sich ueber den Subroutinennamen klassifizieren laesst (allerdings mache ich das nicht 100% konsistent). Dabei komme ich mit 25 Zeilen nur selten hin, gerade wenn ich darin komplexere Datenstrukturen dokumentieren muss. Ich finde auch, die 25-Zeilen-Regel hat mal Sinn gemacht, als die Monitore noch kleiner waren; heutzutage finde ich das eher sinnlos (ok, Subs ueber 100 zeilen verwende ich nur in Ausnahmefaellen)
x) Die Breite von 80 zeichen halte ich - seit ich programmiere - streng ein, obwohl ich nicht genau weiss warum: ich drucke fast nie Code aus, von der Bildschirmgroesse her waeren auch 120 zeichen kein thema, und wenn ich code per mail versende, dann versende ich ihn als attachment. Ich finde es halt so besser lesbar.
x) Sprechende Variablen/Funktionsnamen sind mir sehr wichtig. Ich habe mich dazu entschlossen, die stets auf Englisch zu benennen, als ich mal ein recht langes Script auf Portugisisch debuggen durfte...
x) strict und warnings (wobei ich mittlerweile so arrogant geworden bin und warnings auch in Produktionscode aktiviert lasse). Ich muss dann halt manchmal einige Klimmzuege unternehmen, damit manch "sinnlose" warnings nicht auftreten koennen, wie z.B. bei @x = qw(1 2 3 # a b c , A B C); (PS: ich freue mich schon auf die Perl6-Operatoren // und //= )