2

数値を返す小さな関数の集まりである C++ コードでいっぱいのファイルがあります。数値が 2 より大きい場合は、各数値を数値プラス 1 に置き換えようとしています。したがって、

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 に答える