Perl入門ゼミ

テキスト処理、Linuxサーバー管理、Web開発ならPerl
  1. Perl
  2. ワンライナー

ワンライナー

Perlでは、コマンドラインからPerlのスクリプトを実行することができるワンライナーという機能があります。WindowsではLinuxのような便利なコマンドがないので、Perlのワンライナーを使えば、似たようなことも可能です。Perlでよく利用するワンライナーを紹介します。

ワンライナーとは

コマンドラインから直接実行できる1行Perlスクリプトのこと

-e

-eを指定すると、その後に続くPerlスクリプトが直接実行される。

-n

-nを指定すると、その後に続くPerlスクリプトが、while(<>){ }で囲まれたものになる。

ワンライナー解説

perl -ne "print if( /search/ )" inputfile.txt > outputfile.txt

この文は以下の、1,2 と同じ。

1: grep.pl

# 引数で与えられたファイルの各行が、<>に渡される。
# <>で受け取った各行は、ループのなかで、$_に渡される。
# 正規表現//には、$_が暗黙的に利用される
# printの引数には、暗黙的に$_が利用される。 
while (<>) {         
  print if /search/;                   
}

2: 実行

perl grep.pl inputfile.txt > outputfile.txt

Perlでgrepする 指定した文字列を含む行を抽出

ワンライナーという機能を使ってPerlで指定した文字列を含む行を抽出してみます。

grepを実現するワンライナー(コマンドプロンプトから使う)

perl -ne "print if ( /search/ )" inputfile.txt > outputfile.txt

inputfile.txt

search1
kjhkh
search2
lkjlkjl
oiuyyiu
search3

Windowsのコマンドプロンプトでcatする

今回はWindowsでLinuxのcatと同じことをするためのワンライナーを紹介します。catコマンドはファイルの内容を結合することができるコマンドです。コマンドプロンプトでcatをするには以下のようにします。

perl -ne "print" file1 file2 file3 > output.txt

ファイルの内容を結合することができました。

  • Perlとはテキスト処理の記述性とパフォーマンスに優れ、正規表現が言語に組み込まれているプログラミング言語です。
  • Linuxサーバーでのフィルタリングプログラム、複数行の文字列を処理、ファイル内容の検索・置換などが得意
  • Perlはgitopensslなど広く普及したUnix/Linuxミドルウェアの補助ツールとして採用実績あり。後方互換性とポータビリティの高さがひとつの理由と推測。
  • 大量のテキストを扱うWeb開発も得意。ロングテールSEOを意識したWebサイト、アドテクやソーシャルゲームでの50ms以内のJSONの生成など。