電子書籍の厳選無料作品が豊富!

perlで、URLからサイトが表示されるかを確認するプログラムを作成しました。
ただ現在の方法だと、チェックするデータ件数が多くなるとエラーとなってしまいます。

現在のソース
(ここから)
open(DB,"$memfile") || &error("Open Error : $memfile");
flock DB, 2;
@lines = <DB>;
close(DB);

@new=();
foreach $line (@lines) {
$flag=0;
($num,$url,$title) = split("<>", $line);

&url_ckeck("$url");
$data = "$num<>$url<>$title\n";
$data =~ s/\n<>/<>/g;
$data =~ s/\r\n<>/<>/g;
$data =~ s/\r<>/<>/g;
push(@new,$data);

}
open OUT, "> $memfile";
print OUT @new;
close OUT;
(ここまで)

この方法だと300件を超えると「ページが表示出来ない」エラーがでてしまうので、
チェックの方法を小分けしてエラー回避できないかを考えているのですが、とのようにすれば良いのかがわからず先に進められなくなってしまいました。

プログラムも見よう見真似で作成しているのでおかしな箇所が多々あるかと思いますが、助けていただけないかと思い書き込みました。
「$line (@lines)」を「$start .. $end」として件数を小分けにしてボタンを表示させてクリックして進められるようにしてみたらとも思いましたが
データがうまく更新出来ずにいます。

不明点はご指摘ください。
よろしくお願いいたします。

A 回答 (1件)

> 「ページが表示出来ない」エラー



そんなエラーはPerlそのものにはありません。
例えば、このスクリプトはCGIとして実行されていて、なんかのエラーがあるのでhttpサーバーがエラーコードを返して、それをブラウザが「ページが表示出来ない」とエラー表示している、そんな感じではないでしょうか。

まずは、真のエラーの理由と突き止めるのが先決です。
PCで実行してエラーメッセージを確認する、とか、 use CGI:Carp を使ってエラーメッセージをブラウザに表示させる、とかです。

少なくとも、例示されている部分には、多少変なところはありますが、「300件を越えるとエラーになる」というような箇所はありません。あるとすれば、ここに書いてないもの、例えば url_ckeck とかです。


あとは、変数を宣言しなくても使えるPerlですが、ある程度の規模になると、やはりきちんと宣言して有効範囲を限定させることが、意図しない間違いの防止に繋がります。
use strict; use warnings ;は積極的に使いましょう。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
今、確認しましたら、エラーとならずに途中で停止する形となりました。
ちゃんとした説明でなく申し訳ございません。

お礼日時:2011/06/24 16:28

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!