MarcoH: Wozu Perl lernen?

Hallo. Ich will mit Perl-Programmierung anfangen beziehungsweise weitermachen denn einiges kann ich schon. Nur stellt sich bei mir eine frage "Wozu Perl"?

Was ich damit meine ist ganz einfach. Ich benutze Perl allerhoechstens in zusammenhang mit cgi, wenn ich ein programm schreibe was ich in der eingabeaufforderung ausfuehren kann dann kann ich damit auch nicht viel anfangen und kann auch nur das machen was ich auch manuell auf dem pc machen koennte. Ausserdem muesste ich jedesmal zuerst die eingabeaufforderung starten und dann das programm anstatt wie bei c oder aehnlichen gleich auf eine exe klicken kann.
perl macht in meinen augen nur sinn in cgi also zum beispiel ein gaestebuch programmieren oder ein counter und und und.

Meine frage nun an euch verstehe ich etwas falsch was perl programmierung betrifft? Kann man in perl doch sehr sinnvolle programme machen die nuetzlich sind in der eingabeaufforderung?

tut mir leid wegen der etwas komischen frage aber ich moechte mich nun endlich festlegen welche programmiersprache ich letztendlich lernen will.

lg marco

  1. hallo,

    perl macht in meinen augen nur sinn in cgi also zum beispiel ein gaestebuch programmieren oder ein counter und und und.

    Wenn du von Windows ausgehst, liegt diese Vermutung sogar nahe. Linux-Systeme kommen ohne Perl ganz einfach nicht aus.

    Grüße aus Berlin

    Christoph S.

    --
    Visitenkarte
    ss:| zu:) ls:& fo:) va:) sh:| rl:|
  2. Hi,

    Was ich damit meine ist ganz einfach. Ich benutze Perl allerhoechstens in zusammenhang mit cgi, wenn ich ein programm schreibe was ich in der eingabeaufforderung ausfuehren kann dann kann ich damit auch nicht viel anfangen und kann auch nur das machen was ich auch manuell auf dem pc machen koennte.

    Meine frage nun an euch verstehe ich etwas falsch was perl programmierung betrifft? Kann man in perl doch sehr sinnvolle programme machen die nuetzlich sind in der eingabeaufforderung?

    Aber benenn mal eben 1000 Dateien in einem Ordner manuell um, wenn du z.B. einen Ordner mit Fotos hast, bei denen du überall das gleiche Präfix im Dateinamen haben willst.
    Wenn du Perl beherrscht ist das kein Problem. Natürlich geht das auch mit C/C++, aber mit C/C++ dauert es länger bis du das Programm geschrieben hast wie mit Perl.

    Ich würde sagen, du kannst alles was du mit Perl machen kannst auch in C/C++ umsetzen, jedoch ist es in C/C++ mit mehr Programmieraufwand verbunden. Du könntest auch die CGI-Schnittstelle von Webservern mit C/C++ bedienen. Ebenso kannst du auch mit Perl GUIs programmieren.

    Perl ist immer dann zu bevorzugen, wenn die Laufzeit des Programms keine besondere Rolle spielt.
    Bei dem Beispiel mit den Dateien umbenennen spielt es keine Rolle, ob das Perl-Skript eine Zehntel Sekunde länger arbeitet wie das vergleichbare C-Programm. So oft wirst du das nie brauchen, dass du die Zeit, die du mehr zum Programmieren des C-Programms gebraucht hast, wieder reinholst.

    Wie Perl sich jedoch im Vergleich zu anderen Skriptsprachen verhält kann ich dir nicht sagen.
    Außer Perl gibt es ja auch noch Ruby, Python und andere, mit denen ich mich jedoch noch nicht befasst habe.

    mfG,
    steckl

    1. Hallo,

      Aber benenn mal eben 1000 Dateien in einem Ordner manuell um, wenn du z.B. einen Ordner mit Fotos hast, bei denen du überall das gleiche Präfix im Dateinamen haben willst.

      dann nehme ich ein Shellskript. :-)

      Wenn du Perl beherrscht ist das kein Problem.

      Klar. Wenn man $programmiersprache beherrscht, ist sowas kein Problem.
      Wenn man die Forumssuche beherrscht, dann muss man noch nicht mal $programmiersprache beherrschen. ;-)

      Programmieren macht Spass - (fast) unabhängig von $programmiersprache!

      Freundliche Grüße

      Vinzenz

      1. hallo Vinzenz,

        Wenn man die Forumssuche beherrscht, dann muss man noch nicht mal $programmiersprache beherrschen. ;-)

        Das klingt zwar nach einem Bonmot, aber warum nur bringt dein Link auf die Forumssuche exakt null Ergebnisse zustande?

        Grüße aus Berlin

        Christoph S.

        --
        Visitenkarte
        ss:| zu:) ls:& fo:) va:) sh:| rl:|
  3. Hallo Marco,

    das ist keine komische Frage;-)
    Perl hat eine riesige Bibliothek an fertigen scripten (CPAN.org). Wenn man also ein Problem hat, wird man hier sicher eine Lösung finden. Im Gegensatz zu Java o.ä. muß man auch vorher nichts kompilieren.
    Ich verwende gerne scripte auf meinem Windows-System und da hatte Windows in der Vergangenheit einfach nichts zu bieten. Mittlerweile ist das unter Windows besser geworden aber es ist einfach zu unübersichtlich, sich durch die Hilfe der .net-Pakete zu hangeln. Perl ist hier sehr viel übersichtlicher.
    CGI brauchst du kaum noch, seit es PHP gibt, daher macht Perl für CGI nur noch Sinn, wenn es um spezielle Sachen geht. Wenn du also wenig mit scripten unter deinem Betriebssystem machst, brauchst du dich auch nicht in Perl einzuarbeiten.

    Ich persönlich finde Perl genial! Auf Perl werde ich so schnell nicht verzichten. Allerdings habe ich auch vielfältige Anwendungsfälle. Ich habe mir bspw. im Kontext-Menü des Explorers ein paar scripte verankert.

    Die Eingabeaufforderung mußt du nicht starten. Es gibt den Interpreter auch als wperl.exe Hierbei wird keine Eingabeaufforderung geöffnet, wenn das script ausgeführt wird (hilfreich für Kontext-Menue und Services).

    Ich hatte mal ein Projekt, welches betriebsystemunabhängig sein sollte, hier habe ich unter Windows entwickelt und das Programm unverändert unter UNIX ausgeführt. Lief einwandfrei! Java könnte das evtl. auch aber mit deutlich mehr Resourcennutzung!

    ciao Akela

    1. hallo,

      Perl hat eine riesige Bibliothek an fertigen scripten (CPAN.org).

      Auch wenn es sich dabei tatsächlich um "Scripts" im technischen Sinn handelt, ist die offizielle Bezeichnung doch "Module".

      Wenn man also ein Problem hat, wird man hier sicher eine Lösung finden.

      Nein, wird man nicht so schnell. Man wird erst mit dem Modul umgehen lernen müssen, allerdings sind CPAN-Module immer mit einer verläßlichen Dokumentation ausgestattet.

      Im Gegensatz zu Java o.ä. muß man auch vorher nichts kompilieren.

      Perl ist wie PHP (und weitere) eine interpretierende Sprache. Das heißt, um Perl benutzen zu können, muß ein Interpreter mitsamt allen eventuell benötigten Modulen installiert sein. Ganz und gar auf das Kompilieren verzichtet wird aber auch von solchen Sprachen nicht, nur sind die Kompilate flüchtig und nicht persistent.

      Ich verwende gerne scripte auf meinem Windows-System und da hatte Windows in der Vergangenheit einfach nichts zu bieten.

      Perl ist schon für Windows verfügbar gewesen, als es PHP noch gar nicht gab.

      CGI brauchst du kaum noch, seit es PHP gibt

      Auch PHP kann in einer "CGI-Variante" eingesetzt werden, was sogar bevorzugt unter Windows geschieht.

      daher macht Perl für CGI nur noch Sinn, wenn es um spezielle Sachen geht.

      Die CGI-Schnittstelle ist nur _eine_ von mehreren Möglichkeiten, sogenannte "serverseitige Techniken" einzusetzen - allerdings ist es vermutlich die älteste.

      Wenn du also wenig mit scripten unter deinem Betriebssystem machst, brauchst du dich auch nicht in Perl einzuarbeiten.

      Vermutlich ist dir selber nicht ganz klar, wie recht du mit dieser Aussage hast. Windows basiert eben nicht auf "Scripten", aber unix-basierte Systeme bestehen zu einem großen Teil aus solchen Scripts. Schau dich einfach mal auf einem beliebigen Linux-System im Verzeichnis /etc um. Du wirst etliche hundert Scripts finden - wenn auch in der Mehrzahl Shellscripts. Aber auch Perl, ruby, C/C++ und andere.
      Wenn du also ein unix-basiertes System benutzt, ist Perl im Einsatz, anders geht es gar nicht.

      Ich habe mir bspw. im Kontext-Menü des Explorers ein paar scripte verankert.

      Da bin ich doch neugierig, zu erfahren, was die tun sollen.

      Die Eingabeaufforderung mußt du nicht starten.

      Das ist ein Irrtum. Der Interpreter startet immer in der Konsole (Eingabeaufforderung) - man kann deren Anzeige allerdings unterdrücken.

      Es gibt den Interpreter auch als wperl.exe Hierbei wird keine Eingabeaufforderung geöffnet, wenn das script ausgeführt wird

      Doch, wird es. Aber dazu existieren schon sehr alte Aussagen im Forumsarchiv.

      Ich hatte mal ein Projekt, welches betriebsystemunabhängig sein sollte, hier habe ich unter Windows entwickelt und das Programm unverändert unter UNIX ausgeführt. Lief einwandfrei!

      Das klingt unglaubhaft, da zumindest die shebang unter Windows einen anderen Pfad aufweisen sollte - und wenn dein Perl-Programm nicht über den lokalen Webserver läuft, so braucht es vermutlich doch Zugriff auf irgendwelche Systembestandteile, und die sind unter Windows nunmal nur mit der Angabe von "Laufwerksbuchstaben" erreichbar.

      Java könnte das evtl. auch aber mit deutlich mehr Resourcennutzung!

      JAVA kann einiges "anders" als Perl. Mit JAVA hast du es relativ einfach, ein Progrämmchen zu schreiben, das eine eigene GUI spendiert bekommen soll, was mit Perl nur bedingt möglich ist. Die beiden Sprachen sind eigentlich nicht vergleichbar, und ihre Einsatzgebiete sehr unterschiedlich.

      Grüße aus Berlin

      Christoph S.

      --
      Visitenkarte
      ss:| zu:) ls:& fo:) va:) sh:| rl:|
      1. Hi,

        Das klingt unglaubhaft, da zumindest die shebang unter Windows einen anderen Pfad aufweisen sollte - und wenn dein Perl-Programm nicht über den lokalen Webserver läuft, so braucht es vermutlich doch Zugriff auf irgendwelche Systembestandteile, und die sind unter Windows nunmal nur mit der Angabe von "Laufwerksbuchstaben" erreichbar.

        Ich weiß nicht wie man es unter Windows macht, aber unter Linux kann man auch einfach in der Kommandozeile "perl" vor den Namen des Scripts schreiben, dann wird es auch vom Perl-Interpreter ausgeführt (falls ein solceher eingerichtet ist), wenn in der Shebang-Zeile ein falscher Pfad angegeben ist.

        mfG,
        steckl

        1. hallo,

          Ich weiß nicht wie man es unter Windows macht, aber unter Linux kann man auch einfach in der Kommandozeile "perl" vor den Namen des Scripts schreiben, dann wird es auch vom Perl-Interpreter ausgeführt (falls ein solceher eingerichtet ist), wenn in der Shebang-Zeile ein falscher Pfad angegeben ist.

          Das geht unter Windows im Prinzip genauso - wenn ein Script über die Konsole und nicht über den lokalen Webserver ausgeführt werden soll, ist die shebang unerheblich. Die shebang ist dazu da, daß der Webserver den Pfad erfährt, über den er den Interpreter erreichen kann. Wenn der Interpreter aber bereits auf der Konsole aufgerufen wurde, ist er aktiv, unabhängig davon, ob eine shebang im Script steht oder wie sie aussieht. Das heißt: bei Scripts, die du eh nur von der Konsole aus aufrufen willst, kannst du die shebang auch weglassen. Probiers aus.

          Grüße aus Berlin

          Christoph S.

          --
          Visitenkarte
          ss:| zu:) ls:& fo:) va:) sh:| rl:|
      2. Hallo Christof

        Ich hatte mal ein Projekt, welches betriebsystemunabhängig sein sollte, hier habe ich unter Windows entwickelt und das Programm unverändert unter UNIX ausgeführt. Lief einwandfrei!

        Das klingt unglaubhaft, da zumindest die shebang unter Windows einen anderen Pfad aufweisen sollte - und wenn dein Perl-Programm nicht über den lokalen Webserver läuft, so braucht es vermutlich doch Zugriff auf irgendwelche Systembestandteile, und die sind unter Windows nunmal nur mit der Angabe von "Laufwerksbuchstaben" erreichbar.

        das ist sogar absolut glaubhaft, das ist alles kein Problem sondern eine eigentlich recht unkomplizierte  Frage der Konfiguration. Shebang ist auf den Perl on Windows Installationen die ich kenne eh kein Thema.

        Grüße
         Kurt

      3. allerdings sind CPAN-Module immer mit einer verläßlichen Dokumentation ausgestattet.

        <stossseufzer>Sie sollten, sie sollten...</stossseufzer>

        Die CGI-Schnittstelle ist nur _eine_ von mehreren Möglichkeiten, sogenannte "serverseitige Techniken" einzusetzen

        Hm, verstehe ich jetzt nicht. CGI ist doch gar keine serverseitige Technik, sondern einfach nur eine standardisierte Schnittstelle.

        Ich habe mir bspw. im Kontext-Menü des Explorers ein paar scripte verankert.
        Da bin ich doch neugierig, zu erfahren, was die tun sollen.

        Rolf aka "hotte" hatte mal ein sehr schönes kleines Perl-Script, wo man Dateien direkt aus dem Explorer heraus via FTP auf den Server hochladen konnte (Senden an - FTP), guck mal im Archiv, ich mag's jetzt nicht heraussuchen.

        Ich hatte mal ein Projekt, welches betriebsystemunabhängig sein sollte, hier habe ich unter Windows entwickelt und das Programm unverändert unter UNIX ausgeführt. Lief einwandfrei!

        Das klingt unglaubhaft, da zumindest die shebang unter Windows einen anderen Pfad aufweisen sollte - und wenn dein Perl-Programm nicht über den lokalen Webserver läuft, so braucht es vermutlich doch Zugriff auf irgendwelche Systembestandteile, und die sind unter Windows nunmal nur mit der Angabe von "Laufwerksbuchstaben" erreichbar.

        Es ist die ewige alte Leier, warum hackst du nur ständig darauf herum? Die shebang in Windows muss nicht anders sein, wenn alles korrekt installiert ist. Weder auf der Konsole (Perl-Installation) noch im Webkontext (Apache) spielen shebang oder irgendwelche Systempfade eine Rolle. Wer natürlich die Windows-eigenen Vorzüge (Registry, Systempfade) nicht nutzt, ist m.E. selber schuld.

        Siechfred

        --
        Hinter den Kulissen passiert viel mehr, als man denkt, aber meistens nicht das, was man denkt.
        1. hi,

          Rolf aka "hotte" hatte mal ein sehr schönes kleines Perl-Script, wo man Dateien direkt aus dem Explorer heraus via FTP auf den Server hochladen konnte (Senden an - FTP), guck mal im Archiv, ich mag's jetzt nicht heraussuchen.

          Aber ich  ;-)

          http://rolfrost.de/ftp.html

          Hotte

  4. hi,

    Meine frage nun an euch verstehe ich etwas falsch was perl programmierung betrifft? Kann man in perl doch sehr sinnvolle programme machen die nuetzlich sind in der eingabeaufforderung?

    Außer CGI-Scripts in Perl zu schreiben gibts eine ganze Menge anderer Sachen, die ich mit Perl automatisiert habe:

    • Backup zur externen Platte (Datensicherung)
    • Mails vom POP3 abholen
    • HTML-Dateien erstellen (einheitliches Design, konsistente Navigation)
    • FTP zum Provider
    • Uhrzeit am PC stellen

    Hotte