Variables locales statiques en Perl

Je suis à la recherche pour obtenir des conseils sur Perl best practices. J'ai écrit un script qui a compliqué expression régulière:

my $regex = qr/complicated/;

# ...

sub foo {
  # ...

  if (/$regex/)
  # ...
}

foo est une fonction qui est appelée souvent, et $regex n'est pas utilisé en dehors de cette fonction. Quelle est la meilleure façon de gérer ce genre de situation? Je veux seulement pouvoir être interprété en une fois, car c'est long et compliqué. Mais il semble un peu douteuse de l'avoir dans une portée mondiale, puisqu'il n'est utilisé que dans ce sous. Est-il un moyen raisonnable de déclarer statique?

Un problème similaire se pose avec une autre peut-être-injustifiée mondiale. On y lit la date et l'heure actuelles et les formats de manière appropriée. C'est aussi utilisé de nombreuses fois, et encore, seulement dans une fonction. Mais dans ce cas il est encore plus important qu'il ne soit pas ré-initialisé, puisque je veux que toutes les instances de la date-heure d'être la même à partir d'une invocation du script, même si le procès-verbal rouler pendant l'exécution.

Pour le moment j'ai quelque chose comme

my ($regex, $DT);

sub driver {
  $regex = qr/complicated/;
  $DT = dateTime();
  # ...
}

# ...

driver();

dont au moins légèrement sépare. Mais peut-être il ya de meilleures façons.

De nouveau: je suis à la recherche de la bonne façon de le faire, en termes de meilleures pratiques suivantes Perl et les expressions idiomatiques. La Performance est belle, mais la lisibilité et d'autres besoins prioritaires si je ne peux pas tout avoir.

source d'informationauteur Charles