北海道苫小牧市出身の初老PGが書くブログ

永遠のプログラマを夢見る、苫小牧市出身のおじさんのちらしの裏

当たり前だけど嫌だったこと

考えれば当たり前なんですが。

use Jcode;

sub get_undef() {return undef};
sub empty_list() {return ()};

print jcode(get_undef(), 'sjis')->euc(), "?n";
print jcode(empty_list(), 'sjis')->euc(), "?n";

# [結果]
# 
# sjis

関数からundefが返れば、そのままjcode噛ましても '' が返るんですが*1、関数が空っぽのリストを返すと、'sjis'が第一引数になってこれが返っちゃうんですねー。


で、これが問題になったのが以下のコードです。

my $val = jcode($request->param('key') ,'sjis')->euc();

このソースで、param()が、空リスト返す作りになってました。画面に 'sjis' って意味不明の文字列が表示されたときは、吹くとこでしたよ・・・。

my $val = jcode($request->param('key') || '' ,'sjis')->euc();


ならOKです。

*1:warningは出ますから、やっちゃだめです