我非常坚持创造一件我需要的perl。
我有一个包含以下内容的文件
define(`CONFM4_AST_MODULES', `NOLOAD => app_thingie.so
NOLOAD => app_thingie2.so
NOLOAD => app_thingie3.so')
现在我需要能够重写整个块,所以我正在考虑匹配“(`CONFM4_AST_MODULES”和“')之间的所有内容”删除它然后再次追加它。在文件的末尾。 是否有可能像这样的正则表达式?如果是这样的话?
无法在perl脚本中对整个文本进行硬编码,因为它有时会发生变化。
如果您对如何解决这个问题有任何其他想法,我很乐意听到它:)
文件中存在的东西数量也会从3变为20。
答案 0 :(得分: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;
已更新:代码已得到改进和测试。