我熟悉使用列表上下文为变量分配匹配项:
my ($ans) = $somevar =~ m/(somestuff)/;
但是如果我想在匹配失败时为$ ans分配一个默认值呢?有没有办法在一个表达式中做得好?最好没有条件运算符?
答案 0 :(得分:3)
也许三元运算符会有所帮助:
my $ans = $somevar =~ /(somestuff)/ ? $1 : 'default_val';
答案 1 :(得分:2)
my ($ans) = "${somevar}default" =~ m/(somestuff|default)/;
实际上不要这样做。
答案 2 :(得分:1)
$ans
将为"default"
,
my ($ans) = ($somevar =~ /(somestuff)/, "default");
请注意,右侧始终有"default"
作为列表的最后一个元素,当正则表达式失败并返回空列表时,等待分配给$ans
。