mysql-proxy のスクリプトは lua という言語で記述します。クライアントとmysqlサーバの通信の間に割りこんで色々なことができそうですが、まずは基本的な書き方をおさえてみました。 lua スクリプトの基本事項を、サンプルスクリプト等を見ながら「こんな感じかな?」的に勝手に理解したもので、まずは「それっぽく書けるようになればOK」的な姿勢で以下メモ。
コメント:
コメント(1行) --
コメント(複数行)
- [[
〜
]]--
基本的な関数ブロック:
function 関数名( パラメタ )
・・・・
return xx
end
パラメタに型はない、というか少なくとも明示はしない模様。
プライベート(ローカル)な関数:
local function 関数名( パラメタ )
・・・・
return xx
end
配列:
local myarray = { "AAA", "BBB", "CCC", "DDD" }
print("3rd is " .. myarray[2])
条件分岐(if):
if AAA == BBB then
・・・
elseif CCC >= XX then
・・・
else
・・・
end
繰り返し(for):
for i = 1, string.len(s) do
・・・
end
文字列加工とか
文字列長: string.len(s) または s:len() 小文字化: string.lower(s) または s:lower() 大文字化: string.upper(s) または s:upper() 逆順化 : string.reverse(s) または s:reverse() 部分抽出: string.sub(s, start[, end]) または s:sub(start[, end]) start文字目から end文字目までを抽出(文字数ではない) start,end が負の場合はおしりからの文字数位置。 繰り返し: string.rep(s, n) または s:rep(n) 文字列sをn回繰り返す。 部分置換: string.gsub(s, patt, repl[, n]) または s;gsub(patt, repl[, n]) s中のpatt部分文字列をreplに置換する。nが指定された場合は先頭からn回ぶんだけ。 文字列整形: string.format(fmstr, prm1, pr2...) または fmstr.format(prm1, prm2...) printf みたいな感じ。 その他:string.match(s, patt[, init]) string.gmatch(s, patt) string.find(s, patt[, init[, plain]]) string.dump(function) string.char(i1, i2...) string.byte(s,[ i[, j]])