Am Don, 2003-06-26 um 21.17 schrieb Bernd Brodesser:
* Wolfgang Hinsch schrieb am 26.Jun.2003:
An den info-Pages mag ich nicht die fehlende Einheitlichkeit. Wenn man was sucht ist man oft aufgeschmissen.
Nett, dass man hier mal jemanden trifft, der auch kein info-Fan ist. Man fühlt sich sonst ja fast wie ein Dissident;-)
OK, für Perl muss ich mir irgendwann einmal Zeit nehmen. Für alles, was eine Druckseite übersteigt, greife ich zu C oder C++. Ich hasse (/\$?*\*[&%$``].)*.!
Dann nimm Dir keine Zeit für perl, Du wirst enttäuscht sein, oder besser noch, nimm Dir doch Zeit für perl und lerne die RegExp lieben. Du wirst Dich wundern was man damit alles machen kann. Da hilft einem C oder C++ auch nicht weiter. Klar geht es damit, die meisten Programme, die RegExp benutzen sind ja in C geschrieben, und es gibt auch eine C-Bibliotheksfunktion regex Siehe man 3 regex
Da habe ich mich offensichtlich missverständlich ausgedrückt. Klar sind regex eine super Sache, auch wenn es sie jetzt in 3 Haupversionen gibt. Mir geht es mehr um den Rest der shell-Programmierung. Versuche nur einmal, Texte oder Konfig-Files in bash einzulesen. Natürlich geht das. Man muss nur immer sorgfältig Backslashes und Anführungszeichen und Hochkommata und wissen die Götter was noch setzen und daran denken, dass bei der Übergabe in eine sub-shell der \ verschwindet und deshalb \\\* schreiben, und wenn man aus irgendeinem Grund etwas ändert und eine weitere shell ins Spiel kommt, nur mal eben in \\\\\\* ändern, ....
Aber wie willst Du es machen, wenn Du etwa
durch ersetzen willst, die ... für beliebige Zeichen stehen aber kein > und kein Zeilenumbruch darin sein darf? Klar da kann man mit viel Aufwand eine unflexible C-Routine bauen oder aber s/
]*\)Ende>/ /g nehmen.
Das ist ein Super-Beispiel bezüglich der Lesbarkeit. Stell Dir nur das ganze noch komplexer und über eine halbe Seite ausgedehnt vor. Im Grunde ist es ähnlich unflexibel wie C. Während man es schreibt, ist eigentlich alles klar. Muss man es nach einem halben Jahr verändern, geht das zwar mit sehr wenig Aufwand, aber man braucht vorher einige Zeit, um zu verstehen, was da passiert und nachher u.U. noch mehr Zeit für Fehlersuche. Wobei ich im konkreten Fall natürlich auch bash nehmen würde, da gebe ich Dir recht. Mir geht es im Grunde weniger um regex als um Sachen wie IFS, Thema Dateinamen mit Leerzeichen und anderen Verzierungen dank M$. Hier bin ich mit einer Sprache wie C++ um einiges schneller und sicherer. Allerdings nicht bei einem Dreizeiler. Übrigens ist es für mich immer eine Sache der Abwägung, wie oft wird das Programm aufgerufen/wie schnell muss es fertig sein/wieviel Aufwand ist gerechtfertigt/muss es später angepasst werden. Besonders schön ist es, ein älteres, von mehreren geändertes shell-Script lesen und verstehen zu müssen. Ein Kollege hat früher mal bash-Programme geschrieben, die komplexe Datenumwandlungen und Berechnungen durchführten. Funtioniert, ist super-langsam, unlesbar, nicht zu warten und zieht jede Menge Rechnerleistung (da fast nur am forken). Ich hatte früher einmal awk benutzt, da waren einige Sachen übersichtlicher. Ich denke, dass Perl da auch verschiedene Verbesserungen gegenüber bash bringt. Gruß, Wolfgang