3

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

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

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

4

3 回答 3

3

也许三元运算符会有所帮助:

my $ans = $somevar =~ /(somestuff)/ ? $1 : 'default_val';
于 2013-10-16T20:09:00.790 回答
2

$ans将是"default"如果匹配失败,

my ($ans) = ($somevar =~ /(somestuff)/, "default");

请注意,右侧总是"default"作为列表的最后一个元素,等待$ans正则表达式失败并返回空列表时分配。

于 2013-10-16T20:07:40.063 回答
2
my ($ans) = "${somevar}default" =~ m/(somestuff|default)/;

实际上不要这样做。

于 2013-10-16T21:34:10.440 回答