[ PC系セットアップ覚書 Top]

PC系セットアップ覚書

2011年まで「俺的な非 UN*X 環境をめざして」という題でしたが、 「UNIX系」と「非UNIX系」の区別がだんだん難しくなってきましたので、 あれこれ区別しないことにしました(^_^;


[前] OpenOffice.org Writer の表 2008/05d

作業環境の持ち運びは夢か (2) --- FreeBSDのPerlスクリプトをWindowsのUSBメモリへ 2008/05c

FreeBSD では Perl5 以降のバージョンを使っているのですが、 まあ、個人的な歴史的事情もあって USBフラッシュメモリ上で主に使っている Perl(JPERL)は今もってなおバージョン4の初期段階のものです。 (jcode.pl さえ動かなかったときは涙が出そうになりましたが‥) まあ、それはさておき。

私が書く定型作業用の Perl スクリプトというのは、ある点でシェルスクリプトのような 作りになっていまして、それはどういうことかといえば、たとえばファイルのコピーなど、 一般的な外部プログラムに任せたほうが楽そうな作業は、どちらかといえば積極的に 外部のプログラム(この場合だと cp コマンド)に任せてしまうように書くことが 多いです。たとえば「新規にディレクトリを作る」といったときも、Perl の mkdir() 関数 ではなく、わざわざ system() 関数を使って外部の mkdir コマンドを実行する、といった 感じです。これはもう私自身の好みの問題、と表現するしかないんですけどね。 (余談ですが、私は「所期の動作をおこなうshスクリプト、を生成するPerlスクリプト」、 つまり一段階メタなスクリプトを作って "./hoge * | sh" のように 使うのも好き(事前に動作内容も確認できますし‥)なんですけど、 ああ、それも適切な sh.exe をどこからか探してくれば移植可能なのか‥)

なので FreeBSD 上で稼動していた Perl スクリプトを Windows 環境、しかも 持ち運び可能なフラッシュメモリ環境に移植しようとした場合、 それら外部コマンドをどうするか、という問題がどうしても出てくるわけです。 ということで。

これをインストールしました。可搬環境を意識するということで、本当に動くかどうか 確認してないんですが、Windows95 環境でも動くはずの Unix-tools (NT版じゃないやつ)を、 今回は選択しました。パッケージを入手し、コマンド群を フラッシュメモリの\WWW\bin\uxtl412hに入れます。んで、 FreeBSD で使っていた Perl スクリプトの最初のほうに以下のような 記述を入れてみました(冗長?):
{
  local($path) = $ENV{'PATH'};
  $ENV{'PATH'} = '\WWW\bin\uxtl412h;' . $path;
}
system() 関数で呼び出すのは cp とか mv とか pwd とかの基本的なコマンドが 多かったのが幸いしましたね。手入れをほとんどしない状態にもかかわらず、 案外、普通に動いてる! (^o^)
ただ system("mkdir ..."); だったところは system("makedir ....") のように 書き直す必要がありました。mkdir と書いてしまうと DOS (Windows) の mkdir コマンドが反応しちゃって 期待通りの結果が得られないんですよね。これで しばらくハマりました。

あと。 Net::FTP モジュールを使った 「スクリプトを走らせると、勝手に作業して、その結果できあがったファイル群を 某FTPサーバに送る」というスクリプトが、 ウチの古い Perl 4 では当然のように動いてくれません。 仕方がないので、Net::FTP を使ってファイルを送る部分については、 ftp.exe という外部コマンドを system() 関数で呼び出してファイルを送る、という 風に書き直しました。このときに使った FTP クライアントソフトが以下:

これです。こっちの移植は外部プログラムさえ見つければ、たいした手間では なかったです。

んで、こうして移植した Perl スクリプトを呼び出すバッチファイルを別途 目立つところに用意し、スクリプトのほうは少し奥まったディレクトリに置いて 目立たないようにしておきました。これでエクスプローラの画面で バッチファイルをダブルクリックするだけで 定型作業⇒結果をFTPサーバに送信、 が可能に! (^o^)

[後日談] UnxUtilsという パッケージもあるみたいですね。



[次] Eee PC 近況 2008/05b