ドコモ端末向けの自作プログラムを作っている際に、端末の種類毎に処理を分岐する必要が出てきました。そこでドコモが公開している情報を元に、iモードでアクセスされた際に取得できる環境変数 HTTP_USER_AGENT から端末の機種(型番)を取得する正規表現を考えてみました。
my $env = $ENV{HTTP_USER_AGENT};
my($type) = $env =~ m|^DoCoMo\/[\.\d]+\W*(?:(?:MST_v_))?(\w+).*?$|i;
print "機種は $type です";
大半の機種は簡単な正規表現で対応できるんですけど、『SH2101V』って機種が特殊なUAを返すようなので”MST_v_”云々のロジックはその対応の為に入れてます。
なお、ドコモの公開情報によると『D2101V』などのUAに全角スペースが含まれるみたいですけど本当かしらん?それとも誤植?