Perl将regex匹配赋值给具有默认值的变量

时间:2013-10-16 19:50:27

标签: regex perl default variable-assignment

我熟悉使用列表上下文为变量分配匹配项:

my ($ans) = $somevar =~ m/(somestuff)/;

但是如果我想在匹配失败时为$ ans分配一个默认值呢?有没有办法在一个表达式中做得好?最好没有条件运算符?

3 个答案:

答案 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