在 Perl 正则表达式中,文档说
... 在标量上下文中,
$time =~ /(\d\d):(\d\d):(\d\d)/
返回真或假值。但是,在列表上下文中,它返回匹配值的列表($1,$2,$3)
但是,当您提供替代选项时 - 找不到匹配项时 - 即使在列表上下文中也会分配 TRUE 或 FALSE 怎么办?
例如,我想将匹配的组分配给一个变量,如果找不到,则使用字符串值 ALL。
my ($var) = $string =~ /myregex/ || 'ALL';
这可能吗?那么多个捕获的组呢?例如
my ($var1, $var2) = $string =~ /(d.t)[^d]+(d.t)/ || 'dit', 'dat';
where 如果第一组不匹配,'dit'
则使用,如果第二组不匹配,则使用'dat'
。