0

我有表格的文本行

F xxx.xxx 

其中 F 可以后跟任意数量的空格,后跟任意数量的数字,可选地后跟十进制和十进制数字。我想找到这些数字,将它们除以一个变量,然后替换它们。

我的代码大部分都有效,但我无法逃避实际计算数字的除法。

my $devisor = 60.0;
s/F\s*?(\d+(\.\d+)?)/"NEWF$1\/$divisor"/;

我怎样才能像这样搜索、计算和内联替换?

4

1 回答 1

0

如果您使用 '/e' 修饰符, 的替换部分s///将被视为 Perl 表达式并进行计算。此外,您可能需要另一个分隔符,这样您就可以很好地编写除法而无需转义。您的括号将仅捕获小数部分,而不是整数。最后,devisor是一个拼写错误。

因此,您可以编写s#F\s*(\d+(\/\d+)?)#$1/$divisor#e(假设您实际定义了$divisor)。

于 2013-06-26T05:23:20.027 回答