0

我不知道这里发生了什么......我正在尝试手动执行此操作,而不是让 Perl 执行此操作。

my $replace_string
    = "s/typedef struct WebFontDescription WebFontDescription/struct WebFontDescription/g";

print $fh "perl -p -i -e \""
        . $replace_string
        . "\" \""
        . $idl_filename
        . "\"\r\n";

$replace_string
    = "s/\(WebFontDescription\\* webFontDescription/\(struct WebFontDescription\\* webFontDescription/g";

print $fh "perl -p -i -e \""
        . $replace_string
        . "\" \""
        . $idl_filename
        . "\"\r\n";

我看到它在寻找一个字符串

typedef struct WebFontDescription WebFontDescription

然后将其替换为

s/\(WebFontDescription\\* webFontDescription/\(struct WebFontDescription\\* webFontDescription/g

但是如何用正则表达式替换正则表达式?这没有任何意义...

4

1 回答 1

4

它创建以下一对 shell 命令:

perl -p -i -e "s/typedef struct WebFontDescription WebFontDescription/struct WebFontDescription/g" "file"
perl -p -i -e "s/(WebFontDescription\* webFontDescription/(struct WebFontDescription\* webFontDescription/g" "file"

第一个替换每个实例

typedef struct WebFontDescription WebFontDescription

struct WebFontDescription

第二个没有做任何事情,只是抛出一个错误消息,因为它没有编译。(无与伦比(。)

于 2013-04-12T18:20:09.037 回答