ワンライナーの練習 行頭に' 'を追加して出力

以下のワンライナーを実行すると、
hoge.rbの各行の頭に' '(半角スペース)が追加されて出力される。

> ruby -p -e "$_ = ' ' + $_" hoge.rb


-eと-pを逆にして書いたらエラーになった。

>ruby -e -p "$_ = ' ' + $_" hoge.rb
-e:1: undefined method `-@' for nil:NilClass (NoMethodError)

-eの直後には、必ずRubyスクリプトが続かないとダメみたい。


-pは、-eと組み合わせて使うことで、以下のような働きをする。

while $_ = gets
  # -eの直後に指定したRubyスクリプト
  print $_
end

getsで読み込んだ行($_)を出力するループって感じ。
自分で考えるのは$_を加工する部分だけでよい。


ちなみにこのワンライナーは、
PukiWikiスクリプトを書き込むときに使える。
PukiWikiの記法では、行頭に' 'があると、その行を整形済みとして扱う。
でも、単純にエディタからスクリプトをコピペすると、
PukiWikiの編集画面でいちいち各行の頭に' 'を入れなくちゃならないので面倒だ。
このワンライナーを使えばその手間を解消できる。


んが、ワンライナーコマンドプロンプトに出力して、
それをそのままコピペすると、
空白行の頭にあった' 'がなかったことにされるようだ。
一旦ファイルに出力しないとダメなのかなぁ。
めんどいなー。


ワンライナーをささっと書ける人ってカコイイ!(・∀・)
と本気で思うので、これからは意識して積極的に使っていこうと思う。