読者です 読者をやめる 読者になる 読者になる

ワンライナー

Perl

一行めのやつを入力すると二行目のやつが返ってくるようなやつをワンライナーで書きたい。

a,b,c,d,e
"a","b","c","d","e",

twitterで適当につぶやいていたらotuneさんから教えてもらいました。foreach(@array)をmapに置き換えて、ついでに@arrayも消してしまうというもの。

自分で最初に書いたやつ。

perl -ne 'chomp($_);@array=split ",",$_;foreach(@array){print "\"$_\","}'

otuneさんがtwitterで教えてくれたもの。

perl -ne 'chomp($_);map {print qq/"$_",/} split/,/,$_;'

split使わないで-Fで指定してやれるんじゃね?と思って自分で書いたやつ。しかし、こっちだとchompの処理がうまくいかず、popで最後の要素を消し去るとか無駄に考えないといけない感じになってしまってよろしくなさげ。

perl -F',' -ane 'pop(@F);map{print qq/"$_",/} @F;'