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の書籍
  • 業務に役立つPerl

    ログ解析など日本語を含むテキスト処理の実践!
    この私、Perlゼミの作者が執筆しています。
    ご購入、口コミ歓迎。
  • Perlの書籍 »
自己紹介
木本裕紀

「今日も元気だ、Perlで元気。
ゆとりあるITエンジニアライフのために
Perl情報を前向きに発信中!」

Twitter
フォロー、いいね、リツート、コメント歓迎

Youtube

チャンネル登録、いいね、コメント歓迎

kimoto.yuki@gmail.com
応援メッセージ、質問、間違い報告歓迎

木本システム株式会社
ご紹介キャンペーン実施中です。契約金額の10%をご紹介料としてお支払い。

(例)30万円のシステム開発委託契約が、1年続いたら、36万円がもらえる!!!