プログラミング

PerlとC言語の連携

PerlからC言語のライブラリを呼び出すのは少々厄介でした。h2xsというツールを使ってテンプレートを生成した上で作成されたMakefileを使ってビルドするという手順になります。他の記事に倣ってシェル1本で書いたので,苦しい対処ですが,sedコマンドとcatコマンドでで生成されたテンプレートを編集しています。

#!/bin/bash

rm -rf Perl2C

h2xs -A -n Perl2C
source=Perl2C/Perl2C.xs

sed -i -e 's/^MODULE.*$/int add(int,int);\n\nMODULE = Perl2C    PACKAGE = Perl2C/g' $source 

cat << EOS >> $source
int
add(x, y) 
    int x
    int y
  CODE:
    RETVAL = x + y;
  OUTPUT:
    RETVAL
EOS

echo "========================================"
cat $source
echo "========================================"
cd Perl2C
perl Makefile.PL
make

cat << EOF > run.pl
use ExtUtils::testlib;
use Perl2C;
\$x = 1000;
\$y = 2000;
\$result = Perl2C::add(\$x, \$y);
print(\$x . " + "  . \$y . " = " . \$result . "\n\n");
EOF

perl run.pl
cd ..