Aloha ;)
Deine config.php kann auch ein array zurückgeben, schön kompakt und an beliebiger Stelle abrufbar, ebenda, wo es grad gebraucht wird (
$cfg = require 'config.php';
).Schon - aber in wiefern soll das besser sein, das Array immer wieder per require einzubinden, als die Werte einmal ins GLOBALS-Array zu werfen und dann zu verwenden? Das ist doch eigentlich - wie heißt es so schön im Schwäbischen - g'hupft wie g'sprunga.
Kommt drauf an, wo Du reinspringst, wenn Deine Wahl auf ein Haifischbecken fällt, ist es egal, ob Du beim Springen eine gute Figur abgegeben hast, gefressen wirst Du so oder so ;)
Ich stimme dir zu, dass der Einsatz globaler Variablen im Einzelfall gut abgewägt werden sollte, es gibt aber nunmal Werte, die sinnvollerweise in GLOBALS gespeichert werden können. Es sollte nur nicht überhand nehmen.
Es kommt auf den Umgang mit globalen Variablen an, ein schönes Beispiel ist $@ (globale Perl Variable) darin steht der Grund für eine Exception, die möglicherweise in einer bestimmten Methode fallen kann, also:
Anstatt $@ zu befragen, ob eine Exception gefallen ist, wird unmittelbar beim Funktionsaufruf anhand des return geprüft, ob die Funktion durchgelaufen ist, erst danach wird $@ herangezogen zur Begründung.
Globale Variablen sind keine Schande. Es ist nur immer gut zu wissen, dass sie eben global veränderbar sind und dass da auch mal was anderes als erwartet drinstehen kann.
$addr =~ /name: (\w+)/;
$name = $1; # Vorsicht!!!!
Besser:
$name = do{
$addr =~ /name: (\w+)/ or die "No match";
$1;
} || print "Die Adressangabe gibt den Namen nicht her, Begründung: $@" ;
Verstanden hätte ich es eher, wie delfix es imho schonmal getan hat, zu raten, auf GLOBALS innerhalb von Funktionen zugunsten von Parametern zu verzichten (und auch das ist imho nicht immer die effektivste, wenn auch vieleicht sauberste Lösung).
Full ack.