Your SlideShare is downloading. ×
node-perl
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

node-perl

753
views

Published on

Published in: Technology

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
753
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. node.jsでperl - Hachioji.pm #2 LT⽤資料 で ⽤資料名前 Hideaki Ohno Twitter: @hide_o_55 はてな: id:hide_o_55作った物 node-perl 今話題のnode.js node.jsにperlインタプリタを組み込む node.jsで何か作りたい→node.jsのaddonはC++で作れる。→ C++ということはCの ライブラリも使える→perlインタプリタもCだから組み込める!!! という極めて⾃然な流れで作成を決意 最初は node::ObjectWrapを継承した同期I/Oで作成→せっかくnode.jsなんだか らEvented I/Oじゃなきゃ node::EventEmitter を継承して、EIOスレッドを使⽤した⾮同期I/Oができるよ うに ふつうにperl_run()してしまうとperlの標準出⼒/標準エラー出⼒がそのまま画⾯(コ ンソールから実⾏した場合)に出⼒されてしまう コールバックで渡すためにperlの標準出⼒/標準エラー出⼒を変数に⼊れないと いけない PerlIO レイヤで細⼯をして標準出⼒/標準エラー出⼒をキャプチャ使⽤⽅法#!/usr/bin/env nodevar Perl = require(perl).Perl;new perl = new Perl();perl.Run({ opts : ["-Mfeature=say","-e","say Hello World"]}, function(out,err){ console.log(out);//Hello World});JavaScriptオブジェクトで引数を渡して、コールバックで結果を受ける課題 perl_parse()の段階の出⼒をキャプチャできてない(BEGIN,INIT,CHECKフェーズ) EIOスレッドだと不安定(うまいことスレッドセーフにしないといけない) インタプリタの永続化 いまの状態だとchild_process.spawn(perl -e )と変わらないまとめ node.jsのアドオン作成は決まり事さえ把握してれば簡単に作れる うまいことnode.jsにperlを組み込めれば既存のperlモジュールを利⽤して結果をJSONで受 け取ってevalするとか、いろいろできるかも参考 node-perl https://github.com/hideo55/node-perl