标签: pdp-10

将 sed 脚本拉入 perl 程序

我需要缩短函数名称,因此我识别它们并生成一个非常长的 sed 脚本,如下所示:

s/\breally_long_function_name1\b/A00128/g
s/\breally_long_function_name2\b/A00060/g
s/\breally_long_function_name3\b/A00035/g
s/\breally_long_function_name4\b/A00342/g
s/\breally_long_function_name5\b/A00203/g
...
Run Code Online (Sandbox Code Playgroud)

然后这样称呼它:

`sed -i.bak -f $sedscript *`
Run Code Online (Sandbox Code Playgroud)

问题是我不能依赖sed能够处理这些实例\b,而且看起来很混乱。我不想写出 sed 脚本,而是想将其放入一个数组中,然后对需要处理的每个文件的每一行执行类似的操作:

$targetline =~ $processing;
Run Code Online (Sandbox Code Playgroud)

我的问题是,这样使用$processing是行不通的,而且q操作员似乎也没有完成这项工作。我如何处理它以处理替换$processing并输入结果$targetline

注意:我在脚本中使用了 Perl sed 文件以及@ron-bergin 的答案来达到这一点。

其应用是将现代 C 代码转换为可以由古代 C 编译器编译的形式。现有脚本位于https://gitlab.com/DavidGriffith/frotz/-/blob/master/src/misc/snavig.pl,用于准备供 KCC(PDP-10 的早期 C 编译器)编译的源代码大型机。它的怪癖之一是某些符号的长度限制为 6 个字符。有关此内容的背景位于https://github.com/PDP-10/panda/blob/master/files/kcc-6/kcc/user.doc#L519

这是处理前源文件的片段:

void reset_memory(void)
{
        if (story_fp != NULL)
                fclose(story_fp);
        story_fp = NULL;

        if (undo_diff) {
                free_undo(undo_count);
                zfree(undo_diff);
                zfree(prev_zmp);
        }

        undo_diff = NULL;
        undo_count = …
Run Code Online (Sandbox Code Playgroud)

perl sed pdp-10

2
推荐指数
1
解决办法
183
查看次数

标签 统计

pdp-10 ×1

perl ×1

sed ×1