つくっちゃいました。
まずはこれをご覧ください。
使い方
JS側はこんなです。
runJSON = function(name, func, perl, dp){
if (! this['JSONP']) JSONP = {};
JSONP[name] = func;
(function(d, uri){
var s = d.createElement('script');
s.charset = 'UTF-8';
s.src = uri + '&s=' + encodeURIComponent(perl);
if (dp) s.src += '&dp=1';
s.id = s.src;
d.body.appendChild(s);
})(document, 'http://api.dan.co.jp/perleval.cgi?c=JSONP.' + name, perl, dp);
};
perlEval = function(src, dst, dp){
var d = document;
runJSON('perl', function(json){
dst.innerHTML = '';
if (1 /*@cc_on -1@*/){
dst.appendChild(d.createTextNode(json.error || json.result));
}else{
dst.innerText = json.error || json.result;
}
}, src.value, dp);
};
注意点
それでサーバー側なのですが、以下のようにしています。
- URIは
http://api.dan.co.jp/perleval.cgi?c=callback&s=perl_source
- perlは現時点で5.8.9です。他のAPIで使っているのと一緒です。
- api.dan.co.jpにモジュールがインストールされれれば、それが利用できます。上記の例を見てのとおり、標準以外のものも使えます。
- ファイルシステムの読み書きはできません。適宜
DATAを利用してください。 - 実行時間は一秒以内に抑える必要があります。さもないとtimeoutします。
timeout reached.
- サブプロセスは使えません。
'fork' trapped by operation mask at - line 1.
きっかけは、Codepadへの不満。PerlのVersionが5.8.0と古すぎる上、HTMLベースだと再利用がちょっと大変。というわけで別の車輪を再発明したわけです。上のサンプルを見てのとおり、perlの範囲内であればcodepadより自由な環境が楽しめます。
無保証です。サービス期間だけではなく、どんなモジュールが使えるかまで含めて。その代わりご自由にお使いになれます。いろいろ試してみてください。Enjoy!
Dan the Perl Monger
このブログにコメントするにはログインが必要です。
さんログアウト
この記事には許可ユーザしかコメントができません。