Perl E07:路径和启动边界不能用 Linux 测试代填
工具调用 probe 的核心是“固定 $^X、固定脚本、参数列表、限定 token”,而非在各系统拼接路径与 shell 字符串。本机 Linux 正例 probe demo.tsv 'x y' 把空格保留在同一个参数里:STDOUT arg=x y\n、STDERR probe note\n、退出 0;含换行的 token 在启动前被拒绝,STDOUT 空、退出 2,诊断中说明长度和 ASCII 限制。缺失可执行文件由 t/26-31-objects-and-process.t 的直接库调用确认启动失败,不是退出 7。
查冻结 5.38.2 pod/perlport.pod、pod/perlipc.pod 后,仍不能自动宣布 Windows 与 macOS 已支持:原生路径分隔、文件被占用时的 rename、可执行文件查找、管道信号/退出状态及不同文件系统的 flock 都需要在相应平台重跑;IPC::Open3 的顺序双流读取对大量输出本来就不适用。这里的“多平台审计”仅给出待验证矩阵,Windows、macOS 与网络文件系统运行状态均为 NOT_RUN,不把文档推测填成成功记录。
练习:在 Windows 上沿用 Linux 目录输入的 Is a directory 文字金标合理吗?不合理;错误消息由本机系统决定,应改用该平台的明确断言并记录版本。Linux 正反例及其他平台空白见 examples/perl-language/evidence/E01-E08.md,避免把条件性的便携性说明误写成已验收支持。
工程补课新增的信号、关闭管道、fork worker 和 RLIMIT_FSIZE 注入都必须按平台逐项标注。macOS 5.34.1 已能暴露 stdout flush/close 非零和 SIGPIPE 非零路径,但不能代验 Ubuntu 上的 5.38.2 二进制;当前本机 5.38.2 build-tree 可由主线复跑,完整安装仍有资源限制记录。E07 的结论因此保持为“列出平台依赖项与已跑环境”,不是把 Linux、macOS、Windows、网络文件系统合并成一个通过项。









