トップページ⇒php
1001コメント322KB

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

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2008/02/25(月) 19:25:51ID:???
Perlのコーディングで困ってる人のスレです。

【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
「コマンドの意味がわかんない」とかはマニュアル見ましょう。
回答者さんは何でも屋じゃありません。

1: 自分はこういう事がしたい。
2: それでこんな風にやってみたが・・・
3: こんなエラーが出て上手く行かなかった。

最低でも1と3が無いと誰も答えられないよ。
良い回答は良い質問から。一緒に勉強しましょう。

お勧めサイトは >2 以降

前スレ http://pc11.2ch.net/test/read.cgi/php/1189939783/
過去ログ倉庫 ttp://user.ftth100.com/mirrorhenkan/perl/
0002nobodyさん2008/02/25(月) 19:26:15ID:???
ム板Perlスレより 1 of 2

[プログラミング自体の経験が無い奴はまずココを読め]
Perlプログラミング講座: ttp://www.site-cooler.com/kwl/perl/

[本]
リャマ: ttp://www.oreilly.co.jp/books/4873111269/
駱駝: ttp://www.oreilly.co.jp/books/4873110963/
Effective Perl: ttp://www.ascii.co.jp/books/detail/4-7561/4-7561-3057-7.html
クックブック: ttp://www.oreilly.co.jp/books/4873112028/
Perl ベストプラクティス: ttp://www.oreilly.co.jp/books/4873113008/
Perl Hacks: ttp://www.oreilly.co.jp/books/9784873113142/

[オンラインマニュアル] (追加)
最新のドキュメント: ttp://search.cpan.org/dist/perl-5.8.8/
perl5.8.xのドキュメント(一部): ttp://www.kt.rim.or.jp/~kbk/perl-5.8/
perl5.005_03 のドキュメント: ttp://www.kt.rim.or.jp/~kbk/perl5.005/
日本語ドキュメント検索: ttp://www.cpan.jp/search.cgi
perldoc.jp: ttp://www.perldoc.jp/
Perldoc.com: ttp://www.perldoc.com/
0003nobodyさん2008/02/25(月) 19:26:39ID:???
ム板Perlスレより 2 of 2

[モジュール]
CPAN.com: ttp://search.cpan.org/
河馬屋二千年堂: ttp://homepage3.nifty.com/hippo2000/

[テクニック]
Perlメモ: ttp://www.din.or.jp/~ohzaki/perl.htm
Perlのページ: ttp://homepage1.nifty.com/nomenclator/perl/
Perlの小技: ttp://homepage3.nifty.com/hippo2000/perltips/index.htm

[Perl5.8Unicodeメモ]
ttp://www.pure.ne.jp/~learner/program/Perl_unicode.html
ttp://www.namazu.org/~tsuchiya/perl/perl-5.8.html
ttp://www.lr.pi.titech.ac.jp/~abekawa/perl/perl_unicode.html
0004nobodyさん2008/02/25(月) 22:05:56ID:???
WindowsXP+XAMMP+Perl Add-onで、WWW:Mixiを利用して、
ttp://digit.que.ne.jp/work/wiki.cgi?Perl%e3%83%a2%e3%82%b8%e3%83%a5%e3%83%bc%e3%83%ab%2fWWW%3a%3aMixi
↑のHPのコードを動かしているんですが、

500 Can't locate object method "configure" via package "Net::HTTP"

というエラーが出ます。同じCGIをXREAで動かした場合は正常に動作しました。
これはどういった理由でエラーが起こっているんでしょうか?
0005nobodyさん2008/02/25(月) 22:17:42ID:???
>>4
鯖にモジュールがインストールされてないんじゃない?
/usr/lib/的なフォルダに/Net/HTTP.pmを入れてみたら?
0006nobodyさん2008/02/25(月) 22:28:05ID:???
>>5
確認してみたのですが、HTTP.pmは既にモジュールとして入っていました。
HTTPというフォルダも同じ場所にあったので、競合してるのかなと思い名前などを弄ってみたのですが、
フォルダ名をいじった場合でもHTTP.pmを移動した場合でも、エラーは

501 Can't locate object method "new" via package "LWP::Protocol::http"

となりました。LWP/Protocol/http.pmも既に入っていました・・・orz
0007nobodyさん2008/02/25(月) 22:31:43ID:???
>>6
http://www.google.co.jp/search?hl=ja&client=firefox-a&channel=s&rls=org.mozilla%3Aja%3Aofficial&hs=wkI&q=Can%27t+locate+object+method++Perl&btnG=%E6%A4%9C%E7%B4%A2&lr=lang_ja
0008nobodyさん2008/02/25(月) 23:24:10ID:???
perlで書いた2つのCGIがあるのですが、
1つ目のCGIを実行中にエラーが起きた時に$ERROR=1等として
エラーフラグに数値を入れて、その値を2つ目のCGIに渡して
2つ目のCGIでエラーメッセージを表示させたいのですが、
色々調べているのですが上手く行きません。

何か上手く2つ目のCGIに値を渡す方法がありましたら、
よろしくお願いします。
0009nobodyさん2008/02/25(月) 23:44:14ID:JDOb3tEV
Aフォルダの中にある10〜30.txtファイルがあります。
Aフォルダの中身はこれが全てでこれを全部開きたいのです。

open(FILE, '10.txt') or die "$!";
while (my $line =<FILE>) {
print $line;
}
close(FILE);

これだと一つのファイルの中身は見れますが、フォルダの中全てを開きたい
僕にとってこれは違う気がします。
なんとか、方法はないでしょうか?宜しければ教えてください。
0010nobodyさん2008/02/25(月) 23:55:34ID:???
>>9
>>2
http://www.site-cooler.com/kwl/perl/6.htm#6-4
0011nobodyさん2008/02/26(火) 01:25:07ID:???
オブジェクト指向を勉強中です。
あるメソッドが、自分自身のクラス内のクラスメソッドを呼び出すには
どのように書いたらよいでしょうか。
クラスメソッドは普通Package->hoge()とするようですが、
自分自身のパッケージをわざわざ書くのが正しいのかと
疑問に思いました。よろしくお願いします。
0012nobodyさん2008/02/26(火) 01:59:04ID:???
__PACKAGE__->hoge();
0013nobodyさん2008/02/26(火) 02:33:17ID:???
ありがとうございます!
001442008/02/26(火) 07:45:15ID:???
>>7
色々と見てみましたが未だ解決しませんorz
0015nobodyさん2008/02/26(火) 09:29:48ID:???
>>14
XAMPPには詳しくないですが、
出力とは別にエラーログに書かれてないですか?
XAMPP/log/error.logみたいに
0016nobodyさん2008/02/26(火) 11:40:40ID:???
ライブラリを読み込む優先順位なんですが、
カレントディレクトリを最優先したいので、
unshift @INC, pop @INC; ってしたいと思うんですが、
環境によってうまくいかなかったりします?

自分の環境で@INCを表示すると
C:/usr/site/lib C:/usr/lib . となるんですが、
unshift @INC, '.';のほうが良いんですかね?
0017nobodyさん2008/02/26(火) 11:59:34ID:???
.がどこにあるかは環境によって違うから、除去と追加は.を明示した方がいいんじゃないか。
0018nobodyさん2008/02/26(火) 12:45:05ID:???
>>16
use lib '.'; で良きに計らってくれる。
http://search.cpan.org/src/RGARCIA/perl-5.10.0/lib/lib_pm.PL

5.00503 の lib.pm だと重複除去をしてくれないから

BEGIN {
  my %dup;
  @INC = grep !$dup{$_}++, ('/path/to/your/extlib', @INC);
}

なんて書いたりするけど。
0019nobodyさん2008/02/26(火) 13:03:29ID:???
>>17 >>18 ありがとう
use FindBin;
use lib $FindBin::Bin;
で解決しました。

重複してるけど、除去しなくても
確実にカレントディレクトリで見つかれば問題ないですよね?
0020nobodyさん2008/02/26(火) 15:20:10ID:???
>>15
apacheのerror.logならあるのですが、
perl実行時のエラーを吐き出しているlogはありませんでした。

WWW:Mixiで使っているモジュールがあるかどうかなども確認したのですが、
全て揃っていて、Winの自鯖なので権限なども関係ないと考えているのですが・・・解決しません。
0021nobodyさん2008/02/26(火) 16:11:53ID:rftlSzSy
WIN鯖はなにかと問題が多いんで
切り替えることをおすすめしますよ。
0022nobodyさん2008/02/26(火) 16:27:13ID:???
>>20
XAMPPとかWWW::Mixiがどんな仕様か詳しくは知らないけど、
普通のPerl-CGIなら、そのApacheのerror.logにエラーが出力されてるハズ。
0023初心者2008/02/28(木) 15:16:09ID:GDQH6oGX
最終的に曜日を知りたいので、指定した○年○月1日まで、今から何日前なのか後なのかを計算する
方法をどなたか教えてください。
0024nobodyさん2008/02/28(木) 15:55:55ID:???
>>23
http://search.cpan.org/dist/Date-Calc/
http://perldoc.jp/docs/modules/Date-Calc-5.3/Calc.pod
use Date::Calc qw(Day_of_Week);
my $dow = Day_of_Week($year,$month,$day);
0025nobodyさん2008/02/28(木) 15:57:12ID:???
Windowsの英語版と日本語版を区別する方法ってないですか?
$^OでOS名は取れるのですが…
現在はシステムの`date /t`の戻り値を見て判断しています。
0026初心者2008/02/28(木) 16:11:55ID:GDQH6oGX
>>24さんありがとうございます。
出来ればモジュールを使わずに日数を計算する方法はないんでしょうか?
0027nobodyさん2008/02/28(木) 16:36:04ID:TYs56hmn
>>24
>>1
0028nobodyさん2008/02/28(木) 16:36:24ID:TYs56hmn
間違えたwすまんw
>>26
>>1
0029nobodyさん2008/02/28(木) 16:55:57ID:???
>>25
http://homepage3.nifty.com/hippo2000/perltips/Win32/OLE/NLS.htm
0030nobodyさん2008/02/28(木) 17:21:40ID:???
知恵を貸してください
ログインスクリプト作ってるんですが
最初の画面でhttpかhttpsを選択
httoの場合は普通に次の画面でCookie食べておしまい

https(SSL)の方はpost後代理鯖(共有SSL)でCookie食べる
locationで元の鯖に飛ばしてhttpの方もCookie食べる
という処理なのですがlocationなので当然丸見えなんです。。。
何かスマートな方法ありましたらご教示願います。
0031252008/02/28(木) 17:24:53ID:???
>>29
サンクス。解決したよ
0032nobodyさん2008/02/28(木) 21:20:30ID:???
LWP::UserAgentについて質問があります。
下ページを取得しようとすると、CPU使用率が100%になったままで
応答がなくなり?ます。ページも取得できません。
こんな場合、途中で諦めたいのですが、タイムアウトを設定しても変化なし。
どうすれば良いかアドバイスお願いします。

#!/usr/bin/perl

use strict;
use LWP::UserAgent;

my $url = 'http://www.mother-house.jp/ceo/2006/10/post.html';
print "$url\n";
my $ua = LWP::UserAgent->new;
$ua->timeout(30);
my $request = HTTP::Request->new(GET => $url);
$request->header('Pragma' => 'no-cache');
my $response = $ua->request($request);
if ($response->is_success) {
print $response->content;
} else {
print "(´・ω・`)ショボーン\n";
}
exit;
■ このスレッドは過去ログ倉庫に格納されています