Michael Schröpl: Sichtbarkeit von Funktionen

Beitrag lesen

Hallo Calocybe,

was bin ich froh, daß ich viiiel zu feige bin, solche Probleme überhaupt bekommen zu können ...

Diese Dateien binde ich mittels require ein. Ich verwende nicht use, da ich vor dem Includen noch ein paar globale Variablen stehen habe, die in den Include-Dateien schon bekannt sein sollen. Ich rede von Include-Dateien und nicht von Modulen, da ich keine package-Statements verwende und somit alle Funktionen auf dem top level angesiedelt sind.

Ist für mich alles keineswegs schlüssig. Ich verwende generell nur packages, schon alleine weil ich den Überblick behalten will, wer in meinem name space herumsaut.

Ich kann doch in packages "globale" Variablen definieren und diese von außerhalb mit packagename::variable ansprechen? Ich mache das dauernd - etwa bei einem Modul, der eine Datei parst und das Ergebnis als globalen Hash verfügbar macht. Reicht Dir das nicht?

  1. Funktionen, die ich in den Include-Dateien definiert habe, scheint der Interpreter nur halb zu kennen. Er findet sie nur, wenn ich sie mit Klammern aufrufe.

Auch da bin ich - als Anwender von vielen verschiedenen Sprachen - viel zu ängstlich.
Erstens verwende ich generell nur Funktionsaufrufe mit Klammern, weil die eben wie Funktionsaufrufe in allen anderen mir geläufigen Sprachen aussehen.
Zweitens verwende ich nur Aufrufe ohne den "&"-Operator davor, weil dieses das Prptotyping abschalten würde. Drittens natürlich immer "use strict". Perl ist ein übler Hacker-Slang, aber wenn man alles einschaltet, was die Sprache bietet, dann kann man richtig schöne Sachen damit schreiben (mein Projekt-Quelltext hat knapp 20000 lines of Perl code).

Nun ja, freue mich auf Erleuchtung...

Ich kann es verschmerzen, eine Sprache nicht bis ins Letzte auszureizen - mir ist wichtiger, daß meine Programme funktionieren ... ;-)