ITコンサルの日常

ITコンサル会社に勤務する普通のITエンジニアの日常です。

CGIでAmazon Web Services

http://d.hatena.ne.jp/taka_2/20060510#p2の続き。
前回はXML::DOMがうまく動かないのではまってましたが、今度はJcodeがうまく動かないということに。。
あきらめかけていたところ、
http://www.gac.jp/article/index.php?stats=question&category=12&id=16292&command=msg
のサイトを発見し、それまで試していたJcode2.04をやめて、Jcode0.88を試してみることに。
すると、無事にCGIで以下のことが可能になりました。

  • CGI_LiteによるQUERY_STRINGの分解
  • CGI_Liteによるurlencode (やってないけどurldecodeも可だと思う)
  • HTTP::LiteによるAmazon Web Servicesへの問い合わせ (biglobeのサーバは外部への通信を許可していないらしく、不可能でした。代わりに使っているTOK2ではOKです。)
  • JcodeによるXML<-->Sjisの双方向変換 (Jcode0.88だと、たまにutf8がasciiに判定されてしまうことがある?)
  • XML::DOMによるDOMツリー操作

など。意外とCGIでも色々出来るものだと思いました。
なお、テスト用サイトは以下のアドレスでアクセスできます。
http://www33.tok2.com/home/taka2/index.cgi
で、検索ボックスに適当なキーワードを入れて検索すると、表形式で表示してくれます。
でも、TOK2は広告がすさまじいですね。。
ちなみにですが、使用しているPerlModuleは

  • CGI_Lite 1.8
  • Jcode 0.88
  • HTTP::Lite 1.1
  • XML::DOM 1.44

で、PerlModuleとCGIの配置はこんな感じです。

.
│  CGI_Lite.pm
│  index.cgi
│  Jcode.pm
│  test.cgi
│  
├─HTTP
│      Lite.pm
│      
├─Jcode
│  │  Constants.pm
│  │  H2Z.pm
│  │  Tr.pm
│  │  
│  └─Unicode
│          Constants.pm
│          NoXS.pm
│          
└─XML
    │  DOM.pm
    │  Parser.pm
    │  RegExp.pm
    │  
    ├─DOM
    │      AttDef.pod
    │      AttlistDecl.pod
    │      Attr.pod
    │      CDATASection.pod
    │      CharacterData.pod
    │      Comment.pod
    │      Document.pod
    │      DocumentFragment.pod
    │      DocumentType.pod
    │      DOMException.pm
    │      DOMImplementation.pod
    │      Element.pod
    │      ElementDecl.pod
    │      Entity.pod
    │      EntityReference.pod
    │      NamedNodeMap.pm
    │      NamedNodeMap.pod
    │      Node.pod
    │      NodeList.pm
    │      NodeList.pod
    │      Notation.pod
    │      Parser.pod
    │      PerlSAX.pm
    │      ProcessingInstruction.pod
    │      Text.pod
    │      XMLDecl.pod
    │      
    ├─Expat
    │      encoding.h
    │      Expat.pm
    │      Expat.xs
    │      Makefile.PL
    │      typemap
    │      
    ├─Handler
    │      BuildDOM.pm
    │      
    └─Parser
        │  LWPExternEnt.pl
        │  
        ├─Encodings
        │      big5.enc
        │      euc-kr.enc
        │      iso-8859-2.enc
        │      iso-8859-3.enc
        │      iso-8859-4.enc
        │      iso-8859-5.enc
        │      iso-8859-7.enc
        │      iso-8859-8.enc
        │      iso-8859-9.enc
        │      Japanese_Encodings.msg
        │      README
        │      windows-1250.enc
        │      windows-1252.enc
        │      x-euc-jp-jisx0221.enc
        │      x-euc-jp-unicode.enc
        │      x-sjis-cp932.enc
        │      x-sjis-jdk117.enc
        │      x-sjis-jisx0221.enc
        │      x-sjis-unicode.enc
        │      
        └─Style
                Debug.pm
                Objects.pm
                Stream.pm
                Subs.pm
                Tree.pm