Perlのベストプラクティスに関するアドバイスを探しています。複雑な正規表現を持つスクリプトを作成しました。
my $regex = qr/complicated/;
# ...
sub foo {
# ...
if (/$regex/)
# ...
}
ここfoo
で、は頻繁に呼び出される関数であり、$regex
その関数の外部では使用されません。このような状況を処理するための最良の方法は何ですか?長くて複雑なので、一度だけ解釈してほしい。ただし、そのサブでのみ使用されるため、グローバルスコープで使用するのは少し疑わしいようです。それを静的と宣言する合理的な方法はありますか?
同様の問題は、正当化されていない可能性のある別のグローバルでも発生します。現在の日時を読み取り、適切にフォーマットします。これも何度も使用され、1つの機能でのみ使用されます。ただし、この場合、実行中に分がロールオーバーした場合でも、スクリプトの特定の呼び出しから日時のすべてのインスタンスを同じにしたいので、再初期化しないことがさらに重要です。
現時点で私は次のようなものを持っています
my ($regex, $DT);
sub driver {
$regex = qr/complicated/;
$DT = dateTime();
# ...
}
# ...
driver();
これは少なくともわずかにそれを分離します。しかし、おそらくもっと良い方法があります。
繰り返しますが、ベストプラクティスとPerlイディオムに従うという観点から、これを行う正しい方法を探しています。パフォーマンスは素晴らしいですが、すべてを手に入れることができない場合は、読みやすさやその他のニーズが優先されます。