[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 2chのread.cgiへ]
Update time : 06/02 01:51 / Filesize : 211 KB / Number-of Response : 664
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Perlコーディング初心者質問スレ Part 63



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/

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 しろよ

404 名前:nobodyさん mailto:sage [2012/01/02(月) 09:01:46.53 ID:???]
あとコマンドプロントじゃなくてコマンドプロンプトな。



405 名前:nobodyさん mailto:sage [2012/01/02(月) 09:19:16.84 ID:???]
<DAT>からの入力をchompしてないからじゃね?

406 名前:nobodyさん mailto:sage [2012/01/03(火) 02:35:21.75 ID:???]
あまりに下らないミスすぎて、恥ずかしすぎてお礼も言えないってか?

407 名前:nobodyさん mailto:sage [2012/01/03(火) 08:07:23.54 ID:???]
お礼が欲しいなら2ちゃんねる以外でやれ

408 名前:nobodyさん mailto:sage [2012/01/03(火) 08:39:34.48 ID:???]
>>407
うるせえカス

409 名前:nobodyさん mailto:sage [2012/01/03(火) 08:59:10.49 ID:???]
罵倒されるのが嫌なら2ちゃんねる以外でやれw

410 名前:nobodyさん mailto:sage [2012/01/03(火) 11:26:01.27 ID:???]
まあコマンドプロントじゃしょうがないか

411 名前:nobodyさん mailto:sage [2012/01/03(火) 11:59:37.15 ID:???]
プロントにパスタでも食いにいくか。

412 名前:nobodyさん mailto:sage [2012/01/04(水) 19:27:09.19 ID:???]
Webブラウザで表示された内容を取得しようと思ったのですが、
私が欲しい情報はJavaScriptにより出力されたものであるために、
単純にPerlを用いただけでは難しいと分かりました。
どのように対処すれば、JavaScriptの表示部分を取得できるのでしょうか?
よろしくお願いいたします。

413 名前:nobodyさん mailto:sage [2012/01/04(水) 22:01:40.66 ID:???]
サーバーで javascript を走らせるフレームワークがあったような気がする

414 名前:nobodyさん mailto:sage [2012/01/05(木) 01:03:58.26 ID:???]
spidermonkeyとか?js読めばどこに通信して何をしてるか分かるから、js無くてもいけると思うけど。



415 名前:nobodyさん mailto:sage [2012/01/05(木) 01:39:51.36 ID:???]
Ajax で表示してるなら、firefox での拡張で HTTP 通信を覗けるのがあるから、
それで見張ればいい。

firefox 入れなくない!っていうなら snooper で見ればいい。

416 名前:nobodyさん mailto:sage [2012/01/05(木) 22:01:42.38 ID:???]
急にPerlでCGIプログラムをやることに。
みなさんIDEは何をお使いですか?

今んとこ慣れないEclipseでやろうと
思ってます。

417 名前:nobodyさん mailto:sage [2012/01/05(木) 22:27:56.90 ID:???]
Perlを始めとした動的言語では
コード補完もリファクタリングもヘルプも
中途半端にしかならないからIDEは重いだけだよ。

418 名前:nobodyさん mailto:sage [2012/01/05(木) 22:34:01.35 ID:???]
テキストエディタのみ

最近はブロックの折り畳みとかあるんで、充分強力

419 名前:nobodyさん mailto:sage [2012/01/05(木) 22:54:26.32 ID:???]
IDEに助けてもらおうと思ったんですが
効果が薄いようですね。
腹くくってエディタでやります。

420 名前:nobodyさん mailto:sage [2012/01/06(金) 02:05:15.33 ID:???]
各個人のポリシー次第。なのかもしれませんが、質問です。

モジュール ( .pm) を作ったときって、何かエラーが合った場合に
die でスクリプトを止めてしまってエラーを通知するべきか、
それとも STDERR にエラーを出力しつつスクリプトは止めないようにするべきか、
どちらがオススメのコーディングの仕方なんでしょう?

421 名前:nobodyさん mailto:sage [2012/01/06(金) 02:11:20.73 ID:???]
男は黙ってcroak

422 名前:nobodyさん mailto:sage [2012/01/06(金) 03:13:39.39 ID:???]
>>420
してほしい事をやらせて
してほしくない事をやらせなければよい。

423 名前:nobodyさん mailto:sage [2012/01/07(土) 06:25:16.35 ID:???]
>>421
croak が分からなかったので調べてみた。
呼び出し元が分かる die か。なるほど。
ワーニングには carp か。


ありがとう!



>>422
根本的に文章が読みとれてないですよ。


424 名前:nobodyさん mailto:sage [2012/01/07(土) 12:06:24.49 ID:???]
>>423
> 根本的に文章が読みとれてないですよ。
俺は422ではないが、そっくりそのままお返しする。



425 名前:nobodyさん mailto:sage [2012/01/07(土) 13:19:20.03 ID:???]
420は2択を迫っているが、422は場合によるといっていて、その場合についての説明もしている。
422が正解だと思うが。


426 名前:nobodyさん mailto:sage [2012/01/12(木) 05:19:37.52 ID:???]
どうすんのがいいのか聞いてんのに場合によりけりとしたり顔で言われたら脱力する
420は場合によりけりということがわかった上で、基本的なスタンスはどっちがいいか聞いてんじゃないの?

俺はプロセス殺すなー
変な値入ってんのに処理続けても意味ないし
warnなんてデバッグでしか使ったことないや

427 名前:nobodyさん mailto:sage [2012/01/12(木) 12:02:21.96 ID:???]
>>426
おまえも読解能力の欠陥持ちか。
「場合によりけり」では結局何も答えてないに等しいが、>>422はそんなこと書いてないだろ。
どういう時にどっちを選択すればいいかが簡潔に書いてあるだろ。

428 名前:nobodyさん mailto:sage [2012/01/14(土) 02:03:55.49 ID:???]
time_tが32bitか64bitかを調べる方法はありますか?
2038年1月19日3時14分7秒以降のUNIX時間を取得してみるよりスマートな方法で。

学校の宿題でカレンダーを作ったら2038年2月でずれちゃいました。

429 名前:nobodyさん mailto:sage [2012/01/14(土) 05:41:58.49 ID:???]
overflow 日付は分かってるんだから、最大値+1を与えた時に
日付がどうなってるか確かめればよい

430 名前:nobodyさん mailto:sage [2012/01/14(土) 10:28:47.22 ID:???]
> 2038年1月19日3時14分7秒以降のUNIX時間を取得してみる

これで充分スマートじゃないか?


431 名前:nobodyさん mailto:sage [2012/01/14(土) 12:11:45.71 ID:???]
俺に言わせれば、time_tが32bitか64bitかなんて重要な問題じゃないね。
本当に知りたいことは、2038年1月19日3時14分7秒以降が扱えるかだろう? (キリッ)

432 名前:nobodyさん mailto:sage [2012/01/14(土) 12:21:34.67 ID:???]
ぶってぇ釣り針垂らしやがって・・・

433 名前:nobodyさん mailto:sage [2012/01/14(土) 15:29:38.07 ID:???]
つーか「これは仕様です」で十分でしょ、実際仕様なんだから。
年が4桁で有限なのと同じでしょ。

434 名前:nobodyさん mailto:sage [2012/01/14(土) 15:46:35.43 ID:???]
・Perl 5.12 以降を使う
・Time::y2038 モジュールを使う
・DateTime モジュールを使う
のどれかで解決



435 名前:nobodyさん mailto:sage [2012/01/14(土) 16:24:02.91 ID:???]
他の人の労力で解決っているのは、仕事ではそうすべきだけど、
"トレーニング" である宿題ではそうすべきではない。むしろ
time_t にさえ依存せず、自力で10桁年カレンダーのような無駄
なものを作って自分自身の糧とすべし。

436 名前:nobodyさん mailto:sage [2012/01/14(土) 18:04:47.99 ID:???]
>>435
その考え方は賛成できるけど、このスレ的には「車輪の再発明」って言われちゃうんだよね〜 orz


437 名前:nobodyさん mailto:sage [2012/01/14(土) 18:26:43.69 ID:???]
じゃあ、トレーニングだ。

自分で考えろ。こんな所聞くな。
他の人の労力で解決すんな。

438 名前:nobodyさん mailto:sage [2012/01/14(土) 21:36:35.23 ID:???]
車輪の再発明はいいんだけど、大抵は独学のトホホなプログラムができあがあるから、せめて一度
既存モジュールの中身を読んでくれ。

439 名前:nobodyさん mailto:sage [2012/01/14(土) 23:37:55.97 ID:???]
先生のために宿題をするのか、自分のために宿題をするのか違い。

440 名前:nobodyさん mailto:sage [2012/01/15(日) 20:18:01.72 ID:???]
単位のためだろ

441 名前:nobodyさん mailto:sage [2012/01/15(日) 20:45:40.76 ID:???]
そういうの全く理解できないんでごめんな

442 名前:nobodyさん mailto:sage [2012/01/18(水) 21:06:05.29 ID:???]
元ファイルの内容を書き換えて別ファイルに保存する方法を教えてください。
元ファイル aaa.txt
変換プログラム trans.cgi
変換後のファイル bbb.txt

aaa.txt に書いてある「あ$kanaお」を読み込んで
trans.cgi にて$kana = きくけ; として変換し
bbb.txt に「あきくけお」で出力するには、どうしたらいいのでしょうか。

open関数で +< という読み書きでファイルを開いても
空テキストが作成されるだけで、うまくいきません。
どうかよろしくおねがいします。

443 名前:nobodyさん mailto:sage [2012/01/18(水) 21:27:56.62 ID:???]
open(my $infh, ?<:utf8?, ?input.txt?);
open(my $outfh, ?>:utf8?, ?output.txt?);
while(my $line = <$infh>){
  〜処理〜
  print $outfh $line;
}
close($outfh);
close($infh);

444 名前:nobodyさん mailto:sage [2012/01/18(水) 22:19:08.77 ID:???]
>>442
perldoc.jp/docs/perl/5.10.1/perlfaq5.pod

my %var = (FOO => 'bar');
open my $fh, '+<', $file or die $!;
read $fh => my $text, -s $fh;
$text =~ s/__([A-Z]+)__/$var{$1}/g;
seek $fh, 0, 0;
print $fh $text;
truncate $fh, tell;
close $fh;

open my $sfh, '<', $src_file or die $!;
open my $tfh, '>', $tmp_file or die $!;
while (<$sfh>) {
  s/__([A-Z]+)__/$var{$1}/g;
  print $tfh $_;
}
close $tfh and close $sfh or die $!;
rename $tmp_file => $src_file or die $!;



445 名前:442 mailto:sage [2012/01/18(水) 22:35:01.78 ID:???]
>>443さん
>>444さん

お返事ありがとうございました。
じっくり読んで頑張ってみたいと思います


446 名前:nobodyさん [2012/01/25(水) 02:08:42.13 ID:8GsK3GVU]
ファイルの置換について質問させてください。
コマンドラインから、
echo "test.txt" | xargs perl -pi -e 's/hoge/HAGE/g'
とすると正しく置換されるのですが、
ブラウザからapacheをとおして、スクリプト内で上記のコマンドを、
`echo "[フルパス]test.txt" | xargs perl -pi -e 's/hoge/HAGE/g'`

system "echo ¥"[フルパス]test.txt¥" | xargs perl -pi -e 's/hoge/HAGE/g'"
とするとうまく置換されないのはなぜでしょうか?
またこのケースですとスクリプト内での記述はどのようにするのが適切でしょうか?宜しくお願い致します。



447 名前:nobodyさん mailto:sage [2012/01/25(水) 03:35:55.61 ID:???]
CGI実行時のユーザ権限は
そのユーザ権限でファイルや当該ディレクトリは書き込み可能になっているか
をまずチェック。

448 名前:nobodyさん [2012/01/25(水) 03:57:31.07 ID:Arlh9fb/]
447さん
お返事ありがとうございます。ディレクトリとファイルは権限777にして試してみたのですが、
置換されませんでした。あとスクリプト中の文字のエスケープ漏れもみなおしてみたのですが、
結果変わらずでした。さらに調べてみます。ありがとうございます。

449 名前:nobodyさん mailto:sage [2012/01/25(水) 04:06:26.93 ID:???]
どう出来ないのか
エラーは出てないのか
端末でスクリプトを走らせたらどうなるか

450 名前:nobodyさん mailto:sage [2012/01/25(水) 08:23:33.82 ID:???]
Apacheのerrorログを見てみる ←基本

451 名前:nobodyさん mailto:sage [2012/01/28(土) 22:01:51.13 ID:???]
errorログを見て特に問題はないと思っていたら...

sendmailのログでしたorz←

452 名前:nobodyさん mailto:sage [2012/01/29(日) 11:48:32.08 ID:???]
コマンドラインやめてopen(FILE,"[フルパス]test.txt")しちゃいなよ

453 名前:nobodyさん mailto:sage [2012/01/31(火) 17:42:02.72 ID:???]
質問質問!
&sub1(qq(asdasdqwdasdasd));
sub sub1
{
while($_[0] =~ /asd/gs )#←@
{
print $_[0];#←@でマッチした中身を出力したいが、subの引数
}
}
こんな感じのプログラムを作ったのですが
$_[0]の中身が更新できなくて困っています・・・
どなたか回避する方法を教えてください!お願いします

454 名前:nobodyさん mailto:sage [2012/01/31(火) 17:56:37.52 ID:???]
/asd/gs
 ↓
/(asd)/gs


あとついでに書き直した。

sub1(qq(asdasdqwdasdasd));
sub sub1{
 my $str = shift || '';
 while($str =~ /(asd)/gs){
  print $1;
 }
}

慣れてくれば良いけど、初心者であるうちは $_ をそのまま使わずに関数内で変数を用意して
そこへ格納したほうがいいよ。




455 名前:nobodyさん mailto:sage [2012/01/31(火) 18:23:59.58 ID:???]
>>454
2つほど質問があるのですがいいですか!

456 名前:nobodyさん mailto:sage [2012/01/31(火) 18:26:09.85 ID:???]
お礼を書くのを忘れていました
>>454 さん ありがとう御座います。

457 名前:nobodyさん mailto:sage [2012/01/31(火) 18:52:11.00 ID:???]
don't ask to ask

458 名前:nobodyさん mailto:sage [2012/01/31(火) 21:02:02.01 ID:???]
CGIのデータベースを運用しています。

auの端末で検索できるものとできない機種があります。
同じ2009年にでたモデルでもできるできないがあります。
例えばCA002はできるけど、K002はだめ。

できないものは、何も検索フォームに入れないで検索してもダメです。

Jcode.pl 2.13でエンコードしてますが、
これが悪いのでしょうか?

どうしたら、文字検索をできるようにできますか?



459 名前:nobodyさん mailto:sage [2012/01/31(火) 21:33:09.50 ID:???]
>>458
携帯サイトのWebプログラムを語ろう Part3
kohada.2ch.net/test/read.cgi/php/1232544986/

460 名前:nobodyさん mailto:sage [2012/01/31(火) 22:38:52.20 ID:???]
表示してる文字コードはなにか

端末が送ってきてる文字コードは本当に希望したものか


461 名前:nobodyさん mailto:sage [2012/01/31(火) 22:46:58.04 ID:???]
>>460
Shift_JISです。

462 名前:nobodyさん mailto:sage [2012/01/31(火) 22:57:27.90 ID:???]
utf-8 で書きませう

463 名前:nobodyさん mailto:sage [2012/01/31(火) 23:06:58.71 ID:???]
Jcode.pmの好きなおいらがアドバイスしにやってきたょミ☆
初心者スレだしねミ☆

464 名前:nobodyさん mailto:sage [2012/01/31(火) 23:43:18.05 ID:???]
>>462
邪悪なutf-8イラネ



465 名前:nobodyさん mailto:sage [2012/02/01(水) 00:41:51.19 ID:???]
たしかに utf-8 はマッピングミスとかあるけど、
他からデータを持ってきたりとかしない場合には utf-8 で問題無い。


466 名前:nobodyさん mailto:sage [2012/02/01(水) 01:42:35.88 ID:???]
Shift_JIS vs UTF-8 のゴングが今、スレ内に鳴り響きました!

467 名前:nobodyさん mailto:sage [2012/02/01(水) 04:46:09.17 ID:???]
まずはアクセスログと標準入力に何が渡されたかを見る。

468 名前:nobodyさん mailto:sage [2012/02/01(水) 06:04:45.99 ID:???]
>>466
プログラム板でやれ

469 名前:nobodyさん mailto:sage [2012/02/01(水) 23:55:30.88 ID:???]
続きはSJIS板で

470 名前:nobodyさん mailto:sage [2012/02/03(金) 01:56:38.79 ID:???]
cp932板はありますか?

471 名前:nobodyさん mailto:sage [2012/02/03(金) 02:11:46.79 ID:???]
あるよ

472 名前:nobodyさん mailto:sage [2012/02/04(土) 02:53:54.65 ID:???]
LWP::UserAgent で指定 URL をアクセスして、リダイレクトされた際に実際にアクセスした URL を知るにはどうしたら良いでしょうか?

header('Location') で調べれば良いと思ったものの、リダイレクトされた後には Location ヘッダは無く、
max_redirect(0) でリダイレクトさせなければ Location ヘッダを取得できて、リダイレクト先を知ることは出来ました。

max_redirect(0) でアクセスして、Location ヘッダがあれば max_redirect(1) とかにしてアクセス。
リダイレクトが1回で済まなければ max_redirect(2) でアクセスしてみる。

と言ったことをやってるのですが、これが非常に面倒なので結果的にアクセスした URL が取得できればと考えて質問させていただきました。

473 名前:nobodyさん mailto:sage [2012/02/04(土) 03:45:11.91 ID:???]
>>472
response_done ハンドラか response_redirect ハンドラに URL を記録する処理を追加する。
search.cpan.org/dist/libwww-perl/lib/LWP/UserAgent.pm#Handlers

474 名前:nobodyさん mailto:sage [2012/02/04(土) 09:09:19.56 ID:???]
んなことしなくても、
HTTP::Response オブジェクトは使われた HTTP::Request オブジェクトを丸々保持してるし、
リダイレクト前の Response も previous メソッドでたどれる。

use LWP::UserAgent;
my $ua = LWP::UserAgent->new;
my $res = $ua->get("t.co/hog7vmt5");
do { print $res->request->uri, "\n"; } while ($res = $res->previous);
__END__
www.asahi.com/national/update/0204/TKY201202030789.html
t.asahi.com/5gxs
t.co/hog7vmt5



475 名前:473 mailto:sage [2012/02/04(土) 09:40:24.08 ID:???]
>>474
成程、そっちをみれば良かったのか。勉強になったよ。

use LWP::UserAgent;
my $r = LWP::UserAgent->new->get('t.co/hog7vmt5');
print map $_->request->uri . "\n", $r->redirects, $r;
__END__
t.co/hog7vmt5
t.asahi.com/5gxs
www.asahi.com/national/update/0204/TKY201202030789.html

476 名前:nobodyさん mailto:sage [2012/02/04(土) 16:24:03.95 ID:???]
>>473-475
自分には >>474 さんの書き方がしっくりきたので、
これでいこうと思います。
ありがとうございました。



どうでもいい事だけど・・・
do{ }while( ) ってあまり好きじゃないw
ループの条件式が後に来るってーのが、なんか馴染めない (^-^;

477 名前:nobodyさん mailto:sage [2012/02/05(日) 04:49:54.12 ID:???]
>>476
> do{ }while( ) ってあまり好きじゃないw
> ループの条件式が後に来るってーのが、なんか馴染めない (^-^;

その方が都合のいいケースもたまにあるでしょ。
最低1回は処理が必要、って時が。たまにね。

478 名前:474 mailto:sage [2012/02/05(日) 10:00:34.05 ID:???]
動作というより記法について言ってるのでは。
特にブロックの中身が複数行のときは最後の while を見るまでループだってことがわからんのが痛い。
あとまあ、動作も実際気持ち悪い。本物のループブロックじゃないから next とか使えんし。
まともに書く時はちょっと記述増えることになっても普通の while と last とかを組み合わせるほうがいい。

479 名前:nobodyさん [2012/02/06(月) 18:29:54.91 ID:ryr2jQRg]
Perlによるネットワークプログラムの質問です。
Perl でアクセスしたいサイトがあるのですが、Perlからhtmlを読むことが出来ません。
IE8の「ソースを表示」では表示できるのですが。

アクセスしたいサイト :cinema.pia.co.jp/
Perlのスクリプトの場所 :x68000.q-e-d.net/~68user/net/sample/http-client-2.pl
その説明 : x68000.q-e-d.net/~68user/net/http-3.html

【実行結果】
perl http-client-2.pl -GET cinema.pia.co.jp/
HTTP/1.1 200 OK
Date: Mon, 06 Feb 2012 09:25:43 GMT
Server: Apache
Last-Modified: Fri, 28 Aug 2009 06:41:24 GMT
ETag: "304a0-2-f9082d00"
Accept-Ranges: bytes
Content-Length: 2
Connection: close
Content-Type: text/html

1

で終わってしまい、肝心のHTMLのBODYの部分を表示する事が出来ません。
どなたか分かる方教えてください。

480 名前:nobodyさん mailto:sage [2012/02/06(月) 20:02:58.69 ID:???]
LWP 使えば?

481 名前:nobodyさん mailto:sage [2012/02/06(月) 20:18:45.51 ID:???]
>>480
オレもLWP使うに1票

482 名前:nobodyさん mailto:sage [2012/02/06(月) 22:10:48.93 ID:???]
wget使えば?

483 名前:nobodyさん mailto:sage [2012/02/06(月) 22:53:24.14 ID:???]
一度やってみたかったのでtelnetにコマンドを流し込みます。
覚えるともう、病みつきです。ftpもこれでやってます。
sendmailだって大丈夫です。

484 名前:479 [2012/02/07(火) 01:13:45.57 ID:eo0HNsOB]
>>479 です。返信ありがとうございます

>>480 >>481
LWP 使ってみました。www.sea-bird.org/doc/Solaris8/Perl_4.html
出来ました
>>482
wget をPerlから?使う方法が分かりませんでした。コマンドとして使うという事なら目的と違います
>>483
上記チュートリアルサイトにて telnet も試しましたが、駄目でした


実は本当にやりたいことは別にあったので、すみませんが質問をやり直させてください

このサイトは、映画レビューサイトなのですが、
cinema.pia.co.jp/user/xxxxx/imp/all/ (xxxxxは数字)
にて、各ユーザーのレビュー一覧を見る事が出来ます
(実は自分のレビューを抽出したいだけです)
しかし、Perlからのアクセスでは、LWPを使ってもここではじかれてしまいます
(IE8の「表示→ソース」では見れるが、Perlにprintさせると違うものになっている)

どなたか原因分かりますでしょうか?



485 名前:nobodyさん mailto:sage [2012/02/07(火) 01:25:44.20 ID:???]
「違うもの」が何だか分からないけど、ユーザーエージェントをIEにしてみたら?

486 名前:nobodyさん mailto:sage [2012/02/07(火) 01:48:21.80 ID:???]
>>484
use LWP::UserAgent;
use HTTP:Request::Common;
my $ua = LWP::UserAnget->new();
$ua->agent('Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0C; .NET4.0E)');
my $req = GET('cinema.pia.co.jp/user/xxxxx/imp/all/');
my $res = $ua->request($req);
if(open(my $outfh, '>', 'debug.html')){
print $outfh $res->content() || '';
close($outfh);
}







[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<211KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef