それ多分Perlでできるよ

turugina
2010-12-10

どもです、こっそりWin32Trackに参加したら速攻でcharsbarさんに「次お前な」といわれてしまいました、turuginaです。一応kansai.pm所属らしいです。

さて、今回はperl/binディレクトリの中から 「*nix環境には普通にあるけど、Windows環境にはない」というコマンドの代替スクリプトのようなものをいくつか紹介してみたいと思います。

ptar

Archive::Tar付属スクリプト。 tarコマンドっぽいスクリプト。

tarコマンドと違って オプション指定にハイフンが必須だったり圧縮オプションはz(zlib圧縮)しか対応してなかったり(伸長はbzip2でも大丈夫)と微妙に使いづらい気も...

とりあえず、perlのソースコード tarball はこのptarで問題なく展開できるはずです。

おまけで(?) tarファイルの中身とディレクトリとのdiffを取る ptardiff や tarファイル内をgrepするための ptargrep なんてのもいます。

find2perl

File::Find付属スクリプト(で、いいんだっけ)。 findコマンド互換の引数を取り、実行可能なperl scriptを吐き出します。

例えばカレントディレクトリ及び下位ディレクトリ内にある一週間以上前に修正された*.txtファイルを探すなんて場合は

C:\>find2perl . -mtime +7 -a -name "*.txt" | perl

のようにします。

lwp-***

libwww-perl (LWP)付属スクリプト群。 wgetやcurlの代わりに割と使える。

指定したURLからファイルをダウンロードする lwp-download, ファイルの修正日付を考慮してミラーリングを行う lwp-mirror, 再帰的にWebページを取得する lwp-rget などがあります。

psed

sed互換スクリプト。 これは一体誰得なんでしょうか...

pwhich

File::Which付属スクリプト。実行ファイルのパスを調べてくれる便利屋さん

C:\>pwhich explorer
C:\WINDOWS\explorer.EXE

ちなみにどーでもいいことですが、私はこいつの存在に気がつかずに独自にwhichスクリプトを書いていました。

md5sum-perl, shasum

md5sum-perl は単独のdistribution, shasumはDigest::SHA::PurePerl付属スクリプト。

それぞれ、 md5sum や sha1sum 等の 互換 ... だと思います。

はてブコメントでgfxさんに「piconv様を忘れるとは何事だゴルァ」とお叱りをいただきました。素で忘れてたんです。ゴメンナサイ

というわけで追記 @2010-12-10 21:50

piconv

あのdankogaiさんがmaintainerを努めるEncodeの付属スクリプト。文字コード変換API/ツールであるiconvのperl版

使用例としてはlwp-requestと組み合わせて

C:\>lwp-request http://example.com/written-in-utf8.txt | piconv -f utf-8 -t cp932 | more

なんてのが出来ますかね。


とりあえずこんな感じで。

みなさんもお暇な時にでも dir X:\path\to\perl\bin\*.bat して何か便利そうなスクリプトがいつの間に入っていないか気にかけてあげてください。


さて、commitの履歴を辿ると.. 次ははせがわさんでしょうか。