前置き
ワンライナー
手元で何かしたいときに,スクリプトを書くことがある.
自分の基準だと,
- ワンライナー
- 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