数値を返す小さな関数の集まりである C++ コードでいっぱいのファイルがあります。数値が 2 より大きい場合は、各数値を数値プラス 1 に置き換えようとしています。したがって、
int blah() { return 5; }
になるだろう
int blah() { return 6; }
しかし
int blah() { return 1; }
同じままです。
これはどのように行われますか?
数値を返す小さな関数の集まりである C++ コードでいっぱいのファイルがあります。数値が 2 より大きい場合は、各数値を数値プラス 1 に置き換えようとしています。したがって、
int blah() { return 5; }
になるだろう
int blah() { return 6; }
しかし
int blah() { return 1; }
同じままです。
これはどのように行われますか?
少し醜いですが、うまくいくはずです:
s/\{\s*return\s+(\d+)\s*;\s*\}/$1 > 2 ? "{ return " . ($1 + 1) . "; }" : $&/ge;
で番号を確認してください[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;
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