R.Schulze: Perl-Scripts unleserlich???

Hallo,

Ich hab nicht so besonders viel Wissen in Umgang mit Perl.
Wohl aber in anderen Programmiersprachen wie C/C++, Pascal oder JavaScript.
Doch frage ich mich beim Anblick einiger Perl-Scripts, ob die jeweiligen Programmierer entweder zu wenig Erfahrung oder ein besonders abstaktes Gehirn haben.

Dazu folgender Codeschnipsel (Perl):

######################################################################################

#!/usr/local/bin/perl

use CGI qw/:standard/;
$CGI::POST_MAX=1024 * 25;  # max 25K posts
$file_name = param('file_name');
$file_type = param('file_type');
&Print_Error if($file_name eq "");
&Print_Results;
sub Print_Results{
if($file_type eq "text"){
print header();
print start_html('File Upload Test');
print "<PRE><B>File Name:</B> $file_name\n";
print "<B>File Contents:</B>\n";
while(<$file_name>){ print $_; }
print "</PRE>";
print end_html;
} else {
print header('image/gif');
while(read($file_name,$data,1024)){ print $data; }
} # End of if..else
} # End of subroutine.

#######################################################################################

^ Und hier fängt es an.

Es ist doch schade, wenn man zu bloed ist den Code richtig auszurichten, das jeweilige Codeblockende
zu kommentieren, was da nun grade aufhört.

Oder???

So sieht es doch viel besser und übersichtlicher aus:

#################################################################

#!/usr/local/bin/perl

use CGI qw/:standard/;
$CGI::POST_MAX=1024 * 25;  # max 25K posts

$file_name = param('file_name');
$file_type = param('file_type');

&Print_Error if($file_name eq "");
&Print_Results;

sub Print_Results
{
if($file_type eq "text")
{
     ...
     while(<$file_name>)
  {
  print $_;
  }
              ...
}
else
{
     print header('image/gif');
     while(read($file_name,$data,1024))
  {
  print $data;
  }
   }
}

###########################################################

Dazu würde ich mal gern ein paar Sachen hören!!!

  1. Sorry aber die Formatierung ist in meinem Beispiel nicht so geworden wie ich es eingetragen hatte.

    Aber wers kennt weiß was ich meine

  2. Hallo.

    Ich denk das hat nichts mit Perl zu tun, sondern ist Sache des
    Programmierers.
    Einzig gibt es bei c++ viele Entwickler welche mit einem
    riesen Editor ihren Code schreiben, welche automatsich nach
    einer Klammer einen Absatz erzeugen.
    Wohingegen vieler Perl-Hacker noch vor einem vi(beste Editor der Welt)
    sitzen.

    Gruß
    tom

    1. Ich denk das hat nichts mit Perl zu tun, sondern ist Sache des
      Programmierers.

      Natürlich hat es nichts mit Perl zu tun.
      Früher habe ich auch nicht eingerückt.

      Und natürlich ist es auch Geschmackssache.
      Aber IMHO sollte Quellcode sauber sein, schon alleine der Wartung wegen

  3. Hi!

    natürlich ist das schwer zu lesen, wenn dann noch viele RegEx's dazukommen.. aber:
    vielleicht ist das so sparsam formatiert, um den Code schlank zu halten, CR-LF (carriage return - line feed) sind auch Zeichen, die eine Datei aufblähen...

    und es soll doch alles schneller werden, od'r?

    ich denke, wenn es funzt, ist es gut..

    Gruss
    Connie

    1. und es soll doch alles schneller werden, od'r?

      Dazu gibts Xeon, Ultra SPARC, Alpha, Itanium und Co. sowie schnellste Speichersysteme.

      MfG
      Thomas

    2. Hallo Connie!

      natürlich ist das schwer zu lesen, wenn dann noch viele RegEx's dazukommen.. aber:
      vielleicht ist das so sparsam formatiert, um den Code schlank zu halten, CR-LF (carriage return - line feed) sind auch Zeichen, die eine Datei aufblähen...

      Ja, neulich musste ich mir doch tatsaechlich ne neue Platte zulegen, weil ich meine anderen 20 Gigs schon mit CRLFs zugeballert hab...

      und es soll doch alles schneller werden, od'r?

      Tja, ich kann's einfach nicht lassen mit den Einrueckungen, deshalb wohl geht mein Rechner immer voll in die Knie, wenn ich ein kleines Script zum Umbenennen von Dateien starte. Ja, das wird's sein.

      So long

    3. Halli Hallo,

      vielleicht ist das so sparsam formatiert, um den Code schlank zu halten, CR-LF (carriage return - line feed) sind auch Zeichen, die eine Datei aufblähen...

      Hast Du Dir schomn mal einige Module angesehen, wie die geschrieben wurden???
      z.T. stehen sogar die Dokumentationen drinnen, ist auch o.k. oder?

      und es soll doch alles schneller werden, od'r?

      Versuchs mit mod_perl!

      ich denke, wenn es funzt, ist es gut..

      und wenn es nicht funzt, dann weiß ich wenigstens, daß ich gleich gar nicht suchen brauche, weil ich sowieso nichts finde.

      Also ich bin mir sicher, daß eine gute Optik immer besser ist als eine Zeichenwurst.
      Ich mag andererseits auch nicht solche Editoren, welche der Meinung sind, zu wissen wie ich meine Code
      formatieren soll. (EMACS ist die Pest) Oje, jetzt wird wohl eine Menge Proteste hageln.
      Ich mag auch nicht den Pseudostandard mit der Klammer in der ersten Zeile

      foreach $line (@lines){
         ...
        }
      ist mir noch immer zu unübersichtlich.
      Wichtig ist meiner Meinung auch, daß Variablen auch wirklich beschreiben, welche Aufgabe sie erfüllen.
      Auch kann man Code trotz Einrückungen so fpormulieren, daß kein Mensch mehr draufkommt, was da eigentlich passiert
      sicher ich mach auch oft Sachen wie

      print chomp while <IN>;

      aber ich denk mir Perl-Programmierer wissen schon, was los ist.
      Trotzdem, wenn ein Algorithmus komplexer ist, daß versuche ich nicht irgendwelche obskuren Codeoptimierungen,
      welche meist nur verschleiern, was eigentlich passiern soll.
      Auch verwende ich ab und an lieber zwei REGEXEN statt einer komplizerten.
      Und so weiter und so fort.
      Langer Rede, kurzer Sinn,
      Ich versuche, Code zu schreiben, den ich in einem Jahr auch noch lesen und verstehen kann.

      Grüße
      Klaus

  4. auch hallo,

    hmm, ich bin zum beispiel einer von der sorte, die auch gerne mal zwei versionen von einem script/source haben - eins kommentiert und eins optimiert fuer den live-einsatz ---> da wuerde dann sowieso noch mehr in einer zeile landen :-)
    das kann man auch mit nem kleinem batch-prozess praktizieren.

    cua

    n.d.p.

  5. Hi,

    Doch frage ich mich beim Anblick einiger
    Perl-Scripts, ob die jeweiligen Programmierer
    entweder zu wenig Erfahrung oder ein besonders
    abstraktes Gehirn haben.

    ist das nicht egal, was von beidem? ;-)

    Für den "realen Einsatz" (kein Übermensch-Programmierer
    zur Hand, trotzdem soll der Code morgen noch wartbar
    sein) gilt: Source-Code ist WORM (write once, read many).
    Also ist Investition in Kommentare, Einrückung etc.
    sinnvoll.

    Ich schreibe überhaupt *zuerst* die Kommentare, weil
    ich mir *dabei* bewußt werde, was ich brauche und was
    nicht.
    Ob ich dann für die Erledigung einer Teilaufgabe fünf
    Zeilen Perl oder einen Funktionsaufruf hinschreiben
    werde, das weiß ich doch erst, nachdem ich gesehen habe,
    an wievielen anderen Stellen ich dieselbe Teilaufgabe
    noch habe ... bei Top-Down-Entwicklung komme ich ohne
    heftiges Kommentieren einfach nicht zurande.

    Folglich schreibe ich *kein* Skript unter ca. 60%
    Kommentar. Nicht mal eine sogenannte Fingerübung.
    Es lohnt sich einfach nicht, zu "sparen".

    mfG - Michael
    (der sehr eigenartig und sehr tief einrückt, was zur
    Erstellung sehr kurzer Funktionen diszipliniert, weil
    seitliches Schrolling "bäh" ist ...)