2011年まで「俺的な非 UN*X 環境をめざして」という題でしたが、 「UNIX系」と「非UNIX系」の区別がだんだん難しくなってきましたので、 あれこれ区別しないことにしました(^_^;
[前] OpenOffice.org Writer の表 2008/05d |
FreeBSD では Perl5 以降のバージョンを使っているのですが、 まあ、個人的な歴史的事情もあって USBフラッシュメモリ上で主に使っている Perl(JPERL)は今もってなおバージョン4の初期段階のものです。 (jcode.pl さえ動かなかったときは涙が出そうになりましたが‥) まあ、それはさておき。
私が書く定型作業用の Perl スクリプトというのは、ある点でシェルスクリプトのような
作りになっていまして、それはどういうことかといえば、たとえばファイルのコピーなど、
一般的な外部プログラムに任せたほうが楽そうな作業は、どちらかといえば積極的に
外部のプログラム(この場合だと cp コマンド)に任せてしまうように書くことが
多いです。たとえば「新規にディレクトリを作る」といったときも、Perl の mkdir() 関数
ではなく、わざわざ system() 関数を使って外部の mkdir コマンドを実行する、といった
感じです。これはもう私自身の好みの問題、と表現するしかないんですけどね。
(余談ですが、私は「所期の動作をおこなうshスクリプト、を生成するPerlスクリプト」、
つまり一段階メタなスクリプトを作って
"./hoge * | sh"
のように
使うのも好き(事前に動作内容も確認できますし‥)なんですけど、
ああ、それも適切な sh.exe をどこからか探してくれば移植可能なのか‥)
なので FreeBSD 上で稼動していた Perl スクリプトを Windows 環境、しかも 持ち運び可能なフラッシュメモリ環境に移植しようとした場合、 それら外部コマンドをどうするか、という問題がどうしても出てくるわけです。 ということで。
\WWW\bin\uxtl412h
に入れます。んで、
FreeBSD で使っていた Perl スクリプトの最初のほうに以下のような
記述を入れてみました(冗長?):
system() 関数で呼び出すのは cp とか mv とか pwd とかの基本的なコマンドが 多かったのが幸いしましたね。手入れをほとんどしない状態にもかかわらず、 案外、普通に動いてる!
{ local($path) = $ENV{'PATH'}; $ENV{'PATH'} = '\WWW\bin\uxtl412h;' . $path; }
(^o^)
あと。 Net::FTP モジュールを使った 「スクリプトを走らせると、勝手に作業して、その結果できあがったファイル群を 某FTPサーバに送る」というスクリプトが、 ウチの古い Perl 4 では当然のように動いてくれません。 仕方がないので、Net::FTP を使ってファイルを送る部分については、 ftp.exe という外部コマンドを system() 関数で呼び出してファイルを送る、という 風に書き直しました。このときに使った FTP クライアントソフトが以下:
んで、こうして移植した Perl スクリプトを呼び出すバッチファイルを別途
目立つところに用意し、スクリプトのほうは少し奥まったディレクトリに置いて
目立たないようにしておきました。これでエクスプローラの画面で
バッチファイルをダブルクリックするだけで 定型作業⇒結果をFTPサーバに送信、
が可能に! (^o^)
[後日談] UnxUtilsという パッケージもあるみたいですね。
[次] Eee PC 近況 2008/05b |