前置き
ワンライナー
手元で何かしたいときに,スクリプトを書くことがある.
自分の基準だと,
- ワンライナー
- Make
- make がデフォルトインストールされている場合
- プログラミング言語のスクリプト
- プロジェクト
みたいな優先順位になることが多い.
必要となる速度,妥当性検証,再利用性みたいな部分でもこの順序で考えていそう.
Ruby
今まで,Perl でやっていたけど,Ruby か別の言語にしようと思ったので,
今回のステップでは Ruby にする.12
準備
パイプ
$ ruby -lpe 'do something for $_'
よくあるパターン
$ ruby -lne 'do something for $_'
あとよく使うオプション
-
-a- スプリット(
$F = $_.split) する
- スプリット(
-
-F$;- フィールド区切り文字指定.正規表現.
-
-0$/- 行区切り文字指定.指定しないとヌル文字(
\0)になる.find -print0のやつ. -
-0777で全部読み込み
変数
よく使う変数は,
-
$_-
Kernel.getsメソッドの戻り値が自動的に入る.-n/-pで使う.
-
-
$/-
Kernel.getsメソッドの引数のデフォルト値.-0で指定できる.
-
-
$;-
String.splitメソッドの第一引数のデフォルト値-Fで指定できる.
-
-
ARGV/$*- 引数を取り出せる.
-
ARGF- 標準入力 or 指定されたファイルを自動判定する仮想ファイル.
$ ruby -e 'p ARGV' a b c
["a", "b", "c"]
制御構造
-
BEGIN/END- 最初か最後に実行するブロックを指定できる.
-
-nオプションのwhile get; endの中に入れたくないような処理を入れるのに使ったりする. -
BEGIN ブロックは、独立したローカル変数のスコープを導入しません。つまり、 BEGIN ブロック内で定義したローカル変数は BEGIN ブロックを抜けた後も使用可能です。
Refs
