オススメしないperlの実行方法
お仕事では、100% Windowsなtechno-cat(@techno_neko)デス。
今回は、オススメしないperlの実行方法を紹介します。
みなさんは、wsfをご存知でしょうか?
Windows スクリプト (*.wsf) ファイルは、XML (Extensible Markup Language) コードを含むテキスト ドキュメントです。Windows スクリプト ファイルでは、スクリプトの柔軟性を向上するいくつかの機能がサポートされています。Windows スクリプト ファイルはエンジンに依存しないので、Windows スクリプト互換の任意のスクリプト エンジンで作成したスクリプトを Windows スクリプト ファイルに含めることができます。Windows スクリプト ファイルは、一種のコンテナとして機能します。
http://msdn.microsoft.com/ja-jp/library/cc392507.aspx
だそうなので、さっそくperlをスクリプト エンジンとしたwsfを書いちゃいましょう。
まずは、いつもの。
<job>
<script language="PerlScript">
$WScript->Echo("hello world.");
</script>
</job>
これをテキストエディタにコピペして、"hello.wsf"というファイル名で保存してみましょう。
見慣れないアイコンが表示されるはずです。
ダブルクリックすると、スクリプトが実行されて、メッセージボックスが表示されます。
さらに、複数のファイルをドラッグ&ドロップして処理する場合はこんな感じ。
<job>
<script language="PerlScript">
my $args = $WScript->Arguments;
for (my $i=0; $i<$args->Count; $i++) {
	foo( $args->Item(0) );
}
sub foo {
	my $arg = shift;
	# $WScript->Echo( $arg );
}
</script>
</job>
一度に複数のファイルを処理したい場合や、
BATファイル(*.bat)を書くまでもない場合は非常に便利です。
こんな簡単にperlを実行できるなんて、夢が広がりますね!
ですが、次はオススメしない理由です。
結論から言うと、日本語のコメントを入れると、意味不明なエラーが出ます。
<job>
<script language="PerlScript">
# メッセージボックスを表示!
$WScript->Echo("hello world.");
</script>
</job>
こんな感じで、ファイルの先頭で文字コード指定したり、
<?XML version="1.0" standalone="yes" encoding="euc-jp" ?>
可能な限りいろいろ試してもダメでした。
これが許容できるなら使えそうなもんですが、私はperlスクリプトファイル(*.pl)をJScriptファイル(*.js)から呼び出す方法をオススメしています。
理由は、コマンド プロンプトから呼び出してデバッグが出来るからです。
という訳で、オススメしないよ!っていうMSWin32Tipsでした!!
次は、 @songmu さんデス!