Perl入門ゼミ

テキスト処理、Linuxサーバー管理、Web開発ならPerl

ファイルの内容をすべて読み込む

Perlでファイルの内容を一括して読み込むには、どうすればよいでしょうか。慣例的に、次のような記述によって、ファイルの内容を一度に読み込むことが多いです。

my $file = 'a.txt';
open my $fh, '<', $file
  or die "Can't open $file: $!";

# ファイルの内容を一度に読み込む
my $content = do { local $/; <$fh> };

doブロックは最後に評価された値を返すものです。

localによって、ファイルの中での改行を表す特殊変数「$/」を未定義にしています。

これによってファイル入力演算子「<$fh>」が、ファイル全体の内容を返すようにしています。

そして、スコープが終わると「$/」は元の状態に戻ります。

ファイルを一度に読むこむ関数を標準で持たないPerlでは、このようにしてファイル全体の内容を読み込むことがあるということを覚えておきましょう。

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