[英]Perl Template::Toolkit regex matching either values
我正在嘗試匹配Perl Template::Toolkit
模塊中的任一字符串。
url
從腳本中獲取其價值。
[% IF url == ("a/b/c" | "d/e/f") %]
這是正確的做法嗎? 我看了看文件。 它提到了“匹配”方法,但是我正在尋找一種更簡單的方法。
我認為在Template::Toolkit
使用正則表達式有點尷尬,但是在這種情況下,您可以編寫
[% IF url == 'a/b/c' or url == 'd/e/f' %]
如果您需要更復雜的東西,那么您可能會誤解模板的作用,但是您始終可以在Perl中評估布爾條件並將該值傳遞到模板中
更新資料
或者您可以像這樣使用SWITCH
[% SWITCH url %]
[% CASE [ 'a/b/c', 'd/e/f' ] %]
...
[% END %]
您可以使用match virtual方法測試一個正則表達式。 這很簡單。
use strict;
use warnings;
use Template;
my $t = Template->new;
$t->process( \*DATA, { urls => [qw(
http://example.com/a/b/c
http://example.com/xyz
http://example.com/x/d/e/f
)] } );
__DATA__
[% FOREACH url IN urls %]
[%- IF url.match('a/b/c|d/e/f') %]
[%- url %] - match
[%- ELSE %]
[%- url %] - NO match
[%- END %]
[% END %]
輸出:
http://example.com/a/b/c - match
http://example.com/xyz - NO match
http://example.com/x/d/e/f - match
或者,對腳本中的URL進行匹配,然后將布爾結果傳遞給模板。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.