| Win32 FAQ |
perlwin32faq9 - モジュールとサンプルスクリプト
バージョン5.005に対応したPerl for Win32では、MakeMakerユーティリティがサポートされています。 それを使えば、CPANのモジュールをインストールすることができますが、nmakeなどのmakeユーティリティが別途必要です。 モジュールは、通常Data-Dumper-2.08.tar.gzのようにgzipされたtarファイルでディストリビュートされています。
しかし、Perl for Win32にはPerl Package Manager(PPM)というユーティリティが装備されており、このユーティリティでモジュールのインストールを行うことができます。また、バイナリエクステンションを持つモジュールのインストールも可能となっています。 PPMはモジュール管理の手間を省いてくれるので、モジュールのインストールにはPPMを使うことをお勧めします。
それでも、ソースからモジュールをビルドせざるを得ない場合もあります。 一般に、インストールセッションは以下のようになります。:
モジュールを解凍します。この時、アーカイブ名と同じディレクトリが作成されます。
gzip -d -c Data-Dumper-2.08.tar.gz | tar xvf -
モジュールのディレクトリに移動します。
cd Data-Dumper-2.08
READMEファイルによく目を通します。
more < README
Makefile.PLを実行します。 これは、エクステンションのビルド用makefileをビルドするためにMakeMakerが使用します。
perl Makefile.PL
makeユーティリティを使用します。これでインストール用モジュールが準備され、エクステンションがあればコンパイルされます。
nmake
モジュールにテストが付いていれば、実行します。
nmake test
テストが成功したら、モジュールをインストールします。
nmake install
gzipやtarなどのツールの入手先については、 UNIXツールのWin32ポートはどこにあるのでしょうか? を参照してください。
nmakeはMicrosoft社製のWin32システム用のmake風プログラムです。 これは、 ftp://ftp.microsoft.com/Softlib/MSLFILES/nmake15.exe で入手できます。
Win32::OLEモジュールを使うと、ActiveX Data Objects (ADO) APIを利用することができるようになります。 ADOを使えば、あらゆるODBCデータソースにアクセスすることができます。 ADOについての情報は、Perl-Win32-Database FAQにいくつか入っています。:
http://www.fastnetltd.ndirect.co.uk/Perl/perl-win32-database.html
ADOのホームページ:
http://www.microsoft.com/data/ado/
Perl for Win32からデータベースにアクセスするために開発されたエクステンションがいくつかあります。 Win32::ODBCは幅広い人気があり、CPAN及び次のURLで入手できます。:
http://www.roth.net/odbc/
Perl用のデータベースインターフェースモジュールであるDBIは、データベースアプリケーション開発用のconsistentインターフェースを提供します。 DBIはオラクルなど特定のデータベースのネイティブAPIをサポートしています。また、ODBCもサポートしています。 ホームページは以下にあります。:
http://www.hermetica.com/technologia/perl/DBI/index.html
Sybperlモジュールを使うと、Sybase SQL Server(及びたぶんMicrosoft SQL Server)への接続が可能になります。 下記のSybperlのホームページには、Sybperlのバイナリリリースへのリンクがあります。:
http://www.mbay.net/~mpeppler/
ODBCに依存したデータベースAPIを使う道を選んだ場合、使用するDBMS用のODBCドライバを用意しなければなりません。 データベースにアクセスするマシン毎にそのドライバ用のデータソースを設定する必要があります。 オDBCの詳細及びデータソースの設定方法は、ODBCコントロールパネルのヘルプで確認してください。
Microsoft Access and Microsoft SQL ServerなどのDBMSでは、OLEオートメーション(次の質問を参照)を通じて制御することもできます。詳しくは製品のマニュアル等を参照してください。
あります。Perlに入っているWin32::OLEモジュールのドキュメントを参照してください。 Win32::OLEを使うと、ADOを含む幅広いWin32アプリケーションやAPIを制御することができます。
ドキュメントに目を通したら、次はOLEを使う際のFAQを読むとよいでしょう。
このAPIへのアクセスにはWin32::OLEを使うべきです。 上記のPerlスクリプトからOLEオートメーションサーバを使う方法はありますか?を参照してください。 また、DAOの関連ドキュメントを調べてください。
インターネットメールを送信する必要がある場合は、Net::SMTP、Mail::Sender、Mail::Sendmailを使用するとよいでしょう。 これらのモジュールについては、 Perl for Win32からEメールを送信するにはどうすればよいのでしょうか?を参照してください。
Win32::OLEモジュールを使うと、MAPIセッションのインスタンスの作成やメッセージの送信ができます。 これを動かすには、自機で適切にメッセージングを設定しておかなければなりません。 Microsoft Exchangeを使っている場合は、おそらくうまく動くでしょう。
インターねとメールを送信する場合は、Net::SMTPを使う方がよいでしょう。 Perl for Win32からEメールを送信するにはどうすればよいのでしょうか? を参照してください。 下記は、MAPIを使ってメールを送信するサンプルスクリプトです。:
# 送信元の名前とパスワード
#
my $sender = "YOUR NAME HERE";
my $passwd = "YOUR PASSWORD HERE";
use Win32::OLE;
# MAPIセッションは特別なCOINIT_OLEINITIALIZEフラグを必要とします。
# (大半の他のコンポーネントではこれは必要ありません。
# 詳細はOLEのドキュメントを参照してください。)
#
Win32::OLE->Initialize(Win32::OLE::COINIT_OLEINITIALIZE);
# 新しいMAPIセッションを生成。
#
$session = Win32::OLE->new("MAPI.Session")
or die "Could not create a new MAPI Session: $!";
# ログオンを試行。
#
my $err = $session->Logon($sender, $passwd);
if ($err) {
die "Logon failed: $!";
}
# Outboxに新しいメッセージを追加。
#
$msg = $session->Outbox->Messages->Add();
# 宛先を追加
#
$rcpt = $msg->Recipients->Add();
$rcpt->{Name} = "RECIPIENT NAME HERE";
$rcpt->Resolve();
# 題名と本文を作成。
#
$msg->{Subject} = "Test Message";
$msg->{Text} = <<EOF;
This is a sample test message.
Cheers,
Mr. Email
EOF
# メッセージを送信してログオフ。
#
$msg->Update();
$msg->Send(0, 0, 0);
$session->Logoff();
はい、あります。DBMのフリークローンのSDBM_Fileが、Perl for Win32ディストリビューションに実装されてディストリビュートされています。これは次のように使用します。:
use SDBM_File;
use Fcntl;
tie( %myhash, "SDBM_File", 'myfile', O_RDWR | O_CREAT | O_BINARY, 0666 )
or die( "Can't tie: $!" );
$myhash{"bibim"} = "bap";
untie( %myhash );
DBMファイルがtieされた後は、ハッシュと同じように使用することができます。
GDBM、NDBM、ODBMはWin32ではビルドされていません。
Win32用Perlリソースキットでは、Tkライブラリは成功裡にPerl for Win32に移植されてきました。Tkバージョン8xx以上では、それ以前のバージョンのようなUNIX風ではない、Windowsプログラムのルックアンドフィールを具備しています。
また、Win32::GUIモジュールを使うと、Perlを使ったGUIの生成や操作が可能になります。このモジュールは、標準のWindowsウィジェットを使ってWindowsプログラムのルックアンドフィールを作り出します。
Tkの情報については、 http://w4.lns.cornell.edu/~pvhp/ptk/ptkTOC.htmlへどうぞ。
Win32::GUIの情報については、 http://www.divinf.it/dada/perl/gui/へどうぞ。
Win32::MsgBoxを使うと、手っ取り早くWindowsのメッセージボックスを表示することができます。以下はそのサンプルです。:
use Win32;
MsgBox("Test", "This is a test", 48);
# !マークと'OK'ボタンを持ったメッセージボックスを表示する
sub MsgBox {
my ($caption, $message, $icon_buttons) = @_;
my @return = qw/- Ok Cancel Abort Retry Ignore Yes No/;
my $result = Win32::MsgBox($message, $icon_buttons, $caption);
return $return[$result];
}
最後の値、$icon_buttonsは2つの値、アイコンの値とボタンの値の合計です。 たとえば、クェスチョンマークとOk'と'Cancel'ボタンを持ったメッセージボックスが 必要な場合、求める値は、32(クェスチョンマーク)+ 1(Ok, Cancel) = 33となります。以下に値の一覧を示します。:
アイコン:
0 - アイコンなし
16 - 手(訳注:×マーク
32 - クェスチョン(訳注:?マーク)
48 - エクスクラメーション(訳注:!マーク)
64 - アスタリスク(訳注:iマーク)
ボタン:
0 - Ok
1 - Ok, キャンセル
2 - 中止, 再試行, 無視
3 - はい, いいえ, キャンセル
4 - はい, いいえ
5 - 再試行,キャンセル
OraperlはDBD::Oracle上のエミュレーションレイヤとして利用されます。 OraperlはDBD::Oracleディストリビューションに付属しています。 DBIインターフェースがどんどん進展しているのに対し、OraperlエミュレーションのAPIはかなり安定しているので、後者の方がお勧めです。
DBD::OracleをWindows NTでビルドできるようにするパッチが出ています。 詳しい情報は以下にあります。:
http://www.hermetica.com/technologia/perl/DBI/win32/index.html
DBI及びDBD::Oracleのバイナリディストリビューションは下記で入手できます。
http://www.access.digex.net/~jurlwin/
標準ライブラリの他に、Perl for Win32と一緒にディストリビュートされているWin32特有のモジュールが何点かあります。 含まれているのは以下の通りです。:
以下は、Win32modドキュメントに記述されているものです。つまり、Win32パッケージに組み込まれているサブルーチンも数多くあるということです。:
Win32モジュールから取り除かれたもの:
Perl for Win32用のモジュールは、世界中でミラーリングされてるCPAN(Comprehensive Perl Archive Network)というperlのアーカイブにあります。 一番近いミラーリングサイトを見つけるには、以下のURLをチェックしてください。:
http://www.perl.com/perl/CPAN/modules/by-module/Win32/
(ここにアクセスすると、自動的に一番近いミラーリングサイトへ連れていってくれます。クールでしょう。)
GDはWin32でも動くようになっており、PPM(Perl Package Manager)を使ってインストールすることができます。 また、GDはPerl Resource Kit for Win32にも同梱されています。 このグラフィクスライブラリを使うと、業界標準のGIFフォーマットイメージの生成と操作を行うことができます。 (訳注:GIF生成の権利問題のため、現在のバージョンでは、GIFフォーマットイメージを生成するメソッドはなくなり、PNFフォーマットイメージを生成するメソッドに変更されています。)
CPANとはComprehansive Perl Achive Network(総合的な Perlアーカイブネット ワーク)の略で、Perlでプログラミングする際に使ってみたいと思うようなファイルが数多く収集・蓄積されています。オリジナルのアーカイブはフィンランド にありますが、それをミラーリングしているFTPサーバーが世界中にあります。
http://www.perl.com.にある CPANリダイレクターを使うと、“最も近い” CPANのミラーサイトに接続できます。次のURLはブラウザを一番近いCPANミラーサイトへリダイレクトします(自分の大陸上のもので、数ホップ離れた程度の所かもしれません)。:
http://www.perl.com/CPAN/
次のURL
http://www.perl.com/CPAN
は、関連情報を提示して自分でCPANミラーサイトを選択できるようになっています。
CPAN は、モジュールやスクリプト、またPerl for Win32ディストリビューションを見つけ出すのに適しています。詳しくは CPANのモジュールを使うにはどうすればよいのでしょうか?を参照してください。
一般的な話をすると、Microsoft Word, Microsoft Excel, Microsoft Access, WordPerfect, Lotus 1-2-3などのアプリケーションのファイルを 読んだり書いたりするようなライブラリモジュールはありません。
しかし、現在では主要なWindowsアプリケーションのほとんどがOLEオートメーションをサポートしています。 たとえば、Microsoft OfficeアプリケーションのOLEオートメーションサポートを使えば、それらのファイルフォーマット読み書きをすることができます。 OLEオートメーションに対するサポートについては、当該アプリケーションのドキュメントを参照して下さい。 詳しくは、PerlスクリプトからOLEオートメーションサーバを使う方法はありますか?を参照してください。
特殊なケースですが、Microsoft Access、FoxPro、dBase、Paradoxなど多くのデータベースのファイルは、ODBC(Open DataBase Connectivity)を使ってアクセスすることができます。 Perl for Win32でODBCを使う方法については、 Perlスクリプトからデータベースにアクセスするにはどうすればよいでしょうか?を参照してください。
この FAQ は、元々Evangelo Prodromou evangelo@endcontsw.comが作成し、保守していたものです。 現在、この文書は、O'Reilly社のBrian Jepson、ActiveState社のDavid GroveとDavid Dmytryshyn、RTO社のHenning Michael Møller-Nielsen、Kevin Meltzerが改訂・更新しています。
このFAQはパブリックドメインですが、使用する場合はオリジナルの作者について明示してください。
| Win32 FAQ |