2

私は必要なperlの一部を作成することに非常に固執しています。

次のファイルが含まれています

    define(`CONFM4_AST_MODULES', `NOLOAD => app_thingie.so
    NOLOAD => app_thingie2.so
    NOLOAD => app_thingie3.so')

このブロック全体を書き直す必要があるので、「( `CONFM4_AST_MODULES"」と「')」の間にあるすべてのものを一致させることを考えていました。削除してから、もう一度追加してください。ファイルの終わりに。このようなことを正規表現することは可能ですか?もしそうなら、どのように?

時々変更されるため、perlスクリプトのテキスト全体をハードコーディングすることはできません。

これを解決する方法について他に何かアイデアがあれば、私はそれを聞くのが大好きです:)

また、ファイルに存在するものの数が3から20に変更されます。

4

1 に答える 1

2

はい、可能です。ファイル全体を変数に読み込み、置換を行うことができます。

my $var = do { local $/; <> };                           # Read in the file.
my $re = qr/(define\(`CONFM4_AST_MODULES',[^)]+\)\n?)/;  # How to search for the defines.
my @defs = $var =~ /$re/g;                               # Remember the defines.
$var =~ s/$re//g;                                        # Remove them.
print $var, @defs;

更新: コードの改善とテスト。

于 2012-10-29T12:59:51.457 に答える