nDiki : h2xs
h2xs
C言語のヘッダファイルから Perl モジュール(のスケルトン)を生成するツール。 pure Perl なモジュールの作成時にも使用できる。
Pure Perl モジュールのスケルトンを作成する
Foo というモジュールを作成する場合、以下のコマンドを実行する。
h2xs -AX -n Foo
h2xs 1.23 (Perl v5.8.8 付属)の場合以下のようなファイルが作成される。
Foo/lib/Foo.pm Foo/Makefile.PL Foo/README Foo/t/Foo.t Foo/Changes Foo/MANIFEST
Pure Perl モジュールのスケルトンを作成する (オブジェクト指向インタフェース)
オブジェクト指向的なモジュールなどで、シンボルを export する必要がない場合は --skip-exporter オプションを指定しておくと、余計なコードがスエルトンに含まれないようになる。
h2xs -AX --skip-exporter Foo
古い Perl に対応した pure Perl モジュールのスケルトンを作成する
h2xs -AX -b 5.005.03 -n Foo
のように互換性を維持したいバージョンを -b オプションで指定することが可能である。 v5.6.0 より前を指定すると 'our' や 'use warnings' を使わないようなスケルトンを生成してくれる (h2xs 1.23)。
Pure Perl モジュールのスケルトンを作成する (ネストしたパッケージ名)
h2xs -AX -n Foo::Bar
とすると h2xs 1.23 の場合 Foo-Bar というディレクトリが作成され、その中にスケルトンが作成される (h2xs -AX -n Foo-Bar とはしない)。
Foo-Bar/lib/Foo/Bar.pm Foo-Bar/Makefile.PL Foo-Bar/README Foo-Bar/t/Foo-Bar.t Foo-Bar/Changes Foo-Bar/MANIFEST
*.pm を置く場所
h2xs -AX -b 5.005.03 -n Foo::Bar
として Foo::Bar モジュールのスケルトンを作成した場合、ソースディレクトリにある各 .pm は以下のようなモジュールであるとして扱われる (Makefile.PL があるディレクトリをカレントディレクトリとして)。
- ./Bar.pm -> Foo/Bar.pm ( $(INST_LIBDIR)/Bar.pm )
- ./A.pm -> Foo/A.pm ( $(INST_LIBDIR)/A.pm )
- ./Bar/B.pm -> Foo/Bar/B.pm ( $(INST_LIBDIR)/Bar/B.pm )
- ./lib/Foo/C.pm -> Foo/C.pm ( $(INST_LIB)/C.pm )
lib サブディレクトリに置く
配布アーカイブのトップディレクトリに *.pm を置きたくない場合は、lib サブディレクトリの下に置く(その際は Foo ディレクトリから作成する必要がある)。
Makefile.PL と同じ階層に置く
配布アーカイブのトップディレクトリに *.pm を置いてもよい場合は、Foo の下のモジュールは Makefile.PL と同じ場所に、Foo::Bar パッケージの下のモジュールは Barサブディレクトリを作成しそこに置く。
(PMLIBDIRS, BASEEXT, init_dirscan(), libscan(), 参照)
スポンサード リンク
Related term
インストール blib PPM::Make CGI.pm Template Toolkit 標準 Perl ライブラリ バージョン番号 File::Spec Module::Build Perl テストスクリプトの書き方 Module::Install Term::ProgressBar sid Locale::Maketext 実行可能ファイル Module::CoreList Devel::Cover PAR リポジトリ 検索 PAR::Repository Tie::File Build.PL IPC::ShareLite Perl で XML Palm::Progect Palm Debian GNU/Linux テストファースト開発 命名規則 開発
2004年10月16日 (土)
■ Template Toolkit のテンプレート上で対話的入力

ちょっとしたプログラムパッケージや LaTeX ドキュメントを作成する時に、Makefile やその他ファイルのスケルトンをまとめて生成する算段を検討中。 例えば Perl の h2xs のような感じ。
基本的には Template Toolkit ベースでいってみたい。 ttree あたりを使えばだいたいできそうだ。 ここで --define var=value で全て間違えずに指定するのは大変になってくるだろう。 ということでテンプレート変数定義をまとめたテンプレートファイルを作成し、各テンプレート処理をする際にプリプロセスするようにする。
でこのテンプレート変数定義のテンプレートファイルは対話的に作成できるようにしたい。 テンプレートファイルのテンプレートファイルを処理して。
で対話的入力の方法なのだが、探してもそのようなディレクティブもプラグインもみつからない。ありそうなもんだけどなぁ。
しょうがないので、PERL ディレクィブ内で Term::ReadLineを使って入力。 こんな感じ。
[% TAGS [- -] -%]
[- PERL -]
use Term::ReadLine;
my $term = new Term::ReadLine('template');
$stash->set('readline' => sub {
my $prompt = shift || 'input:';
my $text = $term->readline($prompt);
if (defined $text) {
$term->addhistory($text);
}
return $text;
});
[- END --]
[% project.name = '[- readline('project name:') -]' -%]
[% project.author = '[- readline('author:') -]' -%]
tpage でこのテンプレートファイルを処理すると、対話的に値を入力しながらテンプレートファイルを生成できる。 実際は文字列のエスケープなどもうちょっと工夫が必要。
ちなみに Debian GNU/Linux sid の libtemplate-perl は 2.10-1 で、このバージョンの Template Toolkit の tpage だと EVAL_PERL が有効になっておらずうまく動かない。 手元にコピーして Template オブジェクトの初期化部分に EVAL_PERL => 1 を追加する必要あり (2.14 の tpage は --eval_perl オプションで有効にできる)。
- Twitter ベイジアンフィルタプロキシ (2007-12-29)
- reStructuredText いいんじゃない? (2005-11-22)
- sid の CinePaint がプラグイン読み込みでエラー (2006-04-15)
- Twitter への書き込みを自動的に Skype ムードメッセージに設定する (2008-02-25)
- ColdSync (2004-05-05)
2004年10月17日 (日)
■ ExtUtils::ModuleMaker

Perl モジュールのスケルトンを生成するためのモジュール。 h2xs と同じ目的で使うもの。 modulemaker というスクリプトが付属していて、実行すると対話的に項目を設定した後、スケルトンを生成することができる。
h2xs よりはいろいろ項目を設定してスケルトンを生成できる。 h2xs よりは良いがカスタマイズはあまりできなさそう。
直接これを使うためというよりか、ExtUtils::ModuleMaker::TTを使ってみるためにインストール。
- ExtUtils::ModuleMaker::TT (2004-10-17)
- ActivePerl で Ming (2005-02-23)
- Template Toolkit + PAR (2004-09-13)
- bundle を作成して Perl モジュールをまとめてインストール。 (2004-10-21)
- Module::Build でソースパッケージング (2005-08-24)
2006年12月15日 (金)
■ Perl スクリプトを PAR ファイルにして PAR リポジトリに登録する

PAR リポジトリから Perl モジュールをネットワーク配信するためには、以下の手順で PAR ファイルを作成する。
perl Makefile.PL make make test perl -MPAR::Dist -e blib_to_par
blib ディレクトリ以下のファイルもとに PAR ファイルが作成されるので、でき上がった PAR ファイルを リポジトリに登録すれば良い(PAR::Repository でビルド済み Perl モジュールをネットワーク配信)。
ではちょっとした Perl スクリプトを PAR リポジトリからロードして使えるようにするにはどうすればよいか。もちろん h2xs などで一式そろえ make して blib ツリーを作るようにすればいいが、たった 1 つのスクリプトファイルだけの時などは大袈裟だ。
この場合は pp でいける。
echo 'print "hello world!"' > myscript.pl pp -o myscript.par -p myscript.pl parrepo inject -r /tmp/PAR myscript.par -v 1.00 \ -a MSWin32-x86-multi-thread -p 5.8.8 \ --any-arch --any-version
スクリプトのメタデータがないので、parrepo に登録する際に明示的にオプションで指定してあげる必要がある。
- -v
- プログラムのバージョン番号
- -a
- アーキテクチャ
- -p
- Perl のバージョン
- --any-arch
- アーキテクチャ非依存で動くならば指定しておく
- --any-version
- 任意の Perl のバージョンで動くならば指定しておく。
PAR ファイル(にした Perl スクリプト)が --any-arch で --any-version であっても、-a と -p は必須だ (PAR::Repository の中にアーキテクチャ/バージョンつきで登録された上でシンボリックリンクの形で any 扱いにされるため)。
これで PAR リポジトリからスクリプトを実行できるようになる。 スクリプトの更新もリポジトリ側で行うだけで良くなる。
perl -e "use PAR { repository => 'http://www.example.com/PAR/',
run => 'myscript.pl'}"
お好みで実行形式ファイルにしておけば Perl をインストールすることなく実行できるようになるので便利。
pp -o myscript.exe -M PAR::Repository::Client \
-e "use PAR { repository => 'http://www.example.com/PAR/',
run => 'myscript.pl'}"
ちなみに PAR リポジトリを使わずに、直接 PAR ファイルを指定して実行できることもできる。
perl -e "use PAR { file => 'http://www.example.com/myscript.par', \
run => 'myscript.pl' }
ちょっとした用途ではこちらでも良いけれど、アーキテクチャ別の管理やらモジュールの管理やらを考えると PAR リポジトリを作ってしまった方が楽。
- PAR::Repository でビルド済み Perl モジュールをネット... (2006-12-12)
- Module::Build でソースパッケージング (2005-08-24)
- 「依存関係検査のしにくいモジュール」に依存するスクリプトをPARで実行形式化する (2005-03-08)
- 野良パッケージと依存 Perl モジュールのインストールセット をCPAN... (2006-02-11)
- PostgreSQL を使いはじめる (1999-12-17)
スポンサード リンク
■よく検索されるキーワード
perl(62) torrent(54) linux(48) 提案書(47) windows(43) 書き方(41) 使い方(29) アジェンダ(26) x31(25) 充電式カイロ(25) cvs(22) インストール(20) サンプル(20) thinkpad(19) アジェンダとは(19) f-01a(18) wiki(17) c#(16) 感想(16) カイロ(16) usb(16) java(16) 秋葉原(15) debian(15) ヨドバシカメラ(15) subversion(15) 壁紙(15) 作り方(15) 静電気(14) apache(14) グッズ(14) デロンギ(13) フリー(13) sh-01a(13) ganttproject(13) 修理(13) ssh(12) svn(12) ヨドバシ(12) truecrypt(12) ダイソー(11) 手帳(11) activeperl(11) ubuntu(11) ほぼ日手帳(11) firefox(10) mew(10) mp980(10) ドラマ(10) 日本語(10) n-01a(10) google(10) tc-1(10) 評判(10) ツール(10) djunit(9) cgi(9) 動画(9) mp3(9) オイルヒーター(9) docomo(9) rcs(9) 除去(9) centos(9) メモリ(9) エネループ(9) 設定(9) p-01a(9) tortoisesvn(9) 無印(8) ケース(8) 口コミ(8) ミノルタ(8) メール(8) インストーラ(8) 会議(8) xampp(8) 加湿器(8) af(7) 値段(7)■注目キーワード
購入 買った 発売日 フリー 無料 価格 値段 作り方 選び方 使い方 方法 設定 サンプル ダウンロード 限定 在庫 予約 穴場 比較 検証 レビュー 感想 評価 評判 使用感 使ってみた 口コミ 噂 最新 MP3 動画 意味 お薦め お勧め おすすめ 便利 Blog ブログ mixi 修理 デザインProcess Time: 15.294313s / load averages: 0.32, 0.20, 0.16
nDiki by WATANABE Yoshimasa (profile)
Powered by DiKicker
Base theme by Nana (for tDiary)



スポンサード リンク