我目前有以下代码:

my $class = $rs->{'CLS_ID'};
$class =~ s/^C\S{1,3}\s+// if ($transform);

这很好用,但是我想知道这两个语句是否可以组合成一个三元表达式?

最佳答案

三元条件运算符使您可以指定一个测试和两个值。

例如。

my $value = somecondition ? value-if-true : value-if-false;

现在,您无需在示例中执行此操作-您要设置一个值,然后在条件为true时运行一个子例程(regex)。

因此,我建议您在可能的情况下,颠覆一下三元运算符的含义。而且您仍然可以在表达式的“两面”进行分配。

例如:
my $class = ($transform) ? $rs->{'CLS_ID'} : $rs->{'CLS_ID'} =~ s/^C\S{1,3}\s+//r;

“r”标志告诉您的正则表达式“返回”修改后的值,而不修改原始值。但是我不会这样做,因为这会使您的工作变得不清楚。

请注意,正则表达式的r修饰符适用于perl 5.14及更高版本。

关于regex - Perl三元声明,其中正则表达式为结果之一,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31342974/

10-16 17:43