はじめてのperlワンライナー


perlワンライナーの使い所/メリット

  • ワンライナー用途はrubyが良さそうだけど、導入できないってとき。
  • sedもawkもシンプルだけど、細かい文法・正規表現が覚えられないし調べにくい。少し凝った処理したいとき辛い。
  • sedはGNU系UNIX系で違うし、awkもgawk,mawkやらあり、いろんな差異が辛い。
    • perlならどこのLinuxサーバーにもだいたいperl 5.8 以降がはいってるので、ほぼ同じように使える。
    • perlなら機能も情報も豊富。

※スクリプトを書くならperlよりpython3で書きたいですが、ワンライナーについては perl と ruby が得意としています。


はじめてのワンライナー

bash
$ perl -e 'print "hello\n"'
hello

ワンライナーをコードとして確認 (-MO=Deparse)

bash
$ perl -e 'print "hello\n"' -MO=Deparse
print "hello\n";
-e syntax OK

-MO=Deparseをつければ、perlがワンライナー実行前にどんなコードに解釈してる表示してくれます。
よってperlのコードの書き方について学んでいくと、perlワンライナーへ結びつくことがわかるかと思います。
ワンライナーの内部がわからなくなったら、-MO=Deparseにて適宜、確認しつつ学習していくと理解していきやすいかと思います。

perl自体の参考サイト

上記サイトがとても参考になります。(本もおすすめです。)

ワンライナーによく使うスイッチ(-anle)

基本はこれをつけておけばよいという定番です。上記のサイトが大変に参考になりました。


以上が、perlワンライナーの学習に必要な基礎となります。
あとは、ワンライナーやperlに関する記事を調べながら、
よく使うスイッチや特殊変数について覚えていけばいいと思います。
公式のperldocは翻訳されてて、網羅的に詳しいです(詳しすぎる)。ので、適宜に確認してください。

各スイッチの説明、及びワンライナー例

上記の記事がとても参考になります。

雰囲気をひと目で掴むため、上記の記事をもとに、-MO=Deparseした結果を添えて以下、図表にまとめてみました。
赤字は一番左のスイッチの効果で、青字はみやすさのためprint部分に付けたものとなります。

※こういう部分的に文字に色付けした表を、楽に記事にする方法がわからずスクリーンショットに。何かいい方法があれば知りたい。。。

この記事書いてから上記サイトに気づきました。とても参考になります。