ntperlについての注意事項

ntperlについての注意事項



 ntperlは、名前の通りWindows NTを対象としていますが、Windows 95のMS-DOSボックスでも動作するようです。ただし、アーカイブを解凍したときに作成されるinstall.batは、Windows NTに依存していますので使わない方がよいでしょう。OLBCKを使うためには、さしあたりperl.exeを環境変数PATHで指定されたディレクトリにコピーするだけで充分です(“正式な”インストール方法は、ntperl付属のWIN95.TXTに書かれています)。
 次にg_body.bat、g_cnts.bat、g_ind.batに若干手を加える必要があります。これらのファイルを1つずつテキストエディタでオープンし、冒頭の部分を見てください。

@echo off
perl -Sx g_body.bat %1 %2 %3 %4 %5 %6 %7 %8 %9
goto END

#!/usr/local/bin/perl


たとえば、g_body.batならこうなっているはずです。この2行目のjperlをperlに変更してください。g_cnts.bat、g_ind.batでも、しなければならない作業は同じです。これで、スクリプトが動作するようになります。なお、ntperlは、4文字の拡張子の作成にも対応していますので、設定ファイルでextオプションとしてhtmlを指定しておくとよいかもしれません。
 以下は、興味のある方だけ読んでください。
 このような作業をしているのは、jperl以外のperlでは、-Sオプションで実行できるスクリプトファイルが実行可能属性を持つファイルに限られているからです(jperlでは、ファイルが実行可能かどうかのチェックは行われていません。これは移植者の田中良知氏に教えてもらいました)。UNIXなら、chmodで実行属性を付けるだけのことですが、MS-DOS系のファイルシステムでは、拡張子が.EXE、.COM、.BATでなければ実行可能属性になりません。そのため、.plのような拡張子を持つスクリプトファイルを環境変数PATHが指すディレクトリに格納しても、-Sオプションを使うことはできないわけです。
 だからといって、perlのコマンド行引数として日常的にバッチファイルを指定するのは少し気持ちが悪いところです。幸い、perlには、冒頭が#!で、perlという文字列が含まれている行までと__END__以降の行を無視するという-xオプションがあります。これを利用すれば、バッチファイルにしてスクリプトファイルというものが作れるわけです。この方法なら、jperl以外のperlを使う場合でも、スクリプトファイルをあちこちのディレクトリにコピーして回る必要はなくなります。
 しかし、バッチファイルのなかのperlコマンド行は、プログラム名がjperlかperlかによって影響を受けます。本来なら、このような差異は、バッチファイル内で吸収したいところです。バッチコマンドには、ファイル名で指定されたファイルがあれば、コマンド行が実行されることになっているif exist ファイル名 コマンド行というものがあります。しかし、私のマシンで試してみると、ファイル名が存在しなければ、コマンド行が実行されてしまいました。逆に、ファイル名で指定されたファイルがなければコマンド行が実行されるはずの、if not exist ファイル名 コマンド行の方は、ファイル名が存在すれば、コマンド行が実行されます。本来の動作とまったく逆になっているわけです。これはちょっと気持ちが悪いので、使うのをやめました。手作業をお願いしているのは、そのためです。