タグ

ブックマーク / pub.ne.jp (3)

  • wakaponさんの超☆Perl備忘帳: XS xsubpp Dynaloader MakeMaker typemap

    XSをまったく使ったことが無かったので試してみることにした。XSUBをPerlに組込むわけではないので、xsubppで出力した結果(XSUB)を見ながらにやにやするにとどまる。 まずは、MODULE、PACKAGE、PROTOTYPE、INPUT、PREINIT、CODEから。今回は引数スタックをPPしないので、ただのCODE。以下に試したXSを示す。 hoge.xs MODULE = HOGE   PACKAGE = HOGE char * hoge_hello (num) PROTOTYPE:$ INPUT:    int num; PREINIT:    int i;    static char *no = "no";    static char *ok = "ok"; CODE:    if (num < 0)    { RETVAL = no; }    else    {

  • wakaponさんの超☆Perl備忘帳: スタッシュ(シンボルテーブル)と型グロブ(変数管理テーブル)

    に立ち返りんぐ。Perlは変数シンボルテーブルがプログラマに開放されているので、いつのまにかわけわかめなスカラや配列やらハッシュやらメソッドが埋め込まれている場合がある。そのような場合でなくても、もともとPerlの仕様としていくつかのサブルーチンが埋め込まれている場合がある。そういったものを目で確認するというのが今回のめもめも。 利用するモジュールは、Data::DumperとDevel::Peekモジュール。いずれもバージョン5.10.0に標準でインストールされている。 まずは以下のようなパッケージHOGE.pmを用意する。 HOGE.pm package HOGE; our $huga = 2; our @huga = (1 .. 10); our %huga = (1 => 2); sub huga { return 'huga'; } open (huga, '<', 'hug

    antipop
    antipop 2008/10/16
  • wakaponさんの超☆Perl備忘帳: DynaLoader.pm XSLoader.pm newXS

    DynaLoader.pmとXSLoader.pmまわりのお話.動作の仕方や,両者の違いなどを見ていく.参考にしたのはperl5.10.0のソースツリー. 1. XSUBとnewXS DynaLoaderの質はXSUBなので,まずはそのあたりから見ていく.XSUBを使ったモジュール(=Pure-Perlじゃないモジュール)を作成するときには,DynaLoader.pmやXSLoader.pmを使う.例えばthreads.pmの場合,冒頭に以下のような記述がある. # Load the XS code require XSLoader; XSLoader::load('threads', $XS_VERSION); これでXSUB(単にCのサブルーチン; XSコード)をPerl処理系に組込んだことになる.この「組込む」という工程には,newXSが使われる.例えばthreads->creat

  • 1