JAPH: verschiedene Fragen zu Funktionen

Beitrag lesen

Wann eine Variable mit my deklarieren?
Die zwei unteren Varianten unterscheiden sich,
in Var 1 wird mit einer einzigen Variable gearbeitet
in Var 2 erhalte jedesmal ein frisches neues Array
was ist bessern

Die zweite, weil die Variable am Ende des for{}-Blocks out of scope geht und damit nicht mehr den übergeordneten Namespace verunreinigt.

bezüglich Speicherverbrauch,

Der ist in beiden Varianten gleich schlecht.

Stil-Tipp: Nutze den Aufzählungsoperator.
for (1..100) {
 my $i = $_;
 # tue Zeug mit $i
 # $_ lässt sich auch direkt verwenden
};

Wie verhalten sich map() und foreach() in Bezug auf performance?

MJD kommentiert: "Who the fuck cares which one is faster?"
Du kannst für deinen speziellen Fall Benchmarks durchführen und die Ergebnisse vergleichen. Ich persönliche nehme foreach nur im void-Kontext, d.h. die Enumeration liefert nichts zurück; Performance spielt für mich keine Rolle in Perl.

Kann ich RegExp in der map Funktion genau gleich anwenden wie mit dem üblichen =~ Operator?

Ja!

Gibt es eine Seite, die die map() Funktion ausführlich beschreibt

http://perldoc.com/perl5.8.4/pod/func/map.html
Camel book, §3.2.91., §8.4.
Nutshell, §5.93.
Cookbook, §4.15.

Irgendwie liesst man doch viel von Missbrauch durch Bufferoverflows.
Ist es ratsam, dass ich allen Usereingabe Variablen auf maximale Länge kontrolliere?

Perl hat eine eigene Speicherverwaltung für seine Innereien, Bufferoverflows können nicht so wie bei C passieren.

if (length($userinput) > 1000){&error("Kein normaler User Input");}

Das ist aber trotzdem aus Sicherheitsgründen zu empfehlen. Führe immer einen Sanity Check auf Nutzereingaben durch. Wenn du Webprogramme schreibst, ist der Taint Mode unverzichtbar. Details: http://perldoc.com/perl5.8.4/pod/perlsec.html

Stil-Tipp: Verzichte auf & für Funktionen. Nutze den if-Operator bei simplen Entscheidungen.
error("Kein normaler User Input") if length $userinput > 1000;