[Perl] 関数の戻り値 その2

Posted by
ぴろり
Posted at
2011/11/30 19:28
Trackbacks
関連記事 (0)
Post Comment
コメントできます
Category
開発メモ カテゴリ

 前回に引き続いて関数の戻り値についてのメモ。

このエントリーをはてなブックマークに追加  

ソースコード その1

#!/usr/bin/perl -w
use strict;
use Data::Dumper;
$, = $ = "
";

sub if_true {
    if (1) { 'in block'; }
}
print __LINE__, Dumper (if_true);

sub if_false {
    if (0) { 'in block'; }
}
print __LINE__, Dumper (if_false);

sub unless_true {
    unless (1) { 'in block'; }
}
print __LINE__, Dumper (unless_true);

sub unless_false {
    unless (0) { 'in block'; }
}
print __LINE__, Dumper (unless_false);

実行結果

9
$VAR1 = 'in block';

14
$VAR1 = 0;

19
$VAR1 = '';

24
$VAR1 = 'in block';

 if_trueif_falseunless_false は予想通りの結果でしたが、unless_true の戻り値は 0 でも undef でもなく空文字列なんですね。

ソースコード その2

#!/usr/bin/perl -w
use strict;
use Data::Dumper;
$, = $ = "
";

sub if_true {
    'string' if 1;
}
print __LINE__, Dumper (if_true);

sub if_false {
    'string' if 0;
}
print __LINE__, Dumper (if_false);

sub unless_true {
    'string' unless 1;
}
print __LINE__, Dumper (unless_true);

sub unless_false {
    'string' unless 0;
}
print __LINE__, Dumper (unless_false);

実行結果

9
$VAR1 = 'string';

14
$VAR1 = 0;

19
$VAR1 = 1;

24
$VAR1 = 'string';

 こちらは、先の結果と異なり、予想通りでした。unless_true の挙動が違いますね。
 試せていませんが、もしかしたら、Perl のバージョンでも結果が違うとかあるかも? まぁ、月並みなまとめですが、関数の戻り値は手を抜かずに明示するようにしましょう。

このエントリーをはてなブックマークに追加  


この記事のアーカイブ

全ての記事 »
2011年
全てのカテゴリ »
電算室 » 開発メモ
全てのタグ »
, ,

関連記事/トラックバック

関連記事/トラックバックはまだありません

この記事にトラックバックを送るには?

コメントを投稿する

 
 (必須, 匿名可, 公開, トリップが使えます)
 (必須, 匿名可, 非公開, Gravatar に対応しています)
 (必須)
スパム コメント防止のため「投稿確認」欄に ランダムな数字 CAPTCHAについて を入力してから送信してください。お手数ですがご協力のほど宜しくお願いいたします。