Perl入門ゼミ

テキスト処理、Linuxサーバー管理、Web開発ならPerl
  1. Perl
  2. 構文
  3. here

do - 値を返すブロック、スクリプトの読み込み

doを使用すると、ブロック構文の場合は、最後に評価された値を返すブロックを作成することができます。文字列構文の場合は、ファイルを名を指定して、スクリプトを読み込むことができます。

# doブロック - 最後の値を返すブロック
do { ... };

#  do文字列 - スクリプトの読み込み
do $file_name;

ブロックの構文と、文字列の構文は、機能がまったく異なるので注意してください。それぞれの構文について詳しく解説します。

最後の値を返すブロック - doブロック

doブロックを使用すると最後に評価された値を返すブロックを作成することができます。

# doブロック
my $value = do {
  1;
  2;
  3;
};

上のように記述すると3が返され、$valueに3が代入されます。

普通にプログラミングするときには、この構文を使う理由は特にありませんが、慣例的に、ファイルの内容を一度に読み込みたい場合は、この構文が利用されます。

ファイルの内容を一度に読み込む

次の記述によって、ファイルの内容のすべて一度で読み込むことができます。

my $content = do { local $/; <$fh> };

この記述の詳しい解説は以下で行っています。

localについては「local - パッケージ変数を一時的に退避して復元」で解説しています。

スクリプトの読み込み - do文字列

do文字列の構文を使うことで、ファイルをPerlのソースコードとして読み込むことができます。

よく利用する方法として、設定ファイルをPerlで記述して読み込むことができます。

設定ファイルをPerlで記述する

設定ファイルはPerlで記述するのが便利です。

my $conf_file = "app.conf";
my $conf = do $conf_file
  or die qq/Can't load config file "$conf_file": $!$@/;

設定ファイルの内容です。

{
  name => 'Foo',
  number => 9
}

ファイルの読み込みか解析に成功しなかった場合は未定義値が返却されます。ファイル名が存在しなかった場合は$!に、Perlのソースコードの読み込みに失敗した場合は$@にエラーの内容が設定されます。

設定ファイルはXMLやJSONで書くこともできますが、Perlで書くのが一番楽ですね。

do文字列の構文は、設定を記述したスクリプトを読み込むためだけに、利用するのが良いでしょう。モジュールを読み込みたい場合は、userequireを使うようにしましょう。

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