目錄

名稱

perlamiga - AmigaOS 4.1 下的 Perl

注意事項

這是 Perl 5.22.1 的移植,是一個新的移植,與我之前移植的 Perl 5.8 和 5.16.3 完全不相容。這表示您需要重新安裝/建置您已安裝的任何第三方模組。

需要版本 53.28 或更新的 newlib.library。

概要

安裝 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 版本中的錯誤報告給 andy@broad.ology.org.uk。

安裝

本指南假設您已從 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/,了解如何提供協助。