# Anfänger.. was kann perl? - was ist perl?



## cameeel (4. Februar 2005)

Hi all,
hab noch nie mit Perl gearbeitet nur mit PHP, MySQL usw.
Jetzt reicht mir das natürlich nicht und ich will noch was anderes lernen.
Könnt ihr mir ein paar Tips zu Perl geben und meine Fragen beantworten? thx!

1. Wo ist der Unterschied zwischen Perl und CGI ?
2. Was kann man mit Perl / CGI alles machen (paar Beispiele)
3. Sollte ich bevor ich Perl / CGI lern vllt erst was anderes lernen? (php, mysql kann ich schon - mehr oder weniger)
4. Wo kann ich Perl / CGI lernen (reichen die Tutorials auf tutorials.de aus?)
5. Welche Vorteile bietet Perl / CGI gegenüber php / mysql?
6. Unterscheidet sich Perl / CGI stark von php?

Wär nett wenn ihr mir helfen könntet 

MfG
cAm3eel


----------



## renee (9. Februar 2005)

Hallo und Willkommen in der Perl-Welt.

Dass Du Dich für Perl entschieden hast, ist eine gute Wahl - denn Perl kann (fast) alles...

Der Unterschied zwischen Perl und CGI ist ganz einfach:
CGI ist eine Schnittstelle, über die HTML-Seiten mit Webanwendungen (CGI-Skripte) kommunizieren können. Diese CGI-Skripte können in unterschiedlichen Sprachen realisiert werden. Mittlerweile ist die meistgenutzte Sprache dafür Perl.
Perl ist eine Programmiersprache (eine Skriptsprache). Mit Perl kann man alle möglichen (und unmöglichen) Sachen realisieren. Die meisten Leute kommen mit Perl über die oben genannten Webanwendungen in Berührung. Mit Perl kann man Graphische Benutzeroberflächen programmieren, Webanwendungen oder einfache Konsolenprogramme.
Da Du MySQL ansprichst: Mit Perl kann man auch ganz einfach Datenbanken ansprechen. Der Vorteil von Perl gegenüber PHP ist, dass man einfacher Programm von Design trennen kann.
Mit Perl/CGI kann man die gleichen Dinge umsetzen wie mit PHP.

Du solltest einen groben Überblick über Perl haben, bevor Du "große" Webanwendungen schreibst.

Vielleicht helfen Dir ein paar Einführungen:
http://fabiani.net -- Vorträge -- Perl für Anfänger   
http://www.renee-baecker.de/perl.html  ## hier findest Du einige Einführungen in Webanwendungen und ein paar allgemeine Infos... (über ein Feedback zu diesen Dateien würde ich mich freuen)
http://wiki.perl-community.de (Hier gibt's viele Erklärungen und Einführungen, ist zur Zeit leider down)...


----------



## SilentWarrior (9. Februar 2005)

Kleine Frage: Warum willst du Perl/CGI lernen, wenn du PHP kannst? Kein Mensch (ausser Stefan Münz) benutzt heutzutage noch Perl im Web, weil PHP viel effizienter ist aus dem Grund, dass PHP eigens fürs Web entwickelt wurde, wohingegen Perl eigentlich eine Scriptsprache für Linux ist. Also wenn du was anderes lernen willst, mach dich doch an eine andere Programmierpsrache, anstatt deine Energie dermassen unnötig verpuffen zu lassen.

renee: Würde mich aber schon noch interessieren, wie du mit PHP etwas designen kannst. Ich mach das ja immer mit HTML...


----------



## JohannesR (9. Februar 2005)

*ICH* entwickel immer noch sehr gerne in Perl. Warum? Perl ist einfach mehr als PHP. Wie renee schon sagte, Perl kann (fast) alles, dagegen ist PHP ein kleines Licht. Sendmail oder IMAP-Verbindungen sind unter Perl ein einfaches, unter PHP bricht man sich beim Versuch selbigens total einen ab. Filesystem-Operationen sind sicher und stabil. Unmengen an Libs erleichtern den Alltag ungemein (man zeige mir eine PHP-Klasse, die es mit der XML-Lib, der CGI-Lib oder was auch immer von Perl aufnimmt).

SilentWarrior: Also in Perl kannst du was designen:


```
print table({ -border => 0 },
    caption("Tabelle"),
    Tr(
    [
        td(['blubb', 'blah']),
        td(['blubb', 'blah']),
        td(['blubb', 'blah'])
    ]
    )
);
```

Reines Perl - ohne eine einzige Zeile HTML auch nur mit dem Hintern angeguckt zu haben.

Fazit: Wer sagt, dass es Zeitverschwendung waere, Perl zu lernen, luegt oder weiss es nicht besser.

Btw, effizienter: Kannst du das belegen? Hast du Benchmarks? Wenn nicht, bitte, erzaehl nicht so einen unsinn. Meine Perl-Script sind irgendwie immer schneller als meine PHP-Scripte, obwohl ich beides (relativ) gut beherrsche.


----------



## SilentWarrior (9. Februar 2005)

Hey ich meinte nicht effizient von der Laufzeit her - kam vielleicht falsch rüber. Ich meine einfach, dass PHP viel einfacher zu lernen ist, weil es wie gesagt fürs Web abgestimmt ist.

Ausserdem: Wenn cam3eel schreibt "(php, mysql kann ich schon - mehr oder weniger)", dann glaube ich kaum, dass als nächstes die von dir genannten Themen auf dem Programm stehen. Mag ja sein, dass Perl umfangreicher ist, aber für den alltäglichen Gebrauch reicht PHP allemal aus. Von dem her sehe ich immer noch keinen Grund, warum man - wenn man nicht gerade was ausgefallenes vorhat, wofür Perl besser geeignet ist - es noch lernen sollte.


----------



## renee (9. Februar 2005)

In PHP kann man einfacher und schneller Sicherheitslöcher reinprogrammieren...

Perl bietet einige Sachen (z.B. den "Taintmodus"), die gewisse Sicherheitslöcher schon von vornerein stopfen.

Perl wird noch von vielen Programmierern auch für das Web benutzt. PHP scheint eine "Übermacht" zu sein, aber nur weil extrem viele "Script-Kiddies" schnell eine Anwendung zusammenschustern.


----------



## KoMtuR (9. Februar 2005)

Johannes dann sag mir bitte mal wie ich ne schnelle ausgabe an den Browser hinbekomme -.- Perl ist zwar wirklich schnell, aber irgendwie dauert print bei mir zulange und da bin ich mit php schneller im ausgeben. Also ich hab schon probiert mit syswrite direkt ins STDOUT zu schreiben und normal mit print. Alles ist langsam im Vergleich zu php. Also es geht nur um die Ausgabe und nicht um das ganze berechnen.


----------



## JohannesR (9. Februar 2005)

SilentWarrior hat gesagt.:
			
		

> Hey ich meinte nicht effizient von der Laufzeit her - kam vielleicht falsch rüber. Ich meine einfach, dass PHP viel einfacher zu lernen ist, weil es wie gesagt fürs Web abgestimmt ist.


Die Dokumentation zu Perl ist um laengen besser, die Syntax ist an C/C++ angelehnt und relativ intuitiv zu lernen, das sind Punkte, die Perl sehr attraktiv machen. Und ich behaupte, absolut dreist, dass unter anderem aufgrund der genialen Dokumentation, Perl und PHP relativ aehnlich schnell zu lernen sind.
Grade wenn cam3... relativ wenig PHP kann ist der Umstieg auf das zweifellos umfangreichere Perl relativ einfach und unproblematisch. Zugegeben, PHP verzeiht viele fehler, das macht den einmaligen Einstieg unter umstaenden etwas einfacher, dafuer laufen Perl-Scripte (zumindest mit warnings & strict) stabiler und sicherer - Bei gleicher Programmierweise.


----------



## JohannesR (9. Februar 2005)

KoMtuR hat gesagt.:
			
		

> Johannes dann sag mir bitte mal wie ich ne schnelle ausgabe an den Browser hinbekomme -.- Perl ist zwar wirklich schnell, aber irgendwie dauert print bei mir zulange und da bin ich mit php schneller im ausgeben. Also ich hab schon probiert mit syswrite direkt ins STDOUT zu schreiben und normal mit print. Alles ist langsam im Vergleich zu php. Also es geht nur um die Ausgabe und nicht um das ganze berechnen.




```
#/usr/bin/perl -w

use strict;
use warnings;
use CGI qw/:standard/;

my $cgi = new CGI;

print $cgi->header(-type => 'text/html; charset: utf-8');
print $cgi->start_html(
    -encoding   => 'utf-8',
    -title      => 'Blubb'
);

print strong("Hallo, KoMtuR!");

print $cgi->end_html;
```

XHTML 1.0 Trans-Kompatibel, UTF-8. Ohne weiteres.


----------



## cameeel (9. Februar 2005)

Danke euch allen erst mal...
 denk ich werd trotz der ein oder anderen Kritik anfangen Perl zu lernen. Das ich geschreiben hab "ich kann PHP / MySQL - mehr oder weniger" hab ich geschrieben weil ich selbst nicht beurteilen kann wie gut ICH darin bin.
   Hab es auf jeden Fall schon geschafft ein Gästebuch, Linkliste und so Zeug zu programmieren.




> Kleine Frage: Warum willst du Perl/CGI lernen, wenn du PHP kannst?


   => Ich wollte einen Taschenrechner programmieren (mit PHP) - und das ist echt etwas hoffnungsloses
   Weis ja nicht ob das in Perl überhaupt geht aber schlimmer als mit PHP kanns net sein 

   Mfg
   cAm3eel


----------



## cameeel (9. Februar 2005)

Ich bins nochmal .. 

  Wollt Perl natürlich gleich mal ausprobieren aber es klappt einfach nicht mit dem _aufrufen_ der Datei im Browser...

  Folgendes steht in der Datei drin:

```
#!/usr/bin/perl
  
  # Ein erstes kleines Skript
  # zur Verdeutlichung einiger Eigenheiten von Perl.
  
  $zahl1 = 500;
  $zahl2 = 10;
  $ergebnis = $zahl1 + $zahl2;
  $name = "Larry";
  
  print "Hallo $name, die Summe von $zahl1 und $zahl2\n";
  print "ist $ergebnis.\n";
```
 
  Hab die Datei auf meinen Server geladen:
http://philipp-langer.net/cgi-bin/script1.pl
  oder
http://philipp-langer.net/cgi-bin/script1.cgi

  Macht es einen Unterschied ob .pl oder .cgi ? Es funktioniert auf jeden Fall beides nicht ..?!

  Was mach ich falsch?

  thx schonmal...


----------



## JohannesR (9. Februar 2005)

Hat es das Executable-Bit? Die Fehlermeldung ist etwas verwirrend, das ein 404 deklariert wird, aber die Seite 500.html heisst.  Setz mal den chmod fuer die Datei auf 755. Ob .cgi oder .pl kommt auf deine Webserverconfig an, aber normalerweise geht beides.


----------



## cameeel (9. Februar 2005)

Johannes Röttger hat gesagt.:
			
		

> Hat es das Executable-Bit? Die Fehlermeldung ist etwas verwirrend, das ein 404 deklariert wird, aber die Seite 500.html heisst.  Setz mal den chmod fuer die Datei auf 755. Ob .cgi oder .pl kommt auf deine Webserverconfig an, aber normalerweise geht beides.


 
Was ist Executable-Bit   
Wegen der Fehlermeldung ^^ ..das ist weil ich die Fehlerseite ja selbst machen kann und noch keine Zeit hatte für die jeweilige Fehlermeldung die richtige Page zu machen.. kommt aber noch gg
Das mit dem chmod mach ich morgen, bin grad nicht mehr an meinem PC wo die ganzen Sachen drauf sind!

Aber danke nochmal!


----------

