LoginSignup
39
36

More than 5 years have passed since last update.

SwiftでPerl

Last updated at Posted at 2014-07-12

むしゃくしゃしてやった。後悔はしてないけど公開はした。

Install

Yosemite DP3 + Xcode6-beta3 で動きます。

% git clone https://github.com/dankogai/swift-perl.git
% open swift-perl/swiftperl.xcodeproj

あとはmain.swiftを適当にいじって遊んでね。

Synopsis

こんな感じで使えます

Perl.sysInit()

func run(script:String) {
    let pl = Perl()
    let sv = pl.eval(script)
    println("eval \"\(script)\"")
    if !pl.evalok {
        println(" err:   \(pl.errstr)")
    } else {
        println("  !!:   \(sv.asBool)")
        println("  int:  \(sv.asInt)")
        println("  +0.0: \(sv.asDouble)")
        println("  q{}.: \(sv.asString)")
    }
}
run("reverse q(rekcaH lreP rehtonA tsuJ)")
run("atan2(0,-1)")
run("q{0 but true}")
run("my @a = (0,1,2,3)")
run("my %h = (zero => 0, one => 1)")
run("sub{ @_ }")
run("phpinfo()")

let pl = Perl()
pl.eval("our $swift = q(0.0 but rocks)")
println(pl.$("swift"))
println(pl.$("swift")?.asBool)
println(pl.$("swift")?.asDouble)
println(pl.$("objC"))
pl.eval("use Data::Dumper")
println(pl.eval("Dumper(\\%ENV)"))

Perl.sysTerm()

Making thereof

コード部分は楽勝でした。

に素直に従っただけ。むしろ大変だったのはXcodeの設定の方ですが、これも基本的にサーチパスとリンカーオプションを perlembed に従って設定するだけでした。

PerlでJavaScript」のJavaScriptCoreを使った事例と異なり、現状ではシングルインスタンスです。一応initとdeinitは繰り返しできるようにはしているので、スコープごとにcontextは新鮮にはなります。

なお、ここで利用しているPerlは、Yosemite DP3付属のものです。実際に組み込んで利用する場合はPerl自体をプロジェクトに同封するなりするようにした方がいいと思います。

これでYAPC::Asia::2014トークもばっちこい…ん、まてよ、まだ採択されたと決まったわけじゃないよな。というわけで、動くの見たいかたはソーシャルメディアで(リツイート|いいね|ブクマ)などして下さると幸いです。

Enjoy!

Dan the Swift Perl Hacker

39
36
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
39
36