私のてもとにある Linux PC (会社のと家のとをあわせると 8 台くらいあります) のほとんどには Fedora Core 4 以降の Linux がインストールされています. しかし,いまでも 1 台だけ Red Hat Enterprise Linux の初期の版が動作している PC があります. この PC 上の Perl には私にとって致命的なバグがあり,それに 2 回つかまってしまいました.
「Perl によるファイルからの音声 (VoIP) 送信」 や 「Perl による音声 (VoIP) 受信と再生」 で紹介したようなバイナリ通信のプログラムを Perl で書くと,pack(), unpack() という関数を多用することになります. そうすると,しばしばこのバグにとらわれてしまうのです. これらの関数は Perl の数値などとバイナリ・データとのあいだの変換をする関数です. これらにあたえるテンプレート指定文字 (フォーマット文字) としてネットワーク順 (network byte order) の 2 バイトや 4 バイトの整数を意味する“n”, “N” をあたえたときに,上記の Linux にもともとふくまれている Perl 5.8.0 にはうまく処理できないバグがあるようです. Fedora Core をのせた PC には Perl 5.8.1 がはいっていて,そちらでは問題ありません.
やむをえずプログラムをほかの PC にうつして実行するのですが,Red Hat Linux のほうはそのままにしてあったので,バグがあることもわすれていて,ふたたびひっかかってしまいました. この Linux にはほかにもあつかいにくい点がいくつかあったので,今度こそは Fedora にいれかえようとおもいます.