Ich finde es sehr bequem, Konfiguration und andere Daten zu übergeben, die einmal gelesen oder berechnet werden, dann aber viele Male in einem Programm verwendet werden, indem man Perls use
Mechanismus verwendet. Ich tue dies, indem ich einen Hash in den Namespace des Aufrufers exportiere. Zum Beispiel:Ist es eine gute Praxis, Variablen in Perl zu exportieren?
package Myconfiguration;
my %config;
sub import {
my $callpkg = caller(0);
my $expsym = $_[1];
configure() unless %config;
*{"$callpkg\::$expsym"} = \%config;
}
und dann in anderen Modulen:
use MyConfiguration (loc_config_sym);
if ($loc_config_sym{paramater}) {
# ... do stuff ...
}
Allerdings bin ich über diese als Best Practice nicht sicher. Ist es besser, eine Methode hinzuzufügen, die einen Hash-Ref mit den Daten zurückgibt? Etwas anderes?
Das ist, was der Affe in meinem Kopf versuchte, mir zu sagen, aber ich konnte nicht rauskommen (obwohl ich 'Exporteur qw (importieren) bevorzugen;' :)). Ich habe das nicht wirklich als globale Variable gesehen, wenn ich genau das hier mache. Der einzige Nachteil hier ist der Overhead des Methodenaufrufs, aber das ist wahrscheinlich nicht wichtig, insbesondere in Bezug auf Wartung und Debugging. Plus, es ist einfach genug Alias das Sub, wenn es bequem ist, einen lokal relevanten Namen (das ist nicht nur über die Konfiguration). – gvkv
Ich stimme zu, dass Setter und Getter der richtige Weg sind. Sie geben Ihnen viel mehr Kontrolle. Zum Beispiel können Sie die Wertemenge überprüfen und die Berechnung für den Wert get ausführen. – Bill