これらのモジュールはあるがまま(AS-IS)の状態で配布されていて、 必ず動作するという保証もありません。 こういったモジュールが動作しない理由は幾つかあります。
そういったモジュールを自分で修正しようとすることも、すでに誰かが なおしたかどうかを確認することもできます。 質問 5.8 を参照してください。
See 質問 9.1.
However, if you make a change to a CPAN module
that makes it work on Perl for Win32, you have a better chance of
getting the author to change the module than you do of getting a
change in the standard library.
CPANにあるモジュールの多くがビルドとインストールのために
Makemakerというユーティリティを使っていることに注意してください。
MakeMakerはPerl for Win32に移植されていませんから、あなたは通常は
モジュールファイルをライブラリディレクトリにコピーするという作業を
手作業で行わなければなりません。サブディレクトリ構造を保持することを
忘れないようにしてください。
Perl for Win32からデータベースにアクセスするために開発されたエクステン
ションが幾つかあります。Win32::ODBCは広く知られていて、CPANや
以下に示すURLから入手できます。
別のモジュール、ODBCTableはODBCのテーブルとperlのハッシュとを結び付け、
テーブルをハッシュと全く同じように使えるようにします。これは
以下に示すURLで入手できます。
http://www.endcontsw.com/sampledownload.htm
どちらを使うかはあなたのお好みしだいです。どちらのモジュールを
使うにしろ、ODBC(Open DataBase Connectivity)のドライバがなければ
ならないということに注意してください。
ODBCに関するより詳しい情報や、データベースの構築の方法は
コントロールパネルにあるODBCアプレットをチェックしてください。
Microsoft Accessや Microsoft SQL serverのような一部のデータベース
システムでは、OLEオートメーション
(質問 9.4を参照)
を通じて制御することもできます。
詳細は製品のマニュアルを参照してください。
あります。Perl for Win32のドキュメントにあるoleautoのページを
みればすべてが載っています。
あなたがperlをインストールしたディレクトリのegというサブディレクトリ
には、Perl for Win32を使って
Microsoft Excelにアクセスする例が二つあります。
これはOLEオートメーションのみであって、埋め込みドキュメント(embed document)
やドラッグアンドドロップのようなものを提供する他のOLEの機能を
使うことはできないことに注意してください。また、OLEコードの
バグのためにDLLとして実装されているOLEサーバー
(これらはCLSCTX_SERVERではなくCLSCTX_LOCAL_SERVERを使って
CoCreateInitializeを実行している)を使うことが
できないということにも注意してください。
これはOLEコントロール(OCX)やデータアクセスオブジェクトライブラリを
使えない、ということです。配布されているソースコードを入手して
上で述べたことがら(ntole.cppの321行目)を修正することもできるでしょう
が、それはテストされていないことですから、やる場合にはあなた自身の
責任において行ってください。
あるともいえますし、ないともいえます。
質問 9.4を参照して
ください。
現在のところ、Perlスクリプトから直接MAPIにアクセスする方法は
ありません。単純なMAPIエクステンションのためのPerlエクステンションが
作業中です。
[これって本当? どこかにMAPIエクステンションがあったりしない? -ESP]
OLEオートメーションを使ってメイルプログラムを制御することが
できるかもしれません(質問 9.4を参照)。
Microsoft ExchangeはOLE オートメーションが使えるとのことです。
今のところお薦めの方法は、Windows NT リソースキットにある
BLATと呼ばれるプログラムを使うことです。これはファイルを
受取人(recipent)に送るコマンドラインプログラムです。
質問 4.7を参照
ソケットを使ってメイルを送るperlスクリプトも幾つかあります。
幾つかの例はRobin ChatterjeeのWebページにあります
(質問 3.4を参照)。
はい、あります。SDBM_FileはDBMのフリーなクローンであり、
Perl for Win32に実装されています。そして、Perl for Win32
の配布パッケージと一緒に配布されています。あなたはこれを
以下のようにして使うことができます。
マイクロソフトによって定義されている proprietary flagである
O_BINARYフラグを使わなければならないことに注意して下さい。
DBMファイルは“バイナリ”であり、UNIXとWin32ではその意味するところが
大きく異なります。
DBMファイルを結び付け(tie)てしまえば、後はハッシュテーブルと
同じように使うことができます。
いいえ、ありません。s/GDBM/SDBM/gとして、GDBMを使っているところを
SDBMを使うようにスクリプトを変更することはできますが、
DBMファイルとGDBMファイルとでは互換性がありません。このため
あなたは変換の類のことをやらなければならないでしょう。
まだありません。
TKライブラリがWin32環境に移植されてはいますが、私たちはここで
PerlTKの移植を期待したほうが良いでしょう。もしあなたがそれを
必要としているのなら、あなた自身が移植するのが良いかもしれません。
これに関する情報は、CPANにあるPerl/Tkの配布パッケージで得ることが
できるでしょう。
一部のPerlプログラマーに対するもう一つの選択肢は、
Visual Basicに対する GUIのフロントエンドを開発して、OLEオートメーション
を使ってそれを制御するというものです。
現時点ではありません。けれども、ODBCモジュールのどれかを使って
Oracleデータベースに接続することができます。
詳しくは質問 8.3 を
参照してください。
標準ライブラリファイルと一緒に、Win32特有のモジュールが幾つか
Perl for Win32と共に配布されています。
これらは Win32modというドキュメントで説明されています。また、
Win32パッケージのためのsubs builtがあります。
[Can anyone straighten me out on some of these? -ESP]
perlに対するWin32エクステンションに関するより詳しい情報は
Philippe LeBerreのページ
(http://www.inforoute.cgs.fr/leberre1/)
で見つけられます。
Perl for Win32用のモジュールはCPAN(Comprehensive Perl Archive Network)
という世界中にミラーリングされてるperlのアーカイブで見つけられます。
あなたの身近にあるミラーリングサイトを見つけるには、以下のURLを
チェックしてください。
http://www.perl.com/perl/CPAN/modules/by-module/Win32/
( ここをアクセスすると、魔法のように(automagically)一番近いミラーリングサイト
へ連れてってくれるんだ。すごいよね、そうだろ?)
幾つかのモジュールがActiveWareのftpサーバーにありますが、これらは
ほとんど保守されていません。
ftp://ftp.activeware.com/contrib/
あります。GDを移植した Win32GDが以下に示すURLから入手できます。
ftp://ftp.activeware.com/contrib/Win32GD_v960527.zip
[誰かこれ使ってる? -ESP]
Fcntlモジュール(ファイルコントロールフラグのためのもの)はPerl for Win32
のバイナリ配布パッケージには含まれていません。ソース配布パッケージを
入手して、自分でFcntlモジュールをビルドする必要があります。
さらに、モジュール手続きを組み立てるFcntl.pllをサポートするための
Fcntl.pmがありません。あなたは自分用のFcntl.pmを作る必要が
ありますが、これはAutoloaderを使っているので困難なことです。
Win32::NetResouceモジュールはPerl for Win32のバイナリ配布パッケージに
は含まれていません。ソース配布パッケージを入手して、自分で
ビルドする必要があります(質問 1.6参照)。
Win32::NetResourceモジュールは他のすべてのWin32モジュールと共に
ビルドされているのではないということに注意してください
[多分これは、バイナリ配布に入れるのを忘れたんだろうね... -ESP]。
あなたはプロジェクトを開いて、別個にビルドする必要があります。
[Thanks to Dave Wolfe (dwolfe@risc.sps.mot.com) for this answer. -ESP]
File::Findはディレクトリ構造を再帰的にたどるPerl5のモジュールで、
Perl 4での find.plやfinddepth.plと同じ働きをするものです。これは
Perl for Win32環境に既に対応しています。
Cwdが作業ディレクトリを切り替えるのに使われています。
ビルド100と一緒に配布されているFile::Findには
宣言されている変数($dont_use_nlink, $prune, $name, $dir)
や呼び出されている他のパッケージとのやりとりで幾つかの問題があります。
File::Findはまたディレクトリ構造のどこにいるのかを決めるために
statコマンドの返す値を使っています。これはMS のファイルシステムが
ファイルの検査(identify)のためにinodeやリンクというコンセプトを
使っていないので、ディレクトリの“リンクの数”フィールド(nlinks)は
何の意味もありません。最新のFind.pmではConfig.pmのOS名を
nlinkを使うかどうかを使うかどうか決めるのに使っています。
結局、File::Findは不完全なCwd.pmに依存しているのです。
ビルド110では、以下の手順に従うことでFi;;:FindとCwdをきちんと動作する
ようにできます。
ビルド300以降の Perl for Win32ではFile::FindとCwdに関するエラーは
正しいことに注意してください。
CPANとはComprehansive Perl Achive Network(総合的な Perl アーカイブネット
ワーク)の略で、あなたがPerl でプログラミングするに当たって欲しくなるよう
なファイルがたくさん集められています。オリジナルのアーカイブはフィンランド
にありますが、それをミラーリングしているFTPサーバーが世界中にあります。
www.perl.comにある CPANリダイレクターを使って、“最も近い”
CPANのミラーサイトに接続できます。
このURLはあなたのブラウザを最も近くにあるCPANミラーサイト
へ接続してくれるでしょう(one on your continent and maybe only a few hops away)。
このURLでは、多少の情報を提示してCPANミラーサイトをあなた自身に
選択させます。
CPAN は モジュールやスクリプトを探すのと同様に、Perl for Win32の配布
パッケージを探すにもよいところです。詳しくは
質問 9.2を読んでください。
一般的な話をすると、Microsoft Word, Microsoft Excel, Microsoft Access,
WordPerfect, Lotus 1-2-3などといったアプリケーションのファイルを
読んだり書いたりするようなライブラリモジュールはありません。
しかし、現在では主要なWindowsアプリケーションのほとんどがOLEオートメーション
をサポートしています。あなたはMicrosoft Officeアプリケーションの
OLEオートメーションサポートを使って、アプリケーションのファイルの読み書き
をすることができます。あなたが使っているアプリケーションの
OLEオートメーションに対するサポートについては、アプリケーションの
ドキュメントを参照して下さい。
Perl for Win32でOLEオートメーションを使う方法については
質問 9.4
を参照してください。
特別な例としては、Microsoft Access, FoxPro, dBase, Paradoxといった
多くのデータベースのファイルは、ODBC(Open DataBase Connectivity)を
使ってアクセスすることが可能です。
Perl for Win32でODBCを使う方法の詳細は
質問 9.3
を参照してください。
ホームページへ戻る。
9.2. CPANから取ってきた私のperl5/Libディレクトリのスクリプト/モジュールの
多くが動きません。どうしてでしょうか?
9.3. 私のPerlスクリプトからデータベースにアクセスするには
どうしたらいいのでしょうか?
9.4. 私のPerlスクリプトからOLE オートメーションを使う方法はあるのでしょうか?
9.5. 私のPerlスクリプトからData Access Objects (DAO)にアクセスする方法は
あるのでしょうか
9.6. 私のPerlスクリプトからMAPIにアクセスする方法はあるのでしょうか?
9.7. 私のPerlスクリプトからSMTP (インターネット)メールを送信するには
どうしたらいいのでしょうか?
9.8. Perl for Win32向けに利用できるDBM の実装はあるのでしょうか?
use SDBM_File;
# use Fcntl; #これはだめ! 質問 9.15参照
sub O_CREAT { 0x0100 }
sub O_BINARY { 0x8000 }
sub O_RDWR { 0x0002 }
tie( %myhash, "SDBM_File", 'myfile', O_RDWR | O_CREAT | O_BINARY,
0666 )
or die( "Can't tie: $!" );
$myhash{"bibim"} = "bap";
untie( %myhash );
9.9. Perl for Win32向けに利用できるGDBM の実装はあるのでしょうか?
9.10. Perl for Win32でGUI プログラミングをする方法はあるのでしょうか?
9.11. Win32用oraperlのポート(移植)はあるのでしょうか?
9.12. Perl for Win32の配布セットにはどんなモジュールが付いてくるのでしょうか?
9.13. Perl for Win32向けの他のモジュールはどこで見つけられるでしょうか?
9.14. Perl for Win32向けに利用できるGDモジュールはあるのでしょうか?
9.15. どうしてFcntl は動かないのでしょうか?
9.16.
どうしてWin32::NetResourceは動かないのでしょうか?
9.17. どうしてFile::Find あるいは Cwdは動かないのでしょうか?
elsif ($osname eq 'MSWin32') {
*cwd = \&_NT_cwd;
*getcwd = \&_NT_cwd;
# BEGIN ADDITION: Cwd.pm, line 250
*fastcwd = \&_NT_cwd;
# END ADDITION
*fastgetcwd = \&_NT_cwd;
}
9.18. CPANとは何ですか、それを利用するにはどうすればいいのですか?
9.19. Microsoft Officeあるいは他のアプリケーションファイルを読み書きする
ライブラリはあるのですか?
ご意見、ご要望は、
電子メールまたは
投稿にお願い致します。