本連載では第一線のPerlハッカーが回替わりで執筆していきます。今回のハッカーは上川慶さんで、
本稿のサンプルコードは、
Cを用いたPerl拡張入門
筆者たちPerl Mongerは先人たちが築き上げてきたモジュールを使いながらPerl製のプログラムを作成します。しかしながら、
Cを用いてPerlを拡張する理由
ではなぜ、
ホットスポットの改善
ホットスポットとは、
Perlゆえにパフォーマンスが落ちる処理について、
ライブラリとのCバインディング
たとえばある画像をPerlから簡単かつ高速に処理したい場合、
Cを用いてPerlを拡張する方法
Cを用いてPerlを拡張する方法は2つあります。一つは、
XSはCで作成した関数をPerlから呼び出すインタフェースとしての役割を持ちます。主にXSモジュールを作成するために用いられ、.xsファイルへ記述します。記述したCの関数をPerlで呼び出すために、.pmファイル内で利用してCの関数をロードします。
Inline::CはPerlでCを記述するために利用されるモジュールです。そのためXSとは対照的にモジュール化を必要とせず、
本稿ではXSモジュールを作成するための準備として、
Perlの内部で扱われる型の世界
Cで拡張するために避けて通れないのが型の世界です。なぜなら、
たとえばPerl上でよく表現されるデータタイプとしてスカラがあります。スカラは次のように表現されるものです。
my $i = 10;
my $s = "Hello, World";Perlの内部でスカラは、
必要最小限の基本型を理解する
Cを用いてPerlを拡張するために最小限に理解しておいたほうがよい型が、
また、
IV──符号付き整数の型
IV
my $iv = 10;
my $iv2 = -10;UV──符号なし整数の型
UV
my $uv = 1;NV──倍精度の型
NV
my $nv = 3.333;PV──文字列の型
PV
my $pv = "Hello, World";SVとプリミティブな値
SVからプリミティブな値を取得するには、
/* SV* sv = ...; */
IV iv = SvIV(sv);
UV uv = SvUV(sv);
NV nv = SvNV(sv);
PV pv = SvPV_nolen(sv);プリミティブな値を表すSVを作成したい場合は、
SV* sviv = newSViv(12);
SV* svuv = newSVuv(3);
SV* svnv = newSVnv(3.14);
SV* svpv = newSVpv("hello", 0);これらの操作を覚えておくことで、
<続きの
本誌最新号をチェック!
WEB+DB PRESS Vol.130
2022年8月24日発売
B5判/168ページ
定価1,628円
(本体1,480円+税10%)
ISBN978-4-297-13000-8
- 特集1
 イミュータブルデータモデルで始める
 実践データモデリング
 業務の複雑さをシンプルに表現!
- 特集2
 いまはじめるFlutter
 iOS/Android両対応アプリを開発してみよう
- 特集3
 作って学ぶWeb3
 ブロックチェーン、スマートコントラクト、NFT


