Hallo,
Ist dein Programm eher weniger allgemein, spricht wenig dagegen, einige Variablen global zu handhaben - um mehr Übersichtlichkeit zu wahren. Das trifft insbesondere zu auf kurze Programme.
Allerdings fangen die meisten größeren Programme auch einmal klein an, und DU weisst nie wirklich (ausser vielleicht bei 'Hello world'-Versuchen), wie groß ein kleines Programm einmal werden kann.
Dumm dabei ist nur, dass die Größe dieser (kleinen) Programme meist unmerklich im Laufe der Zeit zunimmt. Wenn man also Deinem Vorschlag folgt, stellt sich für mich die Frage, wann der Zeitpunkt erreicht ist, dass aus einem kleinen Progamm, in dem sowieso alles wurscht ist, so groß geworden ist, dass man wirklich sauber arbeiten muss.
Eine "Schnittstelle" für eine eigene Funktion zu beschreiben, die man sicher nur einmal braucht, ist rausgeworfene Zeit.
Auch hier drängt sich die Frage auf, ob man bei der ersten Verwendung einer Funktion schon entscheiden kann, dass man sie sicherlich nie wieder benötigen muss.
Zu deinem Beispiel mit $cgi - in einem solchen Fall würde ich das CGI-Objekt global verwalten,
Da stimme ich Dir zu, allerdings eigentlich nur deshalb, weil das CGI-Modul afaik nicht so aufgebaut ist, dass man mehrere Instanzen anlegen kann. Bei der Erzeugung der ersten Instanz sind die übergebenen Parameter( zumindest wenn HTTP-POST verwendet wurde) weg. Weitere Instanzen haben das nachsehen. (Wie gesagt: AFAIK. Wenn dem nicht so ist, bitte ich im Korrektur).
allerdings diese nur in deinem Hauptquelltext abfragen, nicht in den Subroutinen.
Naja, Objekt-Referenzen haben ja den Vorteil, als Parameter mit übergeben werden zu können;-)
Grüße
Klaus