Perl Frage

LeoLinux

Well-Known Member
Hi,

oft stelle ich fest, dass es von einem Programm eine "normale" Version als auch eine "Perl" Version gibt. Ich verstehe nicht was der Unterschied sein soll?! ... Außer, dass das eine vermutlich in C(++) und das Andere in Perl. Warum macht man so etwas? Für was sollte ich mich generell entscheiden?



Beispiel: SpamAssassin

Code:
cat /usr/ports/mail/p5-Mail-SpamAssassin/pkg-descr 
SpamAssassin is a mail filter which attempts to identify spam using text
analysis and several internet-based realtime blacklists.

Using its rule base, it uses a wide range of heuristic tests on mail
headers and body text to identify "spam", also known as unsolicited
commercial email.

Once identified, the mail can then be optionally tagged as spam for later
filtering using the user's own mail user-agent application.

Additional drop-in rule sets are available at
http://wiki.apache.org/spamassassin/CustomRulesets

WWW:	http://spamassassin.apache.org/

Code:
cat /usr/ports/mail/spamass-milter/pkg-descr 
spamass-milter is a plugin for the Sendmail Milter (Mail Filter) library
that pipes all incoming mail (including things received by rmail/UUCP)
through the SpamAssassin, a highly customizable spam filter.

WWW: http://savannah.nongnu.org/projects/spamass-milt/
You have new mail in /var/mail/root


Grüße

Leander
 
Schau mal in die Abhängigkeite von spamass-milter.
Es braucht zur Laufzeit p5-Mail-SpamAssassin.
Es ist also nur ein Plugin, dass auf das in Perl geschrieben Spamassassin zugreift.
 
Schau mal in die Abhängigkeite von spamass-milter.
^^ Das ist gut, dass du das erwähnst-denn daraus ergibt sich schon eine weitere Frage: Wie sehe ich die Abhängigkeiten ein ohne, dass ich den original Sourcecode herunterladen muss und in der entsprechenden README oder INSTALL nachlesen muss um die Abhängikeiten zu erfahren ?!


Grüße
 
... ok ... aber wie lese ich das "riesen" Textfile am besten aus? bzw. wie werte ich es aus?

Gruß
 
Das geht natuerlich auch. Fuer alle Abhaengigkeiten benutzt man einfach
$ make all-depends-list
Nichts anderes benutzen die wohl auch, um diese Listen zu generieren.

Alterntiv hilft auch ein Blick ins Makefile. Da steht es auch drin.
 
Code:
cd /usr/ports && make search name=$teil_des_portnamens
zeigt dir ebenfalls die Abhängigkeiten an. Wird "search" durch "quicksearch" ersetzt, eignet es sich gut zum Suchen von Ports.
 
Nochmal ergänzend. Es gibt durchaus Programme, die es als Scriptversion und als binäre Version gibt.
Eine Scriptversion hat immer einen Zeitnachteil bei der Ausführung, weil das Script halt zur Laufzeit interpretiert wird. Dazu kommt noch der Aufruf des Interpreters.

Eine kompilierte Binärversion hat also augenscheinlich erstmal einen Performancevorteil, weshalb auch manche Programme, die es vorher als Script gab später in einer Hochsprache neu geschrieben werden.

Den grössten Teil der Performance macht allerdings der implementierte Algo aus. Hier sind wirkliche Laufzeitverbesserungen drin. Und genau da kommts auf Perl zurück. Perl hat hervorragende und viele Algos zur Zeichenkettenbearbeitung. Es ist darauf spezialisiert. Diese Algos liegen oft nicht als Bibliotheken vor, so, dass jemand, der ein Programm in eine Hochsprache portieren will, diese Algos selbst händisch implementieren muss. Den Vorsprung, den Perl in diesem Fall hat - den holt man so einfach nicht ein. Dazu gehört wirkliches Können und eine Unemnge Handarbeit. Der Interpreteraufruf, sowie der Performanceverlust durch die Interpretation zur Laufzeit sind bei vielen Programmen somit zu vernachlässigen.
Es gibt nicht die beste und schnellste Sprache. Es gibt die optimale Sprache für eine Aufgabe.
 
Zurück
Oben