2007/10/7 日曜日

Perl:Win32-GUI&EXE化

Filed under: Perl — tiny-p @ 19:38:19

参考(というか記録のため丸々コピー):http://cubic9.com/Devel/Perl/Win32-GUI/

PerlでWindows用の単体で配布可能なGUI付きソフトを作ってみる。

■必要なもの

■インストール

  1. ActivePerl5.8系をインストール
  2. 再起動 (パスが通るように)
  3. Win32-GUI-0.99_1-PPM-5.8.zipをc:\に解凍
  4. Loft_binary.zipをc:\に解凍
  5. コマンドプロンプト起動 (Win+r, cmd)
  6. Win32::GUIをインストール

    cd Win32-GUI-0.99_1-PPM-5.8 ppm install Win32-GUI.ppd cd .. rmdir /s Win32-GUI-1.0-PPM-5.8

  7. The GUI Loftをインストール

    cd TheGUILoftPPMAdHoc ppm install Win32-GUI-AdHoc.ppd cd TheGUILoftPPMLoft ppm install Win32-GUI-Loft.ppd

  8. Win32::APIをインストール

    ppm install Win32-API

■使ってみる

  • \TheGUILoft\tgl.exe で GUIを作成。launcher.gld として保存。
  • いやな日記さんのコードを入力。launcher.pl として保存。
  • launcher.gld と launcher.pl を同じフォルダに突っ込んで、launcher.pl を実行。

■exeにする
以下が必要

■CPANをインストール
以下が必要

  1. 上記を解凍して次のものをc:\binにコピー。
    • gzip.exe
    • tar.exe
    • NMAKE.EXE
    • NMAKE.ERR
  2. 環境変数にc:\binを加える。
  3. コマンドプロンプト起動 (Win+r, cmd)
  4. CPANの初期設定
    perl -MCPAN -e shell

    Enter連打。gzip,tar,makeの箇所だけは慎重に。

■PARをインストール
適当に解凍

cd PAR-0.86 perl Makefile.PL nmake nmake install cd .. rmdir /s PAR-0.86

■exeに変換

pp --gui -a launcher.gld -o launcher.exe launcher.pl

■備考

  • Encode.pm使うときはuse Encode::JP;と記述すること。
  • ワンライナーもexeに出来る。
    pp -o hello -e 'print "hellon"'

■アイコンを変える

pp -g -i launcher.ico -a launcher.gld -o launcher.exe launcher.pl

でも変えられるが、試したところ一気に数百kByte増えてしまったので、 KH IconRewrite98を使う。

2007/8/26 日曜日

Perl:ブラウザにエラー表示

Filed under: Perl — tiny-p @ 18:19:53

use CGI::Carp qw(fatalsToBrowser);

Perl:入力,出力ファイルをそれぞれ指定し,データを特定のエンコードで読み込み特定のエンコードで出力するスクリプト

Filed under: Perl — tiny-p @ 16:05:58

#入力,出力ファイルをそれぞれ指定し,データを特定のエンコードで読み込み特定のエンコードで出力するスクリプト

use encoding “shiftjis”;
binmode STDERR, “:encoding(shiftjis)”;
use Encode ‘decode’, ‘encode’; # use Encode qw/encode decode/; とqw表記することも可能。引用符やカンマを省略できる。

$inputtext = ’sjis_in.txt’; # 入力元のテキストは Shift JIS
$outputtext = ’sjis_out.txt’; # 出力先のテキストは Shift JIS

open (IN, ‘< ', $inputtext); # 入力元ファイルを読み込み専用としてオープン
open (OUT, '>‘, $outputtext); # 出力先ファイルを書き込み専用としてオープン

$i = 0; # カウンター
while () { # 先ほどオープンした入力用ファイルハンドル IN を指定して,読み込む (標準出力 <> ではない)
$i++; # カウンターを1つ増
$line = decode(’shiftjis’, $_); # ファイルからの入力は Encode::decode 関数で個別にエンコードを指定する。ここでは shiftjis を指定しているが,入力ファイルのエンコードにあわせ,euc-jp, utf8 なども指定可能。
$line = encode(’shiftjis’, $i . “\t” . $line); # 出力するデータを指定し, Encode::encode 関数により Shift JIS に変換する。euc-jp, utf8 なども指定可能。
print OUT $line; # 出力用ファイルハンドル OUT に変換結果を書き込む
}
close (IN); # 入力元ファイルハンドルを閉じる
close (OUT); # 出力先ファイルハンドルを閉じる

« 前のページ次のページ »

Copyright (C) 2007 tiny-p. All Rights Reserved.