Re: awk buggy?

From: Oliver Fromme <olli(at)secnetix.de>
Date: Thu, 19 Jun 2003 13:05:27 +0200 (CEST)

Marc Santhoff <M.Santhoff(at)t-online.de> wrote:
> Am Mi, 2003-06-18 um 20.23 schrieb Joerg Over Dexia:
> > In Deinem Skript ist das für awk aber nicht als Stringkonstante
> > erkennbar.
> > (Wie sollte der das sonst vonner variablen unterscheiden?)
>
> Stimmt auffallend, ich bin wohl verwöhnt von anderen Sprachen, die
> explizite Deklaration der Variablen verlangen. DAmit wäre das nicht
> passiert.

Das ist bei Skriptsprachen (leider) üblich. Das ist in
perl und sh (per default) nicht anders. Python ist da
schon deutlich besser, meiner Meinung nach, aber Python
befindet sich auch schon in der Grauzone zwischen Skript-
Sprache und »richtiger« Programmiersprache.

Übrigens, kleiner Tip zum Debuggen von awk-Skripten:
In den Ports gibt es »awka«. Das ist ein awk-Compiler,
der awk-Skripte nach ANSI-C übersetzt, aus denen dann
ein richtiges Binary compiliert werden kann. Was aber
viel wichtiger ist: awka hat eine äußerst nützliche
Fehlerbehandlung und findet Probleme, die andere awk-
Implementationen nicht finden. Unter anderem kann man
auch mit Hilfe spezieller Kommentarzeilen Variablen
»deklarieren« und sich Warnungen geben lassen, wenn man
versucht, eine Variable zu benutzen, für die es keine
solche Deklaration gibt.

Wenn ich ein umfangreicheres awk-Skript schreibe, lasse
ich es grundsätzlich einmal durch awka laufen, um po-
tentielle Problemquellen zu finden, quasi als eine Art
»awk-lint«. Das hat sich sehr gut bewährt.

Gruß
   Olli

-- 
Oliver Fromme, secnetix GmbH & Co KG, Oettingenstr. 2, 80538 München
Any opinions expressed in this message may be personal to the author
and may not necessarily reflect the opinions of secnetix in any way.
"Clear perl code is better than unclear awk code; but NOTHING
comes close to unclear perl code"  (taken from comp.lang.awk FAQ)
To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Thu 19 Jun 2003 - 13:05:31 CEST

search this site