J'essaie de rendre plus facile de suivre certains Perl Best Practices en créant un module Constants
qui exporte plusieurs des scalaires utilisés dans le livre. Un en particulier, $EMPTY_STRING
, je peux utiliser dans à peu près tous les scripts Perl que j'écris. Ce que j'aimerais, c'est exporter automatiquement ces scalaires pour pouvoir les utiliser sans les définir explicitement dans chaque script.Comment exporter des variables Readonly avec mod_perl?
#!perl
package Example::Constants;
use Exporter qw(import);
use Readonly;
Readonly my $EMPTY_STRING => q{};
our @EXPORT = qw($EMPTY_STRING);
Un exemple d'utilisation:
#!perl
use Example::Constants;
print $EMPTY_STRING . 'foo' . $EMPTY_STRING;
En utilisant le code ci-dessus produit une erreur:
Global symbol "$EMPTY_STRING" requires explicit package name
Si je change la déclaration Readonly
à:
Readonly our $EMPTY_STRING => q{}; # 'our' instead of 'my'
L'erreur devient:
Attempt to reassign a readonly scalar
Est-ce que ce n'est tout simplement pas possible avec mod_perl?
que je fais déjà 1, 3 et 4, je les ai juste laissés hors de l'exemple pour la brièveté. Aussi, utilisez Exportateur qw (import) est la méthode préférée, ne pas utiliser base qw (Exporter). L'ajout du module à PerlRequire génère toujours l'erreur, une pour chaque processus http démarré. – cowgod
Qu'en est-il de PerlModule? –
Aussi, avez-vous supprimé "use Example :: Constants;" de votre script? –