Das ATOS-Magazin 3/98
ATOS Tips und Tricks

# Atarium #103

Das Atarium von Julian Reschke war jahrelang eine Institution in den Atari-Printmedien. Kurz nach der 100. Ausgabe hatte die neue Redaktion jedoch kein Interesse mehr, so daß das letzte, bisher unveröffentlichte Atarium etwas Staub ansetzte - möchte man meinen. Doch das Thema ist aktueller denn je und hat nichts an Frische eingebüßt. Daher gibt es hier für alle, die es noch nicht kennen, das (vorerst?) letzte Atarium.

Von Julian Reschke

Atarium #103, Oktober 1996 Die Sprache(n) des Web

Wer zur Zeit die Diskussion um das Internet verfolgt, wird unweigerlich Bekanntschaft mit den Schlagworten "Java", "Java Script" und "ActiveX" gemacht haben. Mit diesen interpretierten bzw. vorkompilierten Sprachen wollen Sun, NetScape und Microsoft das World Wide Web um mehr Programmierbarkeit bereichern. Und da das Web noch immer in der Goldgräberphase steckt, sind alle diese Standards oder vielmehr Möchtegern-Standards natürlich frei verfügbar, portabel und noch vieles mehr. Nur wir Atari-Benutzer, also diejenigen, die jenseits des Mainstreams arbeiten, müssen zur Zeit auf alle diese wundervollen Neuigkeiten verzichten. Aber müssen wir das wirklich?

Es gibt natürlich keinerlei technischen Grund, nicht auch für die TOS-Plattform Java-Umgebungen zu entwickeln. Die Quellcodes kann man bei Sun mehr oder minder frei erhalten. Ob sich jemand die Mühe macht und dann am Ende auch die vorhandene Rechenpower ausreicht, ist natürlich eine völlig andere Frage.

Wenn man allerdings die Augen etwas weiter aufmacht, dann stellt man fest, daß noch zwei andere Scripting-Sprachen das Web prägen (oder einmal prägen sollen), und diese sind bereits unter TOS verfügbar. Eine davon ist Tcl (sprich: Tickl) und wird zur Zeit bei Sun weiterentwickelt. Über Tcl werden wir bei anderer Gelegenheit berichten.

Die andere Script-Sprache ist natürlich PERL (Practical Extraction and Report Language) von Larry Wall. Sie entstand schon vor vielen Jahren, um die nützlichen Fähigkeiten von "sed" und "awk" in einem vielseitigeren und schnelleren Programm zusammenzufassen. Heutzutage stellt PERL das wichtigste Bindeglied zwischen Web-Pages und Serverprogrammen dar, bietet objektorientierte Eigenschaften und einen unmittelbaren Zugriff auf Betriebssystemfunktionen. Und: sie ist frei verfügbar und voll portabel (die Änderungen für die Übersetzung mittels gcc und MiNT-Library umfassen gerade einmal 173 Zeilen). Nicht ganz selbstverständlich ist, daß die umfassende Dokumentation im HTML-Format geliefert wird und daher mittels CAB wunderbar zu erforschen ist (siehe Abbildung 1).

Das in Abbildung 2 abgebildete PERL-Programm dir.pl zeigt schon zwei der vielen Vorteile von PERL: Standard-Betriebssystemfunktionen - hier opendir/readdir/closedir - stehen als direkte PERL-Funktionen zur Verfügung. PERL operiert "gerne" mit Listen, und so liefert stat() auch gleich 13 Rückgabewerte zurück, die man auch auf einen Schlag zuweisen kann. Übrigens: da PERL mit der MiNT-Library PL 46 übersetzt wurde, werden auch unter MagiC 5.x die langen Dateinamen unterstützt (siehe Abbildung).

Und: PERL-Variablen sind typenlos, können also sowohl numerische Werte als auch Strings aufnehmen. Als Erweiterungen gibt es natürlich Felder und dazu noch "Hashes" (Felder, die statt über Zahlen mittels Strings indiziert werden).

Die Integration in das Atari-Umfeld wird besonders leicht, wenn man eine Unix-Shell wie die Mupfel verwendet. Durch die Kennzeichnung des Script-Typs (#!perl) weiß die Shell beim Öffnen des Scripts, daß zur Ausführung PERL benötigt wird. Das PERL-Programm läßt sich daher direkt durch Eingabe des Dateinamens starten und steht damit auf einer Stufe mit Shell-Scripts und "echten" ausführbaren Programmen.

Ich hoffe, damit ein wenig Appetit auf die PERL-Programmierung gemacht zu haben. Eine TOS-Portierung findet man beispielsweise auf ftp://ftp.uni-muenster.de/pub/atari/Mint sowie in der Maus MS2 (0251/77262). Sourcen, Beispielscripts und die HTML-Dokumentation gibt es quasi "überall" im Internet.

Bis zum nächsten Monat!

Julian Reschke

Abbildung 2: dir.pl

    #!perl

    $dir = ".";

    opendir (DIR, $dir) || die "can't opendir $dir: $!";

    while ($nextfile = readdir DIR)
    {
            ($dev, $ino, $mode, $nlink, $uid, $gid, $rdev, $size,
                    $atime, $mtime, $ctime, $blksize, $blocks) =
                    stat ($nextfile);

            printf "%9d %6o %s%s\n", $size, $mode, $nextfile, $filetype;
    };

    closedir DIR;

Ins Netz gegangen ...