XSでprintfするだけ

XSってなんか難しそうと思っていたけど、わりと簡単だった。
Windows 7 64bit + Strawberry Perl 5.12.3.0
printfするだけなので実用性はないけども、
引数を受け取って処理できるようになってくると、捗りそう。
CODE部分はC言語でもりもり書けますし。

Hello.pl

#!/usr/local/bin/perl
use strict;
use warnings;

use lib('./Hello/lib', './Hello/blib/arch/auto/Hello');
use Hello;

Hello::world();

Hello.xs

#include "EXTERN.h"
#include "perl.h"
#include "XSUB.h"
#include <stdio.h>

MODULE = Hello		PACKAGE = Hello
	
int
world()
CODE:
        RETVAL = printf("Hello World");
OUTPUT:
        RETVAL

Hello.bat

@echo off
rmdir /S /Q Hello
cmd /c h2xs -b 5.8.8 -A -n Hello
copy /Y Hello.xs Hello
cd Hello
perl Makefile.PL
dmake
cd ../
perl Hello.pl


当然だけど、Linuxでも同じコードで動く。

Hello.sh

#!/bin/sh
rm -rf Hello
h2xs -b 5.8.8 -A -n Hello
cp -f Hello.xs Hello
cd Hello
perl Makefile.PL
make
cd ../
perl Hello.pl