読者です 読者をやめる 読者になる 読者になる

WWW::Salesforce 0.082 -> 0.090 での非互換というかなんというか

perl

おそらくものすごく役に立つ人が少ない情報。PerlSalesforce 使ってる人どれぐらいいるんだろうか。
独自オブジェクトを WWW::Salesforce で扱う際に、カラムの型を定義してやらないと 2byte 文字とかが入らないので、0.082 までは

$WWW::Salesforce::Constants{"ObjectName__c"}->{"ColName__c"} = 'xsd:string';

みたいに、パッケージ変数 %WWW::Salesforce::Constants に定義を追加する必要があったのですが。これが 0.090 になると効かない。内部で hash key を lc して扱うようになったため。
なので key を小文字にして

 $WWW::Salesforce::Constants{"objectname__c"}->{"colname__c"} = 'xsd:string';

とする……とまた内部インターフェースが変わったときにあれなので、0.090 から新設されたメソッドを使って

 WWW::Salesforce::Constants->register_type("ObjectName__c", "ColName__c", "xsd:string");

などとしましょう。
0.082 まではハッシュを生で扱うしかなかったのですが、その状態のコードを 0.090 で動かすと文字化けしまくったりとかして、死ねます。