1 名前:nobodyさん mailto:sage [2011/09/09(金) 18:11:49.71 ID:???] Perlのコーディングで困ってる人のスレです。 【投稿する際の注意】 質問するときは内容をよく吟味してから投稿してください。 「コマンドの意味がわかんない」とかはマニュアル見ましょう。 回答者さんは何でも屋じゃありません。 1: 自分はこういう事がしたい。 2: それでこんな風にやってみたが・・・ 3: こんなエラーが出て上手く行かなかった。 最低でも1と3が無いと誰も答えられないよ。 良い回答は良い質問から。一緒に勉強しましょう。 お勧めサイトは >>2 以降 前スレ hibari.2ch.net/test/read.cgi/php/1295170172/
303 名前:nobodyさん mailto:sage [2011/11/15(火) 20:47:48.16 ID:???] 何故って… .*?にはタグ(<.*?>)を含まないなんてルールはないし
304 名前:nobodyさん mailto:sage [2011/11/15(火) 21:30:08.07 ID:???] 最小マッチの「最小」の意味を勘違いしてるパターンと予想。 .*? か .* かで影響されるのは "</a></b> が販売" の部分の探し方であって、 マッチすること自体が確定したら最初の ">" の位置は動かない。 関係ないが、この手の情報取得は可能ならまずAPIを検討すべき。 泥臭くスクレイピングするとしても、よほど高速性を重視するとかでなければ 正規表現じゃなくてTreeBuilderとかでDOMをパーズするほうが安全。
305 名前:nobodyさん mailto:sage [2011/11/16(水) 00:15:29.63 ID:???] >>304 ありがとう。 最初の「>」で拾ってしまうんですね。 高速性の必要なものではなく、いくつかの商品の価格変化をログ取ってるだけなので、 API利用するところまでは考えてません。手続きめんどいので。
306 名前:nobodyさん mailto:sage [2011/11/16(水) 06:46:36.29 ID:???] >>305 拾いたい箇所が1ファイルに1箇所くらいで構造も単純ならパターンマッチングの方が 手っ取り早いよね。 でも構造が繰り返しだったりややこしかったりする時はWeb::Scraperとか便利よ。 >>304 パーズ? パース? ← parse
307 名前:nobodyさん mailto:sage [2011/11/16(水) 07:50:11.05 ID:???] 考えるの面倒だからという理由で、モジュールに丸投げする底辺でゴメンナサイ
308 名前:nobodyさん mailto:sage [2011/11/16(水) 09:59:12.27 ID:???] そのためのモジュールでしょ 無問題
309 名前:304 mailto:sage [2011/11/16(水) 10:04:04.24 ID:???] ありゃ。smooth(ズ)→スムース みたいなもんで英語では parz って発音するものだと思い込んでたからそれに合わせてたわ。 調べてみたらイギリス英語系の辞書だとパーズだけど、アメリカ英語でパースが一般的みたいだからそっちのほうがいいや。サンクス
310 名前:nobodyさん mailto:sage [2011/11/16(水) 16:16:46.49 ID:???] >>309 >イギリス英語 へー。良いことを知った。
311 名前:nobodyさん mailto:sage [2011/11/16(水) 16:34:39.13 ID:???] 本当だ。 2つ発音されるね。 parseの意味 - 英和辞書 - goo辞書 dictionary.goo.ne.jp/leaf/ej3/61513/m0u/parse/
312 名前:nobodyさん mailto:sage [2011/11/16(水) 16:52:26.25 ID:???] そうか。どっちもありなんだ。 勉強になったぜ。
313 名前:nobodyさん mailto:sage [2011/11/16(水) 23:26:19.41 ID:???] テキストファイルから3行だけほしいときって、1行で記述することってできますか? 今は for で回して push してるんだけど、 @lines = <$fh> x 3; みたいな感じで書けたら落ですよね。。。
314 名前:nobodyさん mailto:sage [2011/11/17(木) 00:05:31.82 ID:???] >>313 #!/usr/bin/perl -w use strict; my @line = (scalar <DATA>, scalar <DATA>, scalar <DATA>); # 幾つ? print @line, "---\n"; seek DATA, -12, 1; @line = (); @line = map scalar <DATA>, 0..2; # 0から2とは? print @line, "---\n"; seek DATA, -12, 1; @line = (); push @line, scalar <DATA> while @line < 3; # 意図が分かりやすい print @line; __DATA__ foo bar baz quux
315 名前:nobodyさん mailto:sage [2011/11/17(木) 00:27:12.12 ID:???] やっぱ、なんかしらで回すしか無いですよね。 ありがとうございました。
316 名前:nobodyさん mailto:sage [2011/11/17(木) 00:48:38.68 ID:???] >>315 ループを避ける事自体が至上命令ならば >>314 の1番目か $/ = \64; # 充分なサイズのバッファ my @line = <DATA> =~ /^(.*\n)(.*\n)(.*(?:\n|\z))/;
317 名前:nobodyさん mailto:sage [2011/11/17(木) 00:53:27.15 ID:???] @line = (<DATA>)[0..2];
318 名前:nobodyさん mailto:sage [2011/11/17(木) 09:42:10.49 ID:???] 至上主義ってわけじゃないんだけど、ループの中で特に処理をするわけじゃないから 1行で簡潔にできたら嬉しいよね〜 っていう程度です。
319 名前:nobodyさん mailto:sage [2011/11/18(金) 00:09:48.76 ID:???] ループを決して書こうとしない部下を思い出した。 そいつは自分自身がループして同じ内容を必要な行数分タイプしてたっけ。
320 名前:nobodyさん mailto:sage [2011/11/18(金) 09:22:43.24 ID:???] 8bit機の時代はループの条件判定のタイムロスを惜しんで ループ展開とかやったっけな。アセンブラで。
321 名前:nobodyさん mailto:sage [2011/11/18(金) 10:21:10.82 ID:???] ループではないけど、100程度のif文を自動生成するプログラムなら見たことがある…
322 名前:nobodyさん [2011/11/18(金) 21:40:15.63 ID:1hunDax1] 入門書を読んでて気になったのですが ダブルクォート文字列で使われるエスケープシーケンスと マッチ演算子の中の正規表現で使われるエスケープシーケンスは よく使われる改行文字(\n)やタブ(\t)などが両方にあるので 厳密に言えば違うけれども、大体同じものと理解していいのでしょうか? それとも全く違う、あるいは全く同じものなのでしょうか?
323 名前:nobodyさん mailto:sage [2011/11/18(金) 21:56:27.18 ID:???] 覚えることが少なくなるように同じ記法を採用しているだけで、 それを解釈するコードは文字列と正規表現では別物だと考えて ください。
324 名前:デフォルトの名無しさん mailto:sage [2011/11/19(土) 13:39:08.87 ID:???] 全く同じであれば、本の記述は1回のはず。 別物だから区別して書いてあって、本に2回出てくる。 でも覚えやすいように同じ記法にしている。
325 名前:nobodyさん mailto:sage [2011/11/23(水) 23:35:55.57 ID:???] やっと規制がとけました >>323-324 ありがとうございます
326 名前:nobodyさん mailto:sage [2011/11/26(土) 22:25:41.09 ID:???] CGIに値を渡したいときの方法で質問です。 @ttp://example.com/index.cgi/1/2/ と、PATH_INFOで渡すのと Attp://example.com/?a=1&b=2 と、.htaccessに「DirectoryIndex index.cgi」を書いてPOST風?(呼び方がわからない)で取得する方法があると思いますが、 みなさんどちらを使っていますか? どちらを使おうか悩んでいます。 (最初、index.cgiを消してPATH_INFOで渡せればすっきりするなと思いましたが、それだとttp://example.com/1/2/となって index.cgiを読ませる場所とPATH_INFOの切り分けができないと気づいて今に至っています) 個人の好みになるかもしれませんが、こっちをこんな理由で使っているという感想などいただけたら参考にしたいと思います。 ちなみにformタグではGETを使用しています。
327 名前:nobodyさん mailto:sage [2011/11/26(土) 22:49:02.08 ID:???] >>326 txqz.net/blog/2007/06/16/1641
328 名前:nobodyさん [2011/11/26(土) 23:38:20.62 ID:zFlJhwY9] system()で外部コマンドを呼び出すと呼び出しは行われるのですが、そのあとの処理に進まずに Internal errorになってしまいます。なにか呼び出し方があるのでしょうか system '/bin/ls', "-la"; print "Location: index.html\n\n";
329 名前:nobodyさん mailto:sage [2011/11/26(土) 23:51:55.90 ID:???] そのスクリプトを手元で実行したことはあるかい?
330 名前:nobodyさん mailto:sage [2011/11/27(日) 00:07:55.85 ID:???] CGIで動かしてるんだったらHTTPサーバのログにエラー内容が記録されてるんじゃないか?
331 名前:nobodyさん [2011/11/27(日) 00:56:06.95 ID:E4v1+esL] malformed header from script. Bad header=total 68: test.cgi, referer: redhat6/test.html とか出てます。Systemを実行しなければこのメッセージは出ないです。
332 名前:nobodyさん mailto:sage [2011/11/27(日) 01:07:18.85 ID:???] >malformed header だからヘッダがどうなってるか見ろ
333 名前:nobodyさん [2011/11/27(日) 01:44:44.18 ID:E4v1+esL] ls -la とか バイナリの実行ファイルとかですが、、、
334 名前:nobodyさん mailto:sage [2011/11/27(日) 02:47:47.23 ID:???] うーん… 真っ先に HTTP ヘッダがなければCGIとして機能しないでしょ。 エラーになるのは当たり前。 でもって Location: で飛ばしてるんだから system '/bin/ls', '-la'; は全く意味がない。 仮に print "Location: index.html\n\n"; の次に置いても無視されるだけ。 そのCGIの目的(用途)は何なの?
335 名前:nobodyさん mailto:sage [2011/11/27(日) 03:52:11.45 ID:???] ん? Location: 〜 を print しようがスクリプト自体は最後まで走るでしょ? 問題は system の出力先が標準出力、つまり普通に print するのと同じところに行ってるせいで、 スクリプトからサーバーへ渡される出力が total 8 drwxr-xr-x 2 nobody nogroup 4096 Nov 27 00:00 ./ drwxr-xr-x 3 nobody nogroup 4096 Nov 27 00:00 ../ Location: index.html みたいになってて、 サーバーとしては改行2つより前の部分は HTTP ヘッダとして解釈しなきゃいけない、 でも Location 以外の行は正しい HTTP ヘッダではない。 だからそこで内部エラーとして止めてる、ってことでは? CGI 試す環境ないんで推測だけど。
336 名前:nobodyさん mailto:sage [2011/11/27(日) 04:36:05.90 ID:???] >>335 だからそう書いてるだろ。
337 名前:nobodyさん mailto:sage [2011/11/27(日) 23:08:22.74 ID:???] >>332 「ヘッダ」が分からないので見ろといわれてる対象が分かっていない に一票。 つまり print "Location: index.html\n\n"; は、理解して書いているのではなく、他のプログラムのコピペ。
338 名前:nobodyさん mailto:sage [2011/11/27(日) 23:27:05.03 ID:???] print "Location: index.html\n\n"; の前に system を置いちゃうくらいだからそうなんだろうな。
339 名前:nobodyさん mailto:sage [2011/11/28(月) 01:55:16.13 ID:???] ここまで答えのようなヒントが出てれば、あとは大丈夫でしょう。きっと・・・
340 名前:326 mailto:sage [2011/11/28(月) 15:55:21.96 ID:???] >>327 ありがとうございます。 作成中のものはエントリのページなのでPATH_INFOで渡したいと思います。 この場合、URLからindex.cgiを消して尚且つPATH_INFOを取得するには どのようにしたら良いのでしょうか? ttp://example.com/index.cgi/1/2/ を ttp://example.com/1/2/ にして、index.cgiを実行し、PATH_INFOから"/1/2/"取得したい
341 名前:326 mailto:sage [2011/11/28(月) 16:21:49.46 ID:???] >>340 を実現するためググってみました。 ttp://hatsugen.zakzak.co.jp/qa6717936.html ↑ここの「ANo.3」で下記のように書かれていました。 たとえば、httP://hoge.com/A/B というURLをブラウザに与えると、ブラウザはHTTPサーバー(hoge.com)に対して、/A/Bという ファイルを送れと要求します。 サーバーはこれを探しますが、Bというファイルがなければ、それをディレクトリとみなして/A/B/として/A/B/を探します。 それが存在していれば開いてみます。 httpd.confや.httaccessで下のように指定してあれば、 <IfModule dir_module> DirectoryIndex index.html index.htm index.cgi index.sh </IfModule> 前から順番にファイルを探して表示します。いずれもなければ、またこれも設定にしたがってディレクトリ内のファイル一覧を表示するか、 エラーを返すか、その指定もなければ/B/を切り捨てて環境変数に格納し、/Aについて同様な処理を繰り返します。 つづく
342 名前:326 mailto:sage [2011/11/28(月) 16:23:22.87 ID:???] つづき そこで下記を行いました。 @ttp://example.com/ の階層にindex.cgiと下記一行を書いた.htaccessを置きました。 DirectoryIndex index.cgi Attp://example.com/で、ttp://example.com/index.cgiにアクセスしたことを確認しました。 Bttp://example.com/a/にアクセスするとエラーになりました。 ttp://example.com/a/というディレクトリは存在していないので、 一つ上がったttp://example.com/のindex.cgiを探しに行くのではないかと思うのですが 何か間違えているのでしょうか? どこをどうすればできるようになるのか教えてください。
343 名前:nobodyさん mailto:sage [2011/11/28(月) 16:28:04.90 ID:???] >>340-342 >>1 Apache〜嗜みとして〜 Part3 hibari.2ch.net/test/read.cgi/php/1043851302/ 【Apache】mod_rewriteについて語るスレ hibari.2ch.net/test/read.cgi/php/1023791370/
344 名前:342 mailto:sage [2011/11/28(月) 23:12:53.78 ID:???] >>343 ここまでいくとCGIとは関係なくなってきますね。 誘導ありがとうございます。 質問は取り消します。
345 名前:nobodyさん [2011/11/30(水) 10:29:57.17 ID:gvpuZTLB] 以前、Perlのマニュアル(リファレンスドキュメント)をダウンロードしたことがあったのですが、 今行ったら見つかりませんでした どのページの、どの部分からダウンロードにいけるのでしょうか? また、以前ダウンロードした時はは内容が英語でした 出来れば日本語版があればそちらをダウンロードしたいのですが、どこか内でしょうか?
346 名前:nobodyさん mailto:sage [2011/11/30(水) 10:51:48.72 ID:???] perldoc.jp
347 名前:nobodyさん mailto:sage [2011/11/30(水) 21:09:58.63 ID:???] Markdown.plの出力結果にhtml, head, bodyなどの要素を加えたいんですが そういうオプションとかってデフォルトの機能にはないですよね? 出力されたhtmlファイルを開く→先頭に書き足す→末尾に書き足す→上書き保存 という処理をするスクリプトを書くということ以上の解決策ってないですよね?
348 名前:nobodyさん mailto:sage [2011/11/30(水) 23:31:46.18 ID:???] 中間ファイル作らなくっても 先頭を書き出す→markdown.plを呼び出して結果を書き出す→末尾を書き出す→保存 でいいんじゃね?
349 名前:nobodyさん mailto:sage [2011/12/03(土) 17:25:31.47 ID:???] >>347 >上書き保存という処理をするスクリプトを書くということ以上の解決策 何をもって上/下と言っているのか分からんが、Markdown.pl に書き足す 方法はなぜ思い浮かばないのか。
350 名前:nobodyさん mailto:sage [2011/12/03(土) 19:26:36.05 ID:???] >>349 まあMarkdown.plはいじらないでそのまま使う方が自然だろう。 やるとしたら別名にリネーム(コピー)してから自分専用にカスタマイズ、かな。 ついでに350ゲト
351 名前:nobodyさん mailto:sage [2011/12/04(日) 11:44:58.71 ID:???] >>347 作者に要望を出す。これ最強。たぶんやってくれる。
352 名前:nobodyさん mailto:sage [2011/12/05(月) 11:39:58.61 ID:???] GoogleAnalyticsのモバイル版perlコードについて質問です。 下記の@の所って$ENV{'HTTP_REFERER'}が空だったら$refererはundefになりますよね? ということはAの $referer eq "" でワーニングになるから、 修正したほうがいいですよね?? if ($referer eq "") { #→ × if (defined($referer) && $referer eq "") { #→ ○ ##################################################### # Copyright 2009 Google Inc. All Rights Reserved. use URI::Escape; use constant GA_ACCOUNT => 'MO-1887809-14'; use constant GA_PIXEL => '/ga.pl'; sub google_analytics_get_image_url { my $url = ''; $url .= GA_PIXEL . '?'; $url .= 'utmac=' . GA_ACCOUNT; $url .= '&utmn=' . int(rand(0x7fffffff)); my $referer = $ENV{'HTTP_REFERER'}; #@ my $query = $ENV{'QUERY_STRING'}; my $path = $ENV{'REQUEST_URI'}; if ($referer eq "") { #A $referer = '-'; } $url .= '&utmr=' . uri_escape($referer); $url .= '&utmp=' . uri_escape($path); $url .= '&guid=ON'; $url =~ s/&/&/g; $url; }
353 名前:nobodyさん mailto:sage [2011/12/05(月) 13:46:44.74 ID:???] しっかりと書くなら my $referer = exists $ENV{'HTTP_REFERER'} ? $ENV{'HTTP_REFERER'} : '-'; Referer: 0 は明らかに無効だから単に my $referer = $ENV{'HTTP_REFERER'} || '-'; あと、uri_escape()でやるならURIつかったら sub { my $uri = URI->new(GA_PIXEL); $uri->query_form( 'utmac' => GA_ACCOUNT, 'utmr' => $ENV{'HTTP_REFERER'} || '-', ... ); return $uri; }
354 名前:352 mailto:sage [2011/12/05(月) 15:34:16.27 ID:???] >>353 my $referer = $ENV{'HTTP_REFERER'} || '-'; が自分にはしっくりきました。 ありがとうございます。 よくみたら $query は使ってないですね。 よくみてたら何か色々おかしなコードだ。 とりあえず感謝です。
355 名前:Web初級 [2011/12/08(木) 16:43:00.58 ID:bceXKvCi] 超初心者です。仕事でホームページ1つ作る事に成りました。 職場では私しかDTPの経験がありません(Webかじったのも私一人)。 イラストレーターからドリームウエバーへ、やっと持って来れるようになりましたが、 コーディングがさっぱり上手く行きません。2度ほどWebスクールにデータ持参で習いに 行きましたが、真似してもさっぱり上手く出来ません。 これじゃ何回習っても、金捨てに行くようなもので困っております。 簡単なビジュアルなので、ハイレベルな技術はいらないと思います。 分かりやすい本とかあれば最高なんですが、なにか名案ありませんか。 よろしくお願いします。
356 名前:nobodyさん mailto:sage [2011/12/08(木) 17:01:30.14 ID:???] >>1 を読むこともできないようじゃあ何もできないだろうねえ
357 名前:Web初級 [2011/12/08(木) 18:06:56.56 ID:bceXKvCi] はははは‥…失礼しました。 nobodyさんが即答するスレでしたか、暗号のようなQAで驚きました。 おみそれしました。
358 名前:nobodyさん mailto:sage [2011/12/08(木) 23:09:44.53 ID:???] >>355 355のレベルでこれから頑張るよりも専門の会社に発注して、 自分は本業に専念したほうがよい
359 名前: ◆gHpPvpjxUOSB mailto:sage [2011/12/09(金) 00:04:54.14 ID:???] 格安で俺が引き受けちゃるけんね
360 名前:nobodyさん mailto:sage [2011/12/09(金) 10:54:15.39 ID:???] >>355 そりゃコーディング違いだ。 私もコーディングは外注した方が幸せになれると思う。そんな付け焼き刃じゃどうにもならんでしょ。
361 名前:Web初級 [2011/12/10(土) 08:46:00.83 ID:Suxg5Gi2] 買って来ました「ドリームウエバーCS5.5スーパーリファレンス」と 「3週間でマスターWebデザインの教室」の2冊、これ見て仕上げる しかありません。やっと再就職して、よこされたのがこの仕事。 試用期間中だし、だれもウエブの事は知りません。 やるしかありません。
362 名前:nobodyさん mailto:sage [2011/12/10(土) 08:57:02.65 ID:???] >>361 それと、Perlになんの関係が?
363 名前:nobodyさん mailto:sage [2011/12/10(土) 09:12:56.68 ID:???] >>362 何がわからないのか、わかっていないやつだな。
364 名前:nobodyさん mailto:sage [2011/12/10(土) 09:49:06.29 ID:???] r;ァ'N;:::::::::::::,ィ/ >::::::::::ヽ . 〃 ヽル1'´ ∠:::::::::::::::::i i′ ___, - ,. = -一  ̄l:::::::::::::::l . ! , -==、´r' l::::::/,ニ.ヽ l _,, -‐''二ゝ l::::l f゙ヽ |、 ここはお前の日記帳じゃねえんだ レー-- 、ヽヾニ-ァ,ニ;=、_ !:::l ) } ト ヾ¨'7"ry、` ー゙='ニ,,,` }::ヽ(ノ チラシの裏にでも書いてろ :ーゝヽ、 !´ " ̄ 'l,;;;;,,,.、 ,i:::::::ミ ::::::::::::::::ヽ.-‐ ト、 r'_{ __)`ニゝ、 ,,iリ::::::::ミ ::::::::::::::::::::Vi/l:::V'´;ッ`ニ´ー-ッ-,、:::::`"::::::::::::::;゙ , な! :::::::::::::::::::::::::N. ゙、::::ヾ,.`二ニ´∠,,.i::::::::::::::::::::/// :::::::::::::::::::::::::::::l ヽ;:::::::::::::::::::::::::::::::::::::::::::/ / ::::::::::::::::::::::::::::::! :|.\;::::::::::::::::::::::::::::::/ /
365 名前:nobodyさん mailto:sage [2011/12/10(土) 16:44:40.44 ID:???] 最近では、広告も電子化されてしまい、チラシといっても なかなか通じません。 チラシの裏エディタを紹介しておきますね。 (私も愛用しています) ttp://yuukiremix.s33.xrea.com/chirashi/ >>361 たぶん、それはくびっていう意味だと思うけど。
366 名前:nobodyさん [2011/12/10(土) 17:53:31.12 ID:bJAhMBsm] Perl CGIで、 WEBページにラジオボタン、チェックボックスを配置して、 保存ボタンで各項目のチェック状態をDBに保存して、 次回ページを表示するときに、前回のチェック状態を再現させたいのです。 DBに保存まではできたのですが、ラジオボタンとかのチェック状態を設定するにはどうやればいいのでしょうか?
367 名前:nobodyさん mailto:sage [2011/12/10(土) 18:04:10.96 ID:???] >>366 ラジオボタンやチェックボックスなら該当するinput要素に、 checked="checked" ってすればいいとおもいます。
368 名前:nobodyさん [2011/12/10(土) 18:14:29.61 ID:bJAhMBsm] >>367 HTMLのコードを出力する時に if (checked) { print <input type="radio" checked="checked"> else { print <input type="radio"> } とかやるってことですか? 数が多くてすごい大変なんだけど、これ普通のやり方なのかな
369 名前:nobodyさん [2011/12/10(土) 18:16:11.86 ID:phxklYwZ] >>366 どんだけ馬鹿なの?消えろ おおwwwwだっせーーーーーーーwwwwwwwwwwwwww そんなチェック状態とか簡単に考え付くだろwwwwwwww 引き継げばいいだけなのにwwwwwwwwwww 頭悪すぎ 自分=ウサギ お前ら=カメ まじまだまだ寝てても平気みたいだね
370 名前:nobodyさん [2011/12/10(土) 18:18:06.55 ID:phxklYwZ] こいつらがやってること全部できる 低レベルすぎる やっぱりセンスが違うんだなあ
371 名前:nobodyさん mailto:sage [2011/12/10(土) 18:23:07.58 ID:???] >>368 ヒアドキュメントに変数埋めといて、該当箇所だけにchecked="checked"が展開されるようにするとか、 input要素はループで生成するようにしておいて、if文減らすとか、とか、
372 名前:nobodyさん mailto:sage [2011/12/10(土) 18:27:04.72 ID:???] 保守性とるなら、配列かハッシュにラジオボタンやチェックボックスに必要な内容を入れといて ループで処理かなぁ。
373 名前:nobodyさん mailto:sage [2011/12/10(土) 21:39:06.91 ID:???] .emlからbase64の部分だけ正規表現で抽出する方法ってありますでしょうか?
374 名前:nobodyさん mailto:sage [2011/12/10(土) 22:10:18.53 ID:???] あります。
375 名前:nobodyさん mailto:sage [2011/12/11(日) 11:50:08.36 ID:???] えっ
376 名前:nobodyさん mailto:sage [2011/12/11(日) 12:15:53.32 ID:???] なり
377 名前:nobodyさん mailto:sage [2011/12/11(日) 16:38:26.87 ID:???] >>361 Perlでやれって言われたの? 今から短時間で実装するならPHPしかないんじゃないの。 Perlでテンプレートエンジンとウェブアプリケーションフレームワークの環境構築とかしてる時間はたぶんないんでしょう?
378 名前:nobodyさん mailto:sage [2011/12/12(月) 10:19:09.76 ID:???] >>373 どなたか具体的な方法をお願いしますです
379 名前:nobodyさん [2011/12/12(月) 11:29:18.56 ID:8Y5nZNmR] 本文なのか添付なのか、plainなのかhtmlなのか・・・ 質問がざっくばらんすぎなのでは?
380 名前:nobodyさん mailto:sage [2011/12/12(月) 12:26:49.55 ID:???] ざっくばらんの使い方おかしくね? アバウトすぎるとでも言いたいんだろうけど
381 名前:nobodyさん mailto:sage [2011/12/12(月) 14:15:46.02 ID:???] ページにアクセスすると、POSTじゃない認証(Basic認証?)を使って表示されるページってありますよね そのページをperlで取得しようと思っています。 ですが何度やっても401が帰ってくるばっかりでまったく進展しない・・・ #!/usr/local/bin/perl $|=1; print "Content-type: text/html\n"; print "\n"; #*一度authorization_basicでやってみました。* #*他のサイトではうまくいったのですが 目的のサイトでは動作しなかった為* #*ntlmを試しています* use LWP::UserAgent; use HTTP::Request::Common; my $url = '認証が必要なURL'; # Set up the ntlm client and then the base64 encoded ntlm handshake message my $ua = new LWP::UserAgent(keep_alive=>1); # $ua->credentials('ホスト:80', '', "???\\ID", 'パスワード'); $request = GET $url; print "--Performing request now...-----------<br>\n"; $response = $ua->request($request); print "--Done with request-------------------<br>\n"; if ($response->is_success) {print "It worked!->" . $response->code . "<br>\n"} else {print "It didn't work!->" . $response->code . "<br>\n"} ????の部分に思い当たる物が無いので ????\\を消して見てもだめでした。 どういった動きをしているのか、またなぜ失敗しているのかも負えず・・・困っています 宜しくお願いします
382 名前:nobodyさん [2011/12/12(月) 18:29:36.74 ID:8Y5nZNmR] Google さんで 「LWP::UserAgent ベーシック認証」 でググると、一番上に出てくるんだけどね。 ちゃんと調べろよカス。 use strict; use LWP::UserAgent; my $ua = LWP::UserAgent->new; my $req = HTTP::Request->new(GET => 'www.example.com/secret.html '); $req->authorization_basic('fuga', 'hoge'); # 'ID', 'PASS' my $res = $ua->request($req); あと credentials はダイジェスト認証用じゃないかなと。 ベーシック認証なら authorization_basic を使う。 「ダイジェスト認証 領域名」 でググれば、知識も深まるかと思います。 ちなみに、僕は HTTP::Request::Coomon を使って $req = GET('www.example.com/secret.html '); って やる方が好きです。
383 名前:nobodyさん mailto:sage [2011/12/12(月) 18:48:35.31 ID:???] >>382 どうもありがとう御座います やってみましたが401が帰ってきました・・・ 何でなんだろう? WWW-AuthenticateにはNegotiateとNTLMって出てるのにorz
384 名前:nobodyさん mailto:sage [2011/12/12(月) 19:57:09.04 ID:???] NTLM ・・・ Windows認証か ・・・ perldoc.jp/docs/modules/libwww-perl-5.813/LWP/Authen/Ntlm.pod 領域名の部分をちゃんと指定すれば、最初のコードで認証できるかと。 とりあえずサーバーにIISを使ってるなら、そう書いた方が良いと思う。
385 名前:nobodyさん mailto:sage [2011/12/12(月) 20:04:00.94 ID:???] >>384 すみませんサーバー側でIISを使ってるのかどうか 確認はしたのですが、確かではないのでorz perlのコーディングとは違う質問で申し訳ありませんが、領域名っていうのはいったい何を指定すれば・・・ クライアント側で調べて分かる物なんでしょうか
386 名前:nobodyさん mailto:sage [2011/12/12(月) 20:39:55.27 ID:???] 認証の設定をするときに、サーバー側で設定するもの。
387 名前:nobodyさん mailto:sage [2011/12/13(火) 01:38:11.67 ID:???] >>380 >>379 は日本語がざっくばらんなんですな
388 名前:nobodyさん mailto:sage [2011/12/15(木) 18:36:11.15 ID:???] Spreadsheet::WriteExcel でエクセルファイルを出力しています。 セルはAからZ列があってそこから先はAA,AB,ACと続くのはご存知だと思います。 このアルファベットを数字に対応させたいと思ってますがアイディアがでませんのでどなたかご教示くださいませ。 1→A ,2→B,26→Z まではできるのですが( chr($_ + 0x60) )、27→AA,28→AB 以降をどうするかがわからないのです。 よろしくお願いいたします。
389 名前:nobodyさん mailto:sage [2011/12/15(木) 19:08:41.22 ID:???] $c=q{z};print++$c
390 名前:388 mailto:sage [2011/12/15(木) 19:27:18.02 ID:???] すいません、説明が不足してました。申し訳ございません。 数字が26なら一発でZに、28なら一発でABに変換したいのです。
391 名前:nobodyさん mailto:sage [2011/12/15(木) 20:03:59.53 ID:???] 再帰処理するサブルーチンでも作れば?
392 名前:nobodyさん mailto:sage [2011/12/15(木) 20:45:17.94 ID:???] sub convert { my $n = shift; my $al = shift || ''; return $n > 0 ? convert(int(($n - 1) / 26), chr(0x41 + ($n - 1) % 26) . $al) : $al; } print convert(28); #=> 'AB'
393 名前:388 mailto:sage [2011/12/15(木) 20:50:09.96 ID:???] >>392 完璧です。 ありがとうございました。
394 名前:nobodyさん mailto:sage [2011/12/15(木) 21:08:20.48 ID:???] >>388 Spreadsheet::WriteExcel って、行・列ともに数値で指定できなかったっけ? search.cpan.org/~jmcnamara/Spreadsheet-WriteExcel-2.37/lib/Spreadsheet/WriteExcel.pm#Cell_notation
395 名前:nobodyさん mailto:sage [2011/12/16(金) 07:33:02.00 ID:???] ムダナナヤミダッタトイウオチカ
396 名前:nobodyさん [2011/12/31(土) 11:42:50.17 ID:uq+4+jAH] Perlにかぎったはなしではないのですが、 cgiに送るデータを index.cgi?user=foo ではなく、例えば favstar.fm/tweets/popular のようにディレクトリ風に送って CGI側で受け取るにはどうすれば良いんでしょうか?
397 名前:日系アメリカ人 ◆japYJPNx6A mailto:sage [2011/12/31(土) 11:53:18.05 ID:???] ディスパッチ
398 名前:nobodyさん mailto:sage [2011/12/31(土) 11:54:05.80 ID:???] PATH_INFO
399 名前:nobodyさん mailto:sage [2011/12/31(土) 16:07:44.64 ID:???] >>398 ありがとうございます!
400 名前:nobodyさん [2011/12/31(土) 17:34:33.56 ID:ELwS00/V] www.nicovideo.jp/watch/sm16573796
401 名前:nobodyさん [2012/01/02(月) 00:05:58.15 ID:xN/cFjEo] datファイルの中に書いてあるパスワードと一致した場合にページを表示させたいのですが 以下のソースでコマンドプロントから入力しても必ず失敗してしまいます エラーはなく、perl -cw を使ってもOKになり問題はありませんでした $datfile = "./add.dat"; open(DAT,"+< $datfile"); flock(DAT, 2); $lock = <<"EOD"; <html><head><title>ページ</title></head> <body>認証許可</body></html> EOD $line = <STDIN>; chomp($line); if ($line eq <DAT>) { print "$lock"; } else { print "認証失敗"; } close(DAT); datファイルの中身は「t」という一文字が入っています 詳しい方、教えてください
402 名前:nobodyさん mailto:sage [2012/01/02(月) 00:34:00.94 ID:???] $datfile の1行目に改行があるとかじゃないの? print によるデバッグがしやすいから、面倒でも最初は変数に入れるクセをつけてみると良いかも。
403 名前:nobodyさん mailto:sage [2012/01/02(月) 07:39:45.76 ID:???] まず use strict しろよ