ワンライナーの練習 行頭に' 'を追加して出力
以下のワンライナーを実行すると、
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の編集画面でいちいち各行の頭に' 'を入れなくちゃならないので面倒だ。
このワンライナーを使えばその手間を解消できる。
んが、ワンライナーでコマンドプロンプトに出力して、
それをそのままコピペすると、
空白行の頭にあった' 'がなかったことにされるようだ。
一旦ファイルに出力しないとダメなのかなぁ。
めんどいなー。
ワンライナーをささっと書ける人ってカコイイ!(・∀・)
と本気で思うので、これからは意識して積極的に使っていこうと思う。