2

我有一个充满 C++ 代码的文件,它是一堆返回数字的小函数。如果数字大于2,我正在尝试用数字加一替换每个数字。所以,

int blah() { return 5; }

会成为

int blah() { return 6; }

int blah() { return 1; }

将保持不变。

这是怎么做到的?

4

3 回答 3

5

有点难看,但应该可以:

s/\{\s*return\s+(\d+)\s*;\s*\}/$1 > 2 ? "{ return " . ($1 + 1) . "; }" : $&/ge;
于 2011-06-20T17:20:40.140 回答
0

用 核对号码[3-9]。例子:
/int\s*blah\(\)\s*\{\s*return\s*([3-9]);\s*}/g

编辑:

要增加 中的值$1,您将需要标志e并连接字符串:

$_ = 'int blah() { return 5; }';
s/int\s*blah\(\)\s*\{\s*return\s*([3-9]);\s*}/'int blah() { return '.$1+1 . '; }'/eg;
print;
于 2011-06-20T17:15:54.763 回答
0
perl -e 'use Tie::File;tie @array,'Tie::File',$ARGV[0] || die;s|(return\s+)(\d+)(.*)|$2>1?$1.($2+1).$3:$1.$2.$3|e for (@array);untie @array;' FILENAME
于 2011-06-20T18:17:38.727 回答