langsmith:255
From: YAMASHINA Hio <hio hio.jp>
Date: Fri, 22 Jul 2005 12:17:34 +0900
Subject: [langsmith:255] Perlの文法を持ったJavaベースのスクリプト言語- Sleep
こんにちわ. 山科です. こんな記事を見かけたのでご紹介. http://pcweb.mycom.co.jp/news/2005/07/21/013.html Perlの文法を持ったJavaベースのスクリプト言語 - Sleep 2.0公開 本家はこちら. http://sleep.hick.org/ http://freshmeat.net/projects/sleepscript/ perlと極似ているけれど所々違うのでperlコードをそのまま動かすのは 無理な様です. jarがあるので, java -jar sleep.jar xxx.sl でそのまま試せます. -e はないのでわんらいなもどきには > echo 'println("hello")' | java -jar sleep.jar /proc/self/fd/0 あたりで. (無理矢理 スカラー・配列・ハッシュを扱うときは普通に記述するけれど, Javaオブジェクトを扱うときは Objective-C っぽい記述を使うそうです. `.' が文字列連結になるからそれの回避ででしょうか. perlなんだし :: や -> をがんばって欲しい感も. 適当につらつらと. $1, $2 は関数の引数(@_[0],@_[1]と一緒). 関数呼び出しに()が必須. die ないし知らない関数呼んでも警告でて素通りだし^^;; 例外起きても伝播もしない模様. checkError($var) で, 例外チェック&$varにエラーメッセージ取得まで. 配列・ハッシュの要素アクセスは @data[0], %hash["key"]; $temp = @data[2][3]; %foo["name"] = "Raphael"; %hash = hash(letters => array("a", "b", "c", "d"), names => hash( rsm => "Raphael Mudge", fvm => "Frances Mudge") ); リファレンスはなくなってるぽい? 代入は変数と=の間に空白ないと構文エラー(バグ?) 正規表現周りもちょっと変化. while ('ABhCDEFeGHIJlKLMNlOPQRoST' hasmatch '[A-Z]{2}([a-z])[A-Z]{2}') { @array = matched(); print(@array[0]); } 完全一致用の ismatch と部分一致を繰り返す hasmatch. あとワイルドカードマッチで iswm がありました. オブジェクトの扱い. [[System out] println: "test" ]; # correct [System.out println: "test" ]; # wrong! ここでも . はだめらしい. クロージャ. $closure = { println("My name is: $1"); }; [$closure: "Raphael"]; $myfunc = lambda({ println("My initial name is $name"); }, $name => "Raffi"); [$myfunc]; でわ〜♪ -- 山科 氷魚 (YAMASHINA Hio) <hio hio.jp> -- ML: langsmith quickml.atdot.net 使い方: http://www.atdot.net/~ko1/quickml