内容

名称

perlamiga - AmigaOS 4.1 下的 Perl

注意

这是 Perl 5.22.1 的一个移植版本,它是一个全新的移植版本,与我之前移植的 Perl 5.8 和 5.16.3 版本没有任何兼容性。这意味着您需要重新安装/重新构建您已安装的任何第三方模块。

需要 newlib.library 53.28 或更高版本。

概要

安装 perl 后,您可以通过以下方式阅读本文档

sh -c "perldoc perlamiga"

或者,您可以“按原样”阅读:作为 README.amigapod/perlamiga.pod

说明

在 AmigaOS 4.1 下运行 Perl 5.22.1 的先决条件

截至 2013 年 10 月 9 日,已应用所有更新的 AmigaOS 4.1 更新 6

其中最重要的更新是

newlib.library 版本 53.28 或更高版本
AmigaOS SDK

Perl 安装到 SDK 目录结构中,并期望 SDK 中存在的许多构建工具可用。因此,为了获得最佳结果,请先安装 SDK。

abc-shell

如果您尚未安装 SDK,则至少必须安装 abc-shell 或其他合适的 sh 端口。这是运行外部命令所必需的,并且应该在您的路径中作为“sh”提供。

在 AmigaOS 4.1 下启动 Perl 程序

Perl 可以从 AmigaOS shell 运行,但为了获得最佳结果,应该在 abc-shell 下运行。(abc-shell 处理文件通配符、模式扩展,并以 Perl 预期的 UN*Xy 方式设置环境变量。)

例如

New Shell process 10
10.AmigaOS4:> sh
/AmigaOS4>perl path:to/myprog arg1 arrg2 arg3

Abc-shell 还可以通过程序文件开头的 #! 语法启动程序,最好使用 #!SDK:Local/C/perl 形式,以便 AmigaOS shell 也能以相同的方式找到 perl。AmigaOS 要求为此设置脚本位

10.AmigaOS4:> sh
/AmigaOS4>myprog arg1 arrg2 arg3

在 AmigaOS 4.1 下 Perl 的限制

从较旧的 abc-shell 运行时,嵌套管道程序可能会崩溃

abc-shell 版本 53.2 有一个错误,可能会导致用于运行管道程序的子进程中发生崩溃,如果提供了较新版本,则应安装该版本。

不正确或意外的命令行转义

newlib.library 53.30 及更早版本不正确地转义斜杠转义序列,例如 \" \n \t 等,需要额外的特殊转义。

通过 open 启动子进程存在限制
open FH, "command |"

使用 open 启动的子进程使用最小的 popen() 例程,因此它们不会返回可与 waitpid 等一起使用的 pid。

如果您发现任何其他限制或错误,请告诉我。

请首先将此版本 perl 中的错误报告给 [email protected]

安装

本指南假设您已从 os4depot.net 获取预构建存档。

将主存档解压到临时位置(RAM:没问题)。

从 shell 或通过其图标执行提供的安装脚本。

不得尝试手动安装。

安装后,您可以删除临时存档。

此方法将在不创建重复二进制文件的情况下保留安装中的链接。

如果您安装了早期端口 perl 5.16 或 5.8,您可能希望在安装 5.22.1 之前将 perl 可执行文件重命名为 perl516 或 perl58 或类似名称,这将允许您同时使用这两个版本。

Amiga 特定模块

Amiga::ARexx

Amiga::ARexx 模块允许您轻松创建基于 perl 的 ARexx 主机或向其他程序发送 ARexx 命令。

尝试perldoc Amiga::ARexx以获取更多信息。

Amiga::Exec

Amiga::Exec 模块引入了对 Wait() 的支持。

尝试perldoc Amiga::Exec以获取更多信息。

构建

要在 AmigaOS 下从已修补的源代码构建 perl,您需要拥有 SDK 的最新版本。建议使用版本 53.29,早期版本也可能可以使用。

在 Jarkko Hietaniemi 的帮助下,Configure 系统已被调整为在 abc-shell 下运行,因此推荐的构建过程如下。

stack 2000000
sh Configure -de
gmake

这将构建默认设置,该设置安装在 SDK:local/newlib/lib/ 下

更改

2015 年 8 月
移植到 Perl 5.22
添加对 afstat() 中 NIL: 的处理
修复子进程对环境变量的继承。
修复“已分叉”子进程中的 exec 和 exit。
修复 newlib 的 unlink 问题,该问题可能导致无限循环。
添加 flock() 仿真,使用 IDOS->LockRecord 感谢 Tony Cook 的建议。
修复 kill 使用错误类型的进程 ID 的问题
2013年11月27日
Pod 现在默认为文本。
File::Spec 现在应该识别 Amiga 样式绝对路径以及 Unix 样式绝对路径。相对路径必须始终为 Unix 样式。
2013年11月20日
配置为使用 SDK:Local/C/perl 启动标准脚本
添加 Amiga::Exec 模块,支持 Wait() 和 AmigaOS 信号号。
10月13日

首次发布到 5.16.3 的端口。

另请参见

您喜欢这个端口?请参阅 http://www.broad.ology.org.uk/amiga/,了解如何提供帮助。