Perlゼミ

  1. Perl
  2. 演算子
  3. here

Defined-or演算子「//」

Perl5.10からは、とても便利なDefined-or演算子//」が導入されました。スラッシュが二つ続く演算子です。とっても検索しにくいので、早めに覚えておくのがいいと思います。近年の機能追加では、僕的には一番お勧めの機能ですね。

# Defined-or演算子
//

Defined-or演算子は、左辺が定義されている場合は、左辺値を返却し、未定義の場合は右辺値を返すという動作をします。

# 右辺が代入される
my $value = undef // 'default'; # 'default'

# 左辺が代入される
my $value = 0 // 'default';     # 0
my $value = '' // 'default';    # ''
my $value = 'foo' // 'default'; # 'foo'

これは、値が与えられなかった場合のデフォルト値を定義するのにとても便利です。

my $name = $opts{name} // 'Ken';

また//=という書き方も可能です。

$value //= 'default';

$valueが未定義だった場合だけ、$valueに'default'が代入されます。

Perl5.10以前はどうしていたか

以前はこの書き方を行うためには、defined関数を使って次のように書く必要がありました。

$value = 'default' unless defined $value;

またこの書き方は、冗長なので、||演算子を使って次のように書く人も多くいました。

$value ||= 'default';

でもこの書き方は、$valueが0や空文字列だった場合にも'default'が代入されてしまうために、潜在的なバグをアプリケーションにもたらしていました。

Defined-or演算子が導入されたので、上記の二つの間の記述で悩まなくてよくなったのがうれしいですね。

Perlプログラミングちゃんねるのご紹介

講座作成
Perl Webフレームワーク
Mojolicious
Webシステム開発・環境構築
を学びたいならこちら
著者紹介
木本裕紀

「今日も元気だ! Perlで元気!」

Perlプログラミングちゃんねる

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

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

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

Perl総合研究所
木本裕紀のPerl書籍
  • 業務に役立つPerl

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