perlで電脳DWSにアクセスする際の問題と解決策

このQ&Aのポイント
  • perlでCGIを勉強している中で、電脳卸のDWSにアクセスする際に問題が発生しました。
  • サンプルスクリプトに記載されていたXML::Simpleモジュールが利用できないことが分かり、InternetでXML-Simple-2.14を入手しました。
  • しかし、アクセスするとページに正常に表示されず、他の参考資料も役立ちませんでした。具体的な解決策をご教授いただける方を探しています。
回答を見る
  • ベストアンサー

電脳DWSのアクセス部分について

perlでCGIを勉強してみようと決意し、 電脳卸のDWSというのがあるよと友人に聞かされ、 サンプルスクリプトもあるので、これは良い!と思い perl初心者が取り組んで早2ヶ月です。 正常に動きません。 サンプルスクリプトが「XML::SIMPLE」となっていましたが、 利用しているXServerにそのモジュールがないと言うことがわかったので、 インターネットでXML-Simple-2.14 を入手し、アップして再度サンプルスクリプトを 動かして見たところ、動くには動いたのですが、ブラウザに   全商品数HASH(0x8ad6604)アイテム   全ページHASH(0x8ad6778)ページ 上記のような表示となってしまいます。 この影響で、データ表示の部分も正常移動させず終わるという状態です。 ほかのFAQ各所でも質問してみたのですが、 「xmlのパースが理解できていない」 「勉強不足だ、もっと勉強しろ!」等々 色々と指摘はして頂いたのですが、具体的な解決策は未だ見えておりません 1ヶ月ほどperlやxmlの本を買いあさり、 無い頭を絞りまくりで勉強してみましたが 未だ解決できていません。 perlでDWSにアクセスするところで躓いています。 どなたか、 この部分だけでもご指導頂けませんでしょうか。 よろしくお願いいたします。m(__)m

  • XML
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

>全商品数HASH(0x8ad6604)アイテム のようになるということは、 アクセスしている部分がハッシュの参照になっており、デリファレンスがうまくいってない(理解していない)ということだと思います。 私は、DWSって使ってないので、その辺に関しては良くわかりません(IDがないと試せない?)が アクセスした時のXMLをローカルに保存して、 ローカルのXMLファイルに関して色々テストしてみるといいんじゃないですか。 そのデータとスクリプトを補足して貰えるならこちらでも試してみることができます。 多分、XML::Simpleで作成されるデータツリーが良くわかってないだけだと思うので my $tree = XMLin($xml); とかしてたら use Data::Dumper; print Dumper($tree); としたら、読み込んだXMLがどういう風に構成されているか良くわかると思います

tamaonosuke
質問者

お礼

早速のアドバイスを頂き、 ありがとうございます。 >多分、XML::Simpleで作成されるデータツリーが良くわかってないだけだと思うので >my $tree = XMLin($xml); >とかしてたら >use Data::Dumper; >print Dumper($tree); >としたら、読み込んだXMLがどういう風に構成されているか良くわかると思います 早速、Data::Dumperモジュールを用意して、XML::Simpleで作成されるデータツリーを 実際に見てみます。 >アクセスしている部分がハッシュの参照になっており・・ このあたりが理解できていないと言うことが良くわかりました。 なにぶんにも初めての経験ばかりで、何を調べればいいのかが 良くわからないので困っておりましたが、これで一歩前進できます。 本当にありがとうございました! m(__)m

関連するQ&A

  • http://www.drk7.jp/MT/archives/0011

    http://www.drk7.jp/MT/archives/001174.html こちらで公開されているスクリプトを動かそうとしたのですが500エラーになってしまいます。 perl5.88がインストールされているローカル環境で動かそうとしたところ、Jcodeと、XML::Simpleがインストールされていなかったのでインストールして、 use CGI; use Jcode; use LWP::UserAgent; use XML::Simple; use Data::Dumper; これらが動くようにしましたが、このスクリプト自体は相変わらず500エラーになってしまいます。 perlの知識が余りないのでこれ以上の原因を突き止める方法もよくわかりません。 公開されているコードの#!/usr/bin/perl -w から、最終行までをコピーして、そのまま動かそうとしているのですが、 他に何かを付け足す必要があるのでしょうか? 自分の知識では、このスクリプトの書き方がさっぱり理解できないので、お手上げです。 何度挑戦しても駄目だったのと、モジュールを使った書き方自体がよくわからないので、use LWP::UserAgent;以外のモジュールを使わない書き方で一からスクリプトを書き始めたのですが、一週間経過してもまったく完成せず今の自分の知識では無理なようです。 どうか、この公開されているスクリプトを動かす為のヒントをご教授いただけないでしょうか。 よろしくお願いいたします。

    • ベストアンサー
    • Perl
  • 正規表現で指定範囲の文字列の取得

    perlでRSSファイルを取得してTITLEタグの内容を抜き出したいのですが、 XML::RSSが使えない状況では、どのようにしたらいいでしょうか? my $document = LWP::Simple::get($url)後に正規表現で取り出して print タイトル<br>という風に表示しようと思っています。 よろしくお願いします。 ----下記のページを参考にしています。 http://www.itmedia.co.jp/enterprise/articles/0702/22/news014.html

    • ベストアンサー
    • Perl
  • hashをスカラー変数に渡す

    最近、perlを勉強し始めたのですが下記のようなサンプルコードを 見たことがあります。 hashをスカラー変数「$test」に渡している。そして「%$test」でhashに変換してeachで回している。最初から「%test」のようにしてeachで回せばよいと思うのですが実際の業務とかでhashをスカラー変数で受け取るようなことってありえるのでしょうか? my $test = { a=>'test_a', b=>'test_b', c=>'test_c' }; while( my ($key, $value) = each %$test ) { print $key ." : " . $value . "\n"; }

    • ベストアンサー
    • Perl
  • YAHOO ウェブ検索Web APIを使ったプログラム

    perlのペーペープログラマーです とりあえず動けばOK的にしか作れないレベルです 現在YAHOO ウェブ検索Web APIを使ったプログラムを作成しています (プログラム、フォーム用、結果表示用のHTMLなどもutf-8で記述) 大体普通に動くのですが一部キーワードを使うとなぜか違う検索結果が返ってきます 例:SEOツール 1.返ってくるべきページ http://search.yahoo.co.jp/search?p=SEO%E3%83%84%E3%83%BC%E3%83%AB 2.なぜか受け取るページ http://search.yahoo.co.jp/search?p=SEO%83c%81[%83%8B なぜか2のshift-jisっぽいものが返ってきます 他のキーワードなどでは普通のUTF-8のページが返ってきます 文字化けなどはほとんどありません 正直まったく原因が分かりません いったい何をどうすれば良いのでしょうか? ソースは下記みたいな感じです &decode; #デコードサブルーチン use LWP::Simple; use XML::Simple; $url = "http://api.search.yahoo.co.jp/WebSearchService/V1/webSearch?appid=$appid&query=$in{'keyword'}"; $response = get($url); $xml = new XML::Simple; $yahoo_xml = $xml->XMLin($response); $tra = $yahoo_xml->{totalResultsAvailable}; $page = <<"EOF"; $tra EOF &page; #ページ表示サブルーチン $pageを表示 ちなみに文字化けは他プログラムでは発生していましたが解決しました 関連性があるのでしょうか? 問題 APIから帰ってきたものを@lineに入れてHTML表示 それ以外の変数文字列が文字化け 解決策 APIから返ってきたものをforeachでutf-8にデコードしたら他のものが普通に表示されました。 foreach (@line) {Jcode::convert($_, "utf8");} こんな感じです これは返ってきたものなので、そもそも返って来るものが違う場合もうお手上げです。 何がなにやら分かりません 上手に説明できませんでしたが、よろしくお願いいたします また教えてgooへの投稿に慣れていないもので至らない点あるかと思いますがご容赦ください

    • ベストアンサー
    • Perl
  • 複数のサイトからXLMを読み込みひとつのページにする

    XLM・JavaScript・XSL・PHP・Perlなどすべて初心者です。(基礎的な質問で恐縮です) 現在、JavaScriptをつかってサイトの構築をしております。複数のサイト(Amazon/Yahooなど)からXMLをリクエストしてそれを一つのページにしようとしております。XMLをHTMLにパースするのはいろんなところに情報があるのですが、複数のサイトからの複数のXMLデータを読み込み一つのページにまとめるやりかたというのはまったく情報がありません。具体的にはどのようにしたらいいのでしょうか?PHP/Perlというのは複数のXMLデータを読み込むことは可能なのでしょうか?(もし可能な場合は簡単なキーワードでも入れていただけると幸いです。ググッて自分で勉強します)

    • 締切済み
    • XML
  • PerlとWin32::ODBCを使ってDBにアクセスするときに出るエラー

    こんばんわ。最近、Perlを使い始めたばかりの初心者です。解決方法がわからないので、教えて下さい。 PerlとWin32::ODBCを使ってDBにアクセスするプログラムを組んでいるます。DB接続まではうまくいくのですが、それ以降に以下のようなエラーがでます。モジュールが足りないようなのですが、どのようにして解決すればよいかわかりません。以下にエラーとコードを記入します。 コード: #!/usr/local/bin/perl $DSN = "DSN=DB1;UID=kaki388"; use Win32::ODBC; if (!($0 = new Win32::ODBC($DSN))){ print Win32::ODBC::Error(); print "失敗"; exit(); } print "成功"; $sql = "SELECT * FROM tbl1"; $0->run("$sql"); $0->sql("$sql"); @fn = $0->FieldNames(); while($0->FetchRow()){ undef %Data; %Data = $0->DataHash(); print "$Data{$fn[$i]}<BR>\n"; } $0->Close; エラーコード: 2004/08/26(11:49:14) W-SV 127.0.0.1 [80] E200042 "Can't locate object method "run" via package "Win32::ODBC=HASH(0x275020)" (perhaps you forgot to load "Win32::ODBC=HASH(0x275020)"?) at odbc.cgi line 11. " よろしくお願い致します。

    • ベストアンサー
    • Perl
  • リファラーのデータ送信について

    こちらの質問(http://okwave.jp/qa3205563.html)で一定の解決を見たのですが、新たな問題が発生してしまったので教えてください。 sample.htmlへの記述 <script type="text/javascript"> var ref = document.referrer ; document.write("<script type=\"text/javascript\" src=\"​http://hoge.com.info.php?ref="+ref+"​\"></script>"); </script> で、refを送信したのですが、 受け取ったrefが、googleだと、 「http://www.google.co.jp/search?hl=ja」になってしまい、&で区切られている以降のデータ(つまり「q」)が取得できません。 別質問(http://okwave.jp/qa3200959.html)で、 hrm_mmmさんの回答======================================= $_SERVER['HTTP_REFERER']が対象ならば、以下で、$query_hashに、$_GETと同様のurldecode済みデータがハッシュ配列として得られます。 $url_hash = parse_url( $_SERVER['HTTP_REFERER'] ); if( array_key_exists( 'query', $url_hash ) and strlen($url_hash['query'])>0 ){ parse_str( $url_hash['query'], $query_hash); } // あとは、$url_hash['host'] によって切り分けて検索キー取り出しをすればよいと思います。 $word = ''; if( preg_match ("/\.google\./", $url_hash['host']) ) { $word = $query_hash['q']; } elseif( preg_match ("/\.yahoo\./", $url_hash['host']) ) { $word = $query_hash['p']; } elseif( preg_match ("/\.goo\.ne\.jp/", $url_hash['host']) ) { $word = $query_hash['MT']; } ====================ここまで============================ こんなんでやればいいよ。と教えていただいたのですが、グーグルから送られたref自体にqが入っていません。 というか、?以降の1番目のクエリーしか入ってきません。 ヤフーなら ?p=~でOK gooなら ?MT=~でOK google は hl=jaが一番最初にくるので、qがとれません。 なぜ、送信されてくるreferrerに2番目以降のパラメータがついてこないのでしょうか。。。 ちなみにsample.htmlで document.write(document.referrer)をやるとちゃんと全て表示されます。

  • [Perl]XML::SimpleでSJIS

    Windows7、ActivePerl v5.24.1を使っています。 use XML::Simple; use Data::Dumper; my $data = XMLin('test.xml'); print Dumper($data); というコードで、以下のXMLファイルを読み込むと、 <?xml version="1.0" encoding="shift_jis"?> <root> <top id="1234"> <second>値</second> <third> <fourth>1234</fourth> <fifth>myvalue</fifth> </third> </top> </root> Couldn't open encmap shift_jis.enc: No such file or directory at C:/Perl/lib/XML/Parser.pm line 187. XML::Simple called at read_xml_test.pl line 10. というエラーがでます。 ググると、以下のサイトで解決できたという記事がヒットしますが このサイトはもう存在しません。 Perl XMLでencoding=’Shift_JIS’や’euc-jp’を使う http://homepage3.nifty.com/hippo2000/perltips/xml/xmlenc.htm なにかコード間のマップファイルと思われますが、 どなたかお持ちじゃないでしょうか?

  • ×マークを消したいのですが

    アクセス解析のCGIを設置したんですが、非表示のはずなのに×マークが見えてしまってます。 この×マークをみえないようにしたいのですが、判る人教えて下さい。 配布元 http://www.suepon.com/ simple_access v.1.0 アクセス解析するページへの記述 <script>document.write('<img src="../access/access.pl?',parent.document.referrer,'">')</script> ↑ この部分が×マークが出てしまいます。サンプルだとこの呼び出しタグで 真っ白な画面のままです。

    • 締切済み
    • CGI
  • XMLの検索結果を分けて表示する方法

    XMLの入門書を買って勉強しているのですが、XMLとXSLTとJavascriptで検索するところを読んでいて、いっぺんに検索結果を表示するのは、サンプルに載っていて、なんとなく理解できるのですが、10件ずつとか、ページを分けて表示する場合がわからなくて、困っています。 クッキーとかに、一度保存したりしないといけないのかなーとか思ってますが、参考書になるようなものが見あたらなくて、先に進めません。 よろしくお願いします。

    • 締切済み
    • XML

専門家に質問してみよう