SOAP ではまったこと

Perl には型がありません。SOAP では と明示的に型が決まっているためにいろいろはまりました。以下はまったことをまとめます。

int型とdouble型

SOAP における数値型は 11 のように表現します。仕方ないので、

my $int_a = 1;
my $dobule_b = $int_a . '.0';

とやって正規表現で整数と実数を区別するようにしました。

boolean型

SOAP における boolean 型は truefalse のように表現します。これは文字列で true/false を判別することで区別できました。

date型

SOAP における日付型は 2005-01-02 のように表現します。

localtime からとるときはこんな風に変換しました。

my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = 
    localtime(time);
my $date_c = sprintf("%04d-%02d-%02d", $year+1900, $mon+1, $mday);

DBのTIMESTAMP型の値からとるときはこんな風に変換しました。

use Date::Parse;
my ($ss,$mm,$hh,$mday,$mon,$year,$zone) = 
    Date::Parse::strptime('2005-11-06 10:26:12+09');
my $date_c = sprintf("%04d-%02d-%02d", $year+1900, $mon+1, $mday);