Dies ist der Cache von Google von http://www.perltk.de/perltutorial/portabel.html. Es handelt sich dabei um ein Abbild der Seite, wie diese am 26. Juni 2008 09:07:41 GMT angezeigt wurde. Die aktuelle Seite sieht mittlerweile eventuell anders aus. Weitere Informationen

Nur-Text-Version
Diese Suchbegriffe sind markiert: perl Diese Begriffe erscheinen nur in Links, die auf diese Seite verweisen: plattform übergreifende script  
Perl Tutorial: Hinweise für Plattformübergreifende Programmierung  Perl Tutorial

Hinweise für Plattformübergreifende Programmierung


Plattformen

Perl ist für viele Plattformen erhältlich und mit erscheinen der Version 5.6 wurde die Anzahl der unterstützen Plattformen nochmal erhöht. Die grundlegende Funktionalität steht so für viele Plattformen bereit. Da die unterstützten Betriebssysteme ihre Eigenheiten haben, sollte man die Skripte möglichst gut darauf vorbereiten, wenn man vollständig portabel programmieren will oder muß.

Dateipfade- und namen

Bei den Dateipfaden fangen die Inkompatibilitäten an, Windows benutzt den Backslash, Unix und Linux den Slash und Mac OS den Doppelpunkt, um die Verzeichnisse zu trennen. Verwendet man in einem Skript Pfadnamen, so empfehle ich diese in Variablen abzulegen, die gleich am Skriptanfang stehen. So sieht man auf den ersten Blick was auf einem anderen Betriebssystem angepasst werden muß. Für die Dateinamen gilt, das man nur die Zeichen benutzen sollte, die auf allen Systemen zur Verfügung stehen. Das wären die Kleinbuchstaben (keine Umlaute oder ß), die Zahlen, der Underscore und der Punkt um eine evtl. Extension abzutrennen. Großbuchstaben sollte man nicht benutzen bzw. nur dann, wenn keine gleichen Dateinamen der Art "TEST" und "test" auftreten. Manche Betriebsysteme könnten diese Dateien als gleich bzw. ungleich betrachten, was dazu führt das das Skript fehlerhaft arbeitet.

Will man zur Laufzeit Pfade zusammenbasteln hat man auch das Problem nicht zu wissen, welchen Verzeichnistrenner das vorhandene OS benutzt. Das Perl Modul CGI.pm macht uns vor, wie man den Verzeichnistrenner zur Laufzeit ermitteln kann:

# Dieser Code stammt aus CGI.pm
unless ($OS) {
  unless ($OS = $^O) {
    require Config;
    $OS = $Config::Config{'osname'};
  }
}
if ($OS=~/Win/i) {
  $dir_separator = '\\';
} elsif ($OS=~/vms/i) {
  $dir_separator = '/';
} elsif ($OS=~/bsdos/i) {
  $dir_separator = '/';
} elsif ($OS=~/dos/i) {
  $dir_separator = '\\';
} elsif ($OS=~/^MacOS$/i) {
  $dir_separator = ':';
} elsif ($OS=~/os2/i) {
  $dir_separator = '\\';
} else {
  $dir_separator = '/';
}

Zur Erklärung dieses Codes möchte ich an dieser Stelle nichts weiter sagen, nur das am Ende des Codestücks in $dir_seperator der Verzeichnistrenner steht. Man kann dann z.B. mit "$datei=$basispfad+$dir_seperator+$dateiname" den kompletten Pfad- und Dateinamen zusammensetzen.

Filelocking

Das Filelocking wird erst später in diesem Tutorial behandelt, es sei aber vorab erwähnt, das Filelocking nicht von allen Perlversionen untersützt wird. Benutzt man den Befehl unter dem Win 9x Port von Perl, so erhält man eine Fehlermeldung. Windows NT ist davon nicht betroffen, genausowenig die Linuxversion. Aus diesem Grund empfiehlt es sich in Skripten die Filelocking benutze am Anfang einen Skalar einzuführen, mit dem man das Filelocking ausschalten kann, denn die Fehlermeldung erscheint nur beim Aufruf, nicht beim compilieren des Skripts. Hier sei dann auch noch die Warnung ausgesprochen das Skripte ohne Filelocking Fehlverhalten erzeugen können.


Copyright © Volker Janzen
Letzte Aktualisierung am 25. März 2008

Home Inhaltsverzeichnis Subroutinen Dateizugriffe und Filelocking