2011年4月20日水曜日

スクリプト言語並みの気軽さで使える?

ちょっとしたフィルターを書くのに、perlを使うと、


while(<>){
if(/EXPR/){
# 処理
}
}


とさっと書けて便利です。
便利すぎて他の言語に移行できません。

これをlimboでやろうとすると、以下のように大量の記述が必要となります。
モジュールのロードが面倒。

implement filter1;

include "sys.m";
sys: Sys;
include "draw.m";
include "bufio.m";
bufio: Bufio;
Iobuf: import bufio;
iobuf: ref Iobuf;
include "regex.m";

filter1: module {
init: fn(ctxt: ref Draw->Context, artv: list of string);
};

init(ctxt: ref Draw->Context, artv: list of string)
{
sys = load Sys Sys->PATH;
bufio = load Bufio Bufio->PATH;

if (bufio == nil) {
exit;
}

stdin := sys->fildes(0);
iobuf = bufio->fopen(stdin, bufio->OREAD);
if (iobuf == nil) {
exit;
}

regex: Regex;
regex = load Regex Regex->PATH;
if (regex == nil) {
exit;
}

(re, nil) := regex->compile("EXPR", 1); # flg = 1
while (1) {
s := iobuf.gets('\n');
if (s == nil) {
iobuf.close();
break;
}

rslt := regex->execute(re, s);
if(rslt == nil) {
continue;
}

(a, b) := rslt[0];
# 処理
}
}


ということで、スクリプトの代わりにするのはきつい。
shと併用しなければだめっぽいですね。

2011年4月1日金曜日

Inferno日記(2)




いろいろあってこうなりました。
すごくおいしかったですよ〜^_^
ワインも今回すごくよくできていた。