解決済みの質問
ユーザーエイジェントを検索して
UP.Browserという文字列があった場合、
ユーザーエイジェントをauという置き換え表示したいと思っています。
具体的には
KDDI-KC3R UP.Browser/6.2_7.2.7.1.K.4.310 (GUI) MMP/2.0
↓
au
と表示したいのですが、
Perlで記述する場合以下のように書いて間違えありませんか?
間違いなどありましたご指摘ください。
if($ENV{'HTTP_USER_AGENT'} =~ /UP.Browser/) {
$agent=~s/$ENV{'HTTP_USER_AGENT'} /au/g;
}
投稿日時 - 2011-08-01 17:30:18
「間違いの可能性がある」あるいは「もっと効率いい方法がある」と思います。
・${HTTP_USER_AGENT} が UPXBrowserでもマッチします。
→UP.Browser と「.」以外が絶対に無いのなら問題にはなりませんが
→.をエスケープするとか、indexを使うとか。
・$agentの中身はどうなっているのでしょう?
→UP.Browserとかが沢山あるならともかく、一つしかないのならgはいらないです
→上と同様KDDI-KC3R UPMBrowser/612_7324771-K-45310 (GUI) MMP/250 みたいなのも置換されます。まずないでしょうが。
→$agent=$ENV{'HTTP_USER_AGENT'} なら、置換などせずに $agent='au' ; で済みますよね
・$ENV{'HTTP_USER_AGENT'} は今アクセスしている人のものです
→ 「あなたはauを使っています」みたいな使いかたならいいですが
投稿日時 - 2011-08-01 19:01:30
お礼
忙しくて見るのが今になってしまい、申し訳ありません。そんな方法もあるんですね。まだ初心者なので思いつきませんでした!いい方法をお教えくださり、ありがとうございます。
投稿日時 - 2011-08-07 15:39:47
0人が「このQ&Aが役に立った」と投票しています
ベストアンサー以外の回答(4件中 1~4件目)
きっと勇み足だと思いますが, 本当に $ENV{'HTTP_USER_AGENT'} の値が
'KDDI-KC3R UP.Browser/6.2_7.2.7.1.K.4.310 (GUI) MMP/2.0'
なら
KDDI-KC3R UPMBrowser/612_7324771-K-45310 (GUI) MMP/250
は置換できないですよね>#1. 「かっこ」にマッチしない....
さておき, 「ユーザーエイジェント」と $agent と $ENV{'HTTP_USER_AGENT'} とはどのような関係にあるんでしょうか?
投稿日時 - 2011-08-02 00:57:46
OKWaveのオススメ
おすすめリンク