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]])