我目前有以下代码:
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/