[英]Perl next if regex stored in array
我有一段帶有 while 循環的代碼和幾個 next if 在循環中是這樣的:
LOOP:
while (something) {
next if $UPUPRF =~ /^T[0-9]{6}/;
next if $UPUPRF =~ /^SECURITE.*/;
next if $UPUPRF =~ /^AUDIT[A-Z]{2}/;
}
我想將這些正則表達式放在我的配置文件(perl 數據結構)中,而不是將它們“硬編碼”在腳本中,以便用戶只需編輯配置文件即可輕松編輯它們,並希望您對此提出建議.
這樣做最干凈的方法是什么?
首先,我想我可以在配置文件中存儲這樣的正則表達式嗎? (使用qr//):
....
exclude_acct => [
qr/^T[0-9]{6}/,
qr/^AUDIT[A-Z]{2}/,
qr/^SECURITE.*/,
],
....
在我的循環中,我應該使用這樣的東西嗎? :
foreach (@{ $myhash{exclude_acct} }) {
next LOOP if $UPUPRF =~ /$_/;
}
謝謝你的建議。
問候
注意:我還沒有嘗試過這段代碼,只是猜測我可以這樣做,但我主要想知道這是否“干凈”或者是否有更干凈的方法來做到這一點
這很好,但是啟動正則表達式引擎的成本相對較高,因此比從眾多正則表達式中創建一個正則表達式要快。
# Once, before the loop.
my $pat = join "|", @{ $myhash{exclude_acct} };
my $re = qr/$pat/;
# In the loop.
next LOOP if $UPUPRF =~ $re;
不過,這可能會破壞反向引用( \\1
)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.