• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:HTTP::Request::Common qw(POST);時にソフト表だとエラーになる)

HTTP::Request::Common qw(POST);でソフト表がエラーになる

このQ&Aのポイント
  • HTTP::Request::Common qw(POST);を使ってPOSTする際、日本語のデータは正常に渡るが、'ソフト表'という文字列を送るとエラーになる。
  • 記述はShift_JISで行っており、他の日本語文字列は問題なく送れることから、問題は文字列自体にある。
  • エラーの詳細や解決策について、先生方のご教授をお願いしたい。

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

  • ベストアンサー
回答No.1

Can't find string terminator '"' anywhere before EOF at perltest.txt line 2. のエラーでよろしいですか? これはHTTP::Requestとは全く関係のない問題です。'表'をShift_JISで表した時の2バイト目が¥のため、クォート記号をエスケープして打ち消してしまっています。そのため、ダブルクォートが閉じられていないというエラーが出ています。 bbb => "ソフト表¥" としてください。(¥は半角です)

taku0
質問者

補足

ご教授頂き有難うございます。 ¥で文字化けを防ぐ考えでよかったんですね。¥ソ¥表としていました^^; 後、この方法ですと、keyに対するvalue値を設定する都度、文字化けするかどうかを動作時にチェックし、エラーの際には同じ作業が必要になってくるかと思うのですが、組み込みモジュールやjcode.pl等を使って、簡単に防ぐ方法などはございませんでしょうか。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • LWPモジュールでログインしHTML取得

    use LWP::UserAgent; use HTTP::Request::Common qw(POST); my $url = 'https://toto.netbk.co.jp/main/smm0100'; my %formdata = ('userName' => 'ID', 'loginPwdSet' => 'Pass'); my $request = POST($url,[%formdata]); my $ua = LWP::UserAgent->new; $ua->agent('Mozilla/5.0'); $ua->ssl_opts(verify_hostname => 0); my $res = $ua->request($request); print $res->as_string; サポートされないブラウザーで弾かれます 解決策、教えてください

  • Perl LWPでproxyがうまく刺さらない

    Perl初心者です。 LWPでどうしてもproxyが通りません・・・。 何が悪いのかわかりません。教えてください。 モジュールは全て導入を確認しました。 よろしくお願いします。 稚拙なミスだったらごめんなさい。 use LWP::Simple; use LWP::UserAgent; use HTTP::Request::Common; my $ua = LWP::UserAgent->new( timeout=>"5" ); #cybersyndromeさんからLWP::Simpleでproxyを取得 $_ = get('http://www.cybersyndrome.net/pla5.html'); #proxyをリストに代入 (@proxy_list)=/\"\>(.*?)\<\/a\>\<\/li\>\<li\>/g; #適当なサイトをリクエストのターゲットに $r = new HTTP::Request GET,('http://taruo.net/e/'); #前述のターゲットへリクエストしてひとつづつproxyが通るか確かめたいのに何故かすべてすぐにERRORに for($i = 0;$i <= 10;$i++){ $proxy = 'http://'.$proxy_list[$i]; $ua->proxy ([qw(http https)] , $proxy); $req = $ua->request($r); if ($req->is_success) { print "Success!\n"; }else{ print "Error\n"; } }

    • ベストアンサー
    • Perl
  • Perlのコードを隠蔽する

    Perlのソースコードを隠蔽する&ActivePerlなどがない環境でも動くようにperl2exeを使って変換して配布しようと思っています。 逆コンパイラされる可能性が0ではないことはわかっています。 しかし、下記コードの実行がなかなかうまくいきません。実際の.plでの起動時ではうまくいくのですが、.exeに変換するとうまくいかないようです。回避方法を教えてください。 -------------------- use HTTP::Request::Common qw(POST); use LWP::UserAgent; my $ua = LWP::UserAgent->new; my %loginform = ('mail' => 'hogehoge@hoge.jp', 'password' => 'hogehoge'); my $request = POST('https://****/login', [%loginform]); my $res = $ua->request($request); my $cookie = $res->header('Set-Cookie'); --------------------

  • Data::Dumper;でダンプ後表示した文字列\x{30fc}...

    お世話になります。 下記のスクリプトを使ってrssファイル内をuse Data::Dumper;でダンプして表示してみたのですが、rssファイルがutf8で記述されているせいか 表示時に日本語の所が\x{30fc}のような文字列になってしまいます。 これをshiftjisで表示させたいのですが、試行錯誤してもうまくいきません。 どなたかご教授いただけませんでしょうか。 #!/usr/bin/perl BEGIN{ $| = 1; print "Content-type: text/html\n\n"; open(STDERR, ">&STDOUT"); } use XML::RSS; use Data::Dumper; my $rss = new XML::RSS; #表示形式の違いで1と2がある。 $Data::Dumper::Indent = 1; use open IN => ":utf8"; # 入力をUTF8とする use open OUT => ":shiftjis"; #use open ":std"; #use Encode; #use encoding 'shiftjis', STDIN=>'utf8', STDOUT=>'sjis'; #binmode STDOUT, ":encoding(utf-8)"; #binmode STDOUT, ":encoding(shiftjis)"; #binmode STDOUT, ":encoding(euc-jp)"; #use open ":encoding(shiftjis)"; # rssをセット。 open my $fh, '< ./test.rss'; my $text = join undef, <$fh>; close $fh; # rssをパース $rss->parse($text); # ひとまず中見を知る為にダンプしてみる print "Content-type:text/html;charset=Shift_JIS\n\n"; print "<html><head>\n"; print "<title></title></head>\n"; print "<body>\n"; print Data::Dumper->Dump([$rss]);

    • ベストアンサー
    • Perl
  • クッキーを保持したままコード取得

    こんばんは。 Perlで例えば「https://secure.nicovideo.jp/secure/login?site=niconico」にアクセスして、そのログイン情報のまま「http://www.nicovideo.jp/」にアクセスしたソースコードが欲しいです。 下記ためしたコード use LWP::UserAgent; use HTTP::Request::Common qw(POST); $nico_ua = LWP::UserAgent->new; %loginform = ('mail' => 'hoge@hoge.jp', 'password' => '****'); $request = POST('https://secure.nicovideo.jp/secure/login?site=niconico', [%loginform]); $nico_ua->request($request); ##この時点でログインはできてる模様 $response = $nico_ua->get("http://www.nicovideo.jp/"); print $response->content; ##↑のprintが上手くいかない。 $nico_ua をそのまま使えばログイン情報も維持されると思ったが甘かったです。 LWPの接続でクッキーなどの情報を保持したまま次に指定したURLのコードを取得する方法が知りたいです。 お願いします。

    • ベストアンサー
    • Perl
  • LWPでPOST送信した後に送信先に移動したい

    LWPで別サーバーのtest.cgiに以下のようなコードで POST送信しています。 use HTTP::Request::Common; use LWP::UserAgent; $query="param1=dummy"; $ua = LWP::UserAgent->new(); $req = HTTP::Request->new(POST => "http://xxx.xxx.xxx/test.cgi"); $req -> content_type('application/x-www-form-urlencoded'); $req -> content($query); $res = $ua->request($req); $success = $res -> is_success; if(!$success){ die("error"); } $con = $res -> content; この場合、$conにtest.cgiの出力が入るだけで、 URLのhttp://xxx.xxx.xxx/test.cgiに遷移することはできません。 HTMLのformタグでPOST送信したときのように、 POSTでデータを送信してかつ、その送信先に移動するということはできるのでしょうか。 LWPでなくてもいいです。 要するにHTMLのformタグでのPOST送信を手動ではなく、自動で行いたいわけですが、 <form action="http://xxx.xxx.xxx/test.cgi" method="post"> <input type="hidden" name="param1" value="dummy"> </form> このようなタグのあるHTMLを表示して、 JavaScriptでonLoadでsubmitすればできるのですが、 JavaScriptを使っているとSSLの場合にセキュリティのアラートがでる場合があるので、 できればPerlだけでできないかと思ったのです。

  • モジュールを使ってリクエストヘッダーの表示をさせたい

    宜しくお願いします。 ウェブサーバーにリクエストを送った際、 リクエストヘッダ レスポンスヘッダとあると思うんですけど、 レスポンスヘッダは下記の形で表示できるのですが、 リクエストの際のヘッダ情報(HOST:やReferer:など)を表示させる事ができません。 どなたか、モジュールを使った形でリクエストヘッダを表示させるプログラム記述をご教授願えませんでしょうか。 ※下記は実際にテストを行っているリクエストヘッダとレスポンスヘッダとソースを表示する記述例です。(レスポンスヘッダは正常に表示できているとおもうのですが・・。) #!/usr/bin/perl use HTTP::Request::Common qw(POST GET); use LWP::UserAgent; use HTTP::Cookies; my $ua = LWP::UserAgent->new; my $req = $ua->request(HTTP::Request->new(GET => "http://localhost/")); print "Content-type: text/html\n\n"; print $req3->headers_as_string([$endl]);#これを追加し表示される情報はリファレンスっぽくなってしまうのと、 #リクエストヘッダのHOST:やReferer:UserAgentなどの情報が入ってないので、 #モジュールを利用してリクエストヘッダを表示させてみたいです。 print $req->as_string; リクエストヘッダーのイメージは下記のような情報だと思うのですが、モジュールを使って表示させる事はできないでしょうか どなた様かご教授の程宜しくお願い致します。 HTTP/1.1 Accept: */* Referer: http://okwave.jp/search.php3 Accept-Language: ja User-Agent: Mozilla/4.0 (compatible ; MSIE 6.0; Windows NT 5.0) Host: okwave.jp Connection: Keep-Alive Transfer-Encoding: chunked Content-Type: text/html; charset=Shift_JIS

    • ベストアンサー
    • Perl
  • UTF-8で書かれたHTMLファイルをShift-JISのファイルに変換できない

    #!/usr/bin/perl -w =begin comment OS: Windows XP Perl: Active Perl v5.8.8 スクリプトは「Shift-JIS」で書いています。 日本語処理関係で参考にしているのはもっぱらオライリージャパンの「Spidering Hacks」の付録の翻訳者 による日本語処理の解説です。 http://oshiete1.goo.ne.jp/qa3716434.html の回答に従い、use encoding 'shiftjis'; から use encoding 'cp932'; へ変更している以外は そこに書かれているやり方に従っていると思います。 UTF-8で書かれたHTMLファイルを「LWP::UserAgent」で取得し、それを Shift-JISコードで出力したいと思い以下のコードを実行したのですが、 以下のエラーが出てしまいました。 Parsing of undecoded UTF-8 will give garbage when decoding entities at C:/usr/local/site/lib/LWP/Protocol.pm line 114. このエラーは何が原因なのでしょうか? =end comment =cut use strict; use LWP 5.64; use Encode; use encoding 'cp932'; # http://oshiete1.goo.ne.jp/qa3716434.html の回答に従い、'shiftjis'から'cp932'へ変更。 #use encoding 'shiftjis'; binmode(STDERR, ':raw :encoding(shiftjis)'); my $url = "http://www.audiounion.jp/bin/products/used/A0/-/-/"; my $browser = LWP::UserAgent->new; my $response = $browser->get( $url ); die "cannot get $url:", $response->status_line unless $response->is_success; my $content = Encode::decode('utf8', $response->content); print $content;

  • LWPでヘッダー情報をあらかじめ取得したい

    例えば、下記のようなスクリプトの場合、一度画像が保存された後、ファイルサイズをを抜き出すようになります。 ダウンロード前に、ファイルサイズをあらかじめ知りたいのですがどのようにしたら良いでしょうか? use strict; my $url = "http://img.www.goo.ne.jp/img/gh_logo.png"; use LWP::UserAgent; use HTTP::Cookies; use HTTP::Request; use HTTP::Headers; my $req = HTTP::Request->new(GET => $url); my $ua = LWP::UserAgent->new; $ua->agent( 'Mozilla/5.0 (Windows NT 6.0; rv:12.0)' ); $ua->timeout('10'); $ua->max_redirect(); $ua->cookie_jar( HTTP::Cookies->new( file => '', autosave => 1, )); my $res = $ua->request($req, "save.png"); my $file_size = $res->header("content-length"); print $file_size;

    • ベストアンサー
    • Perl
  • URLに含まれる「#」,「?」、HTTPリクエスト

    皆様いつもお世話になっております。 今日はperlでLWP::UserAgentを使って、google検索結果を得ようとしたところで、岩に躓いて肘の骨に皹が入った点で質問させていただきます。 googleで「asd」と検索するとURLは http://www.google.co.jp/#q=asd となりますが、#ってのは、ページ内遷移などを主目的とした、クライアント、ブラウザ側がご自由に使ってくださいのパラメータの記述開始マークではないのですか? まあ、これに従ったとして、 「http://www.google.co.jp/#q=asd」 を、perlのLWP::UserAgentを使って、 ---- my $ua = LWP::UserAgent->new; $ソース = $ua->get("http://www.google.co.jp/#q=asd"); # googleのトップページの検索結果が返る ---- と投げてみましたところ、Google ☆ト ッ プ ペ ー ジ☆ のソースが返ってくるのです。 Yahoo!ではasdと検索すると?がついて「http://search.yahoo.co.jp/search?p=asd」となるし、perlで同じ文字列をリクエストするとちゃんと検索結果が返ってくるので、googleの仕様がおかしいのではないか?というのが、私の推測群の現在の最有力候補であります。 ---- my $ua = LWP::UserAgent->new; $ソース = $ua->get("http://search.yahoo.co.jp/search?p=asd"); # asdの検索結果が返る ---- ちなみにですが、googleを?を使って 「http://www.google.co.jp/?q=asd」 と、ブラウザURL欄に入力しEnterを押すと、Googleトップページがテキストボックスに「asd」と入力された状態で表示されます。 この現象を説明していただける方がいらっしゃいましたら、どうかよろしくお願い致します。m(_ _)m -- 環境情報 ブラウザ IE10 OS Windows7 --

    • ベストアンサー
    • HTML
このQ&Aのポイント
  • Excelの複数シートを片面印刷するための設定方法を解説します。
  • Windows設定やプリンタの印刷設定を変更して、Excelの複数シートを片面印刷できるようにします。
  • しかし、設定を変えても一部のシートが片面印刷にならず、問題が発生する場合もあります。対処方法についても説明します。
回答を見る

専門家に質問してみよう