Perlモジュールについて
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001名無しさん@お腹いっぱい。
2001/08/15(水) 07:47ID:???モジュールの使い方とかリンクは>>2-10さんが出してくれるかも?!
0867nobodyさん
2006/02/22(水) 02:04:59ID:???0869nobodyさん
2006/02/22(水) 14:34:26ID:???どうかって?
どうかしたのか?
0871nobodyさん
2006/02/22(水) 20:56:00ID:???0872nobodyさん
2006/02/22(水) 22:31:14ID:???0873nobodyさん
2006/02/22(水) 22:57:58ID:???こういうの?
ttp://search.cpan.org/~ikebe/HTML-StickyQuery-0.12/StickyQuery.pm
使ったことないけどー
0874nobodyさん
2006/02/23(木) 01:08:08ID:???ドキュメント見てたらHTML::Templateのfilterを知りませんでした・・・orz
それとFillInFormでA/FORM共にできました!
ドキュメント流し読みじゃなくてしっかり読むよう心がけます、ありがとうございました。
>>873
これもすごく良さそうなのでfilterじゃなくてこれを使ってみるかも知れません。ありがとうございます!
Apache::StickyQueryとか他の選択肢もいろいろ見つかってめちゃくちゃ助かりました!
sledgeとかでSession::Managerの下にStickyQueryって単語を見たとき検索しておけばよかった・・
英語弱いから全然ピンときませんでした・・・CPANから検索するコツを掴んでないですね・・
0875nobodyさん
2006/03/01(水) 02:51:34ID:4cotym3G0876ヽ(´ー`)ノ ◆.ogCuANUcE
2006/03/01(水) 04:41:52ID:???Windows XP は SP2 から raw socket 使えないんじゃなかったか?
普段 UNIX でしかコード書かないから分からないけど…。
Windows ネットワークプログラミングに関するスレで(多分マ板かな)、
C/C++ で実現する方法を聞いた方が早いと思う。
Perl で同じことするライブラリがあったら、それを使うと。
0877_
2006/03/07(火) 20:06:01ID:???0878nobodyさん
2006/03/07(火) 22:05:56ID:???25以外のポートを使うことは可能だと思われる。ただしそれで受け付けて
くれる相手がいればだが。
0879nobodyさん
2006/03/11(土) 16:57:32ID:???単にRubyバイナリへのインターフェイスなのでRubyはインストールされてなきゃいけないけどね。
Unix系でも動くかどうか不明。誰かテストしてくれんかな。
wistaria.org/perl/dist/Ruby-0.01.tar.gz
0880nobodyさん
2006/03/12(日) 01:12:41ID:???CPANに上げちゃえば〜?
0881nobodyさん
2006/03/12(日) 01:29:57ID:???0882nobodyさん
2006/03/12(日) 11:31:26ID:???4/1のRECENTに
Ruby - Ruby the Object Oriented Scripting Language in Perl
とかあったら笑えるよね。
でも一応、他のマシンでも動いたかどうか確認したい。
誰かmake test成功した?
0883nobodyさん
2006/03/12(日) 13:25:32ID:vDgL7y2S接続の時点でこけてしまいます。↓
DBI connect('database=****:host=****','****',...) failed:
Client does not support authentication protocol requested by server;
consider upgrading MySQL client
多分、内部で使ってるモジュールがないか古いかだと
思うのですが、これだけでは詳細が分かりません。
何かヒントなど貰えたらと思い質問しました。
よろしくお願いします。
# ちなみにMySQL自体はシェルから叩いて動かせるので、
# 問題なくインストールできていると思います。
# GNU/Linux、MySQL 4.1
0884nobodyさん
2006/03/12(日) 13:29:09ID:g9v1wBDlググれ。一発じゃ
0885nobodyさん
2006/03/12(日) 14:09:33ID:???0887nobodyさん
2006/03/13(月) 02:22:30ID:???当方はruby1.8.4、perl5.8.7(ActivePerl)。
Perlは5.8あれば良いと思うけど、Rubyのほうはそれ以下だとダメかも。
0888nobodyさん
2006/03/13(月) 08:14:23ID:???0889nobodyさん
2006/03/13(月) 08:19:49ID:???0890nobodyさん
2006/03/13(月) 11:08:25ID:???Inline::Rubyはコンパイルできなかったので詳細は不明。
でもまぁ、要はRubyを呼び出すってことなので用途は同じ。ただ、使い心地はだいぶ違いそうだ。
あとは何より、Inline::Rubyはメンテナンスされてないのが痛い。READMEに1.6.6とか書いてあるぞ…。
0891nobodyさん
2006/03/13(月) 21:39:42ID:???YAMLモジュールの作者がなんでこんなものを…
0892nobodyさん
2006/03/13(月) 21:59:06ID:???0893ヽ(´ー`)ノ ◆.ogCuANUcE
2006/03/13(月) 22:27:00ID:???Ingy は Acme とか XXX とか、ネタモジュール作るの結構好きだけど…
でも、なんで orz なんだろうね(;´Д`)
0894nobodyさん
2006/03/13(月) 22:36:17ID:???perl Makefile.PL
が通らねー。
ので調べたら、RubyのConfig見て$incと$libを作ってるとこがうまくいってないっぽい。
rubyのConfig::CONFIG['LIBRUBYARG']が-lruby-staticとか返してるのは想定外なんじゃないかなー。
0895nobodyさん
2006/03/13(月) 22:37:13ID:???それに引き換えPEAR(PHPの公式ライブラリレポジトリ)は無闇に敷居が高くて困る。
0896nobodyさん
2006/03/13(月) 22:38:02ID:???日本に来るからじゃね?
ttp://tokyo.yapcasia.org/blog/ja/sessions.html
0898nobodyさん
2006/03/13(月) 23:16:41ID:???0899879
2006/03/14(火) 00:02:59ID:???>>894
サンクス。まぁ、どうせ一発では動かないと思ってたよ。
さて、手元ではちょこっと変えてみたが…うpする場所がorz
0900nobodyさん
2006/03/14(火) 20:47:44ID:???0901nobodyさん
2006/03/14(火) 22:39:01ID:???ってモジュールもあるらしいぞ。
0902nobodyさん
2006/03/14(火) 23:01:26ID:???日本語の「やだ」じゃないからね。 アメリカのテレビコメディーシリーズ「Seinfeld」で
作られて流行った造語。
http://en.wikipedia.org/wiki/List_of_Seinfeld_terms の一番下。
0903879
2006/03/16(木) 11:54:58ID:???ふー。前のはGC周りがバグってた。
インターフェイスも大幅に拡張。
Makefile.PLもCygwinのrbconfig.rbを参考にしながら変えてみたんだけど、どうかな。
実行はこんな感じです↓
#!perl
use Ruby;
rb_eval <<'RB';
Perl.eval('use LWP');
ua = Perl["LWP::UserAgent"].new
req = Perl["HTTP::Request"].new "HEAD", Perl.String("http://www.example.com")
puts "HEAD #{req.uri}";
res = ua.request(req)
puts res.headers.as_string
RB
0904nobodyさん
2006/03/16(木) 12:00:55ID:???0905nobodyさん
2006/03/16(木) 21:10:53ID:???0906nobodyさん
2006/03/16(木) 22:00:28ID:???そんな日本語ちっくな造語があるのかー。
知りませんでした。
... がなんで「やだ」なのかずっと考えてました(コードを書くのがイヤなのか?とか)。
サンクス。
0907nobodyさん
2006/03/16(木) 23:12:22ID:???んーとね、ppport.hは元のperlのを使わないと駄目っぽい。
(添付のを削除して、手元のやつを使ったら通った)
あと、\で行が継続しないみたいです。
とりあえずー。
0908903
2006/03/17(金) 01:06:35ID:???サンクス。
…ppportがダメって、何の為のppportだ!?バックコンパチを提供する機能なはずなんだが…。
まぁいいや、ppportは外そう。最新版ならなくてもビルドできるし。
\の行継続も分からんなぁ…。どんなコンパイラ使ってるの?環境は?
とりあえず行継続\は削除するけど。
0909nobodyさん
2006/03/17(金) 18:25:58ID:???0911nobodyさん
2006/03/17(金) 22:15:17ID:???ppport.hでエラー吐いてたのは5.8.3です。
5.8.8に上げたら大丈夫でした。
環境はVineLinuxだから普通にgccおま。
っつーか、俺も\でエラーになってたんで変に思ったのよ。行継続させたら動いたんだけど。
……あ、ひょっとすると改行問題かも。今気付いた。
他にもwarningとかerrorとか吐いてるんで、もちょっと調べてみます。
0912nobodyさん
2006/03/17(金) 22:55:19ID:???ただ、他にもerrorが出るのはよーわからん。問題なさそうに見えるんだけどなぁ。。。
あ、perl Makefile.PLするときにrubyのPATHを指定できるようになってると良いかも。
0913903
2006/03/17(金) 23:51:56ID:???ああそうか!ごめん!改行がCRLFになってたんだな。
そうと分かれば直せばいいだけだ。そういえばそうだなぁ、失念してたよ。
rubyのPATHも了解。確かに、引数で渡せるようにした方がいいね。
0914nobodyさん
2006/03/18(土) 17:43:10ID:???あまりうまく入るモジュールが少ないな
0915nobodyさん
2006/03/18(土) 17:46:58ID:???0916nobodyさん
2006/03/19(日) 15:08:31ID:???0917nobodyさん
2006/03/19(日) 15:19:26ID:???0918nobodyさん
2006/03/26(日) 22:17:25ID:???wistaria.org/perl/dist/Ruby-0.03.tar.gz
とりあえずrubyのパスをオプションで渡せるようにしたよ。
perl Makefile.PL --ruby=/path/to/ruby
てなかんじで。
省略すると勝手に探して勝手に実行するか、なければ止まる。入力を促すようなことはなくなりました。
他、けっこう変わったのでRuby.podも参照されたし。
さて、問題は英語のドキュメントか…。英語苦手なんだよなぁ。
0919nobodyさん
2006/03/28(火) 13:59:49ID:???しかしトップレベルでeval()するわけには行かない。
package Foo;のなかでのclass Foo;とdef foo、package Barのなかでの(ryが衝突するのは困るから…。
ううむ。
0920nobodyさん
2006/03/28(火) 23:26:52ID:???YAPC::Asiaで会えたら会おうw
0921nobodyさん
2006/03/29(水) 01:08:51ID:???use時の-evalでクラスも自動的にインポートするように。例は/08class.t参照のこと。
他、バグフィクス。
>>920
残念、YAPC::Asiaはいかないんだよ。まぁ、暇があったら遊んでもらえると嬉しい。
0922nobodyさん
2006/03/32(土) 04:34:24ID:???out of range 1..31
ってエラーでちゃったよ…orz
しかし、同じスクなのに別鯖に設置したものは動いたりする。
鯖によってTime::Localって違うのかな?
0923nobodyさん
2006/03/32(土) 16:14:42ID:OoUxyhRh吐き出すヘッダの「Set-Cookie:」行の「expires=xxx」が、自分が持ってる秒数出しちゃうみたい。
で、いちおソース読んでCGI::Session→header→CGI→cookie→CGI::Cookie→CGI::Util→expire→expire_calcってたどってみたんだが、このルーチンがオカシイっつーか。
〜 elsif (引数=~/^\d+/) {return 〜
ってとこで、ナゼか先頭が数字だと変換しない仕様になってる。これってどうなん??
(引数=~/^\d+$/) のマチガイじゃないんかなぁ
それにしたって else { return があるから不要では??
まとにかく、CGI::Sessionの_str2secondsルーチンで先頭の記号消しちゃってるから、結果としてはCGI::Sessionのバグっぽい。
個人的にはCGI::Utilもドーかと思うけど。
イマイチ自信ないんで確認求ム
0924923
2006/03/32(土) 16:21:26ID:OoUxyhRhCGI::Utilは、先頭が数字だとダメで「+」とか「−」が付いてればちゃんと変換してくれる。
でもCGI::Sessionは秒数を出すときに掛け算しちゃってるから、+が消えて、でアウト
0925nobodyさん
2006/03/32(土) 19:13:06ID:???仕様忘れたけど、それで正しいと思うよ。使われないけど。
0926923
2006/03/32(土) 20:18:37ID:OoUxyhRhちなみに、正しいっていうのは、英語の曜日〜のこと?
上にも書いたけどCGI::Utilは、ちゃんと秒数を英語の曜日〜に変換するコードがあるんだけど、引数の先頭に+−が付いてないと拒否されるんだよね。これ自体がバグな気がするけど、付けて渡さないCGI::Sessionもバグなんだろうね。
ブラウザ次第だろうけど、これじゃまともにクッキー発行されないよね。
ってより、一番不思議なのは、CGI::Sessionて結構メジャーだと思うんだけど、今まで誰も気付かなかった(問題起きなかった)のかな。
みんな直接CGI::Cookieとか呼んでるのかな?それにしても、誰か気付きそうなもんだ。
0927nobodyさん
2006/03/32(土) 22:13:25ID:???手元の環境では問題ないようだけど
気になるから実行環境とおかしくなった時のコード晒してよ
v5.8.5 built for i386-linux-thread-multi
CGI-Session-4.10
use strict;
use warnings;
use CGI::Session;
my $session = CGI::Session->new;
my $cookie = $session->cookie(-expires => '+1d');
print $session->header(-cookie => $cookie);
__END__
Set-Cookie: CGISESSID=a29d66798de84d216126599df031e040; path=/; expires=Sun, 02-Apr-2006 13:11:15 GMT
Date: Sat, 01 Apr 2006 13:11:15 GMT
Content-Type: text/html; charset=ISO-8859-1
0928nobodyさん
NGNGhttp://mixxi.jp/Boofy-0.01/
0929nobodyさん
2006/03/32(土) 23:22:43ID:???だってさ。
0930926
2006/03/32(土) 23:40:24ID:OoUxyhRhそれだと普通にCGI::Cookieを使ったのと同じだから、意味がないよ。
問題はCGI::Sessionの_str2secondsルーチンで生成される値が不正ってことなんだけど、その書き方だと、この問題の値が出力されないはず。
$session->cookie(-expires => '+1d'); だと、CGI::Sessionが内部で持ってるCGI::Cookieを使うだけだから、上に書いた「直接CGI::Cookieを呼ぶ」のと同じになる。
しかもheaderメソッドは与えられた引数を自前パラメーターの後に付けてそのままCGIに渡すから、
->header(-cookie => $cookie);
と書くと、内部では、
->header(-cookie => 問題の値, -cookie => $cookie);
ってcookieが2回になる→2回目のやつで上書きされる→_str2secondsの値がCGI::Cookieの正しい値で上書きされる
ということになる。
このあたり、ヘタな説明よりソース見たほうが早いかも。
で、ソースを見ると、バージョン3.9Xより上のバグみたい。
というより、3.9X以下はそもそもヘッダにexpireを出さない。
とにかくexpireの値がheaderで正しくHTTP Headerに変換されないってだけだから、コードはこんな感じ。
use CGI::Session;
$session = new CGI::Session();
$session->expire('+1d');
print $session->header();
結果
Set-Cookie: CGISESSID=c6458e〜; path=/; expires=86400s
Date: Sat, 01 Apr 2006 14:21:46 GMT
Content-Type: text/html; charset=ISO-8859-1
イチオ結果教えて
0931nobodyさん
2006/04/02(日) 00:04:01ID:???Domain Information:
[Domain Name] MIXXI.JP
[Registrant] Tatsuhiko Miyagawa
[Name Server] ns1.domain.livedoor.com
[Name Server] ns2.domain.livedoor.com
[Created on] 2006/04/01
[Expires on] 2007/04/30
[Status] Active
[Last Updated] 2006/04/01 00:07:42 (JST)
Contact Information:
[Name] Tatsuhiko Miyagawa
[Email] miyagawa at edge dot jp
0932nobodyさん
2006/04/02(日) 03:41:25ID:???> Set-Cookie: CGISESSID=c6458e〜; path=/; expires=86400s
結果は同じだった
4.10以前から>>927の書き方だったから気が付かなかた
報告したの?数時間前の投稿だけど
いづれにしてもGJでした
#18493: header() method
ttp://rt.cpan.org/Public/Dist/Display.html?Name=CGI-Session
0933nobodyさん
2006/04/02(日) 06:18:50ID:Uq9R7pb0確認&報告サンクスです。
cpanに報告されてたんだ。って時間みると、ここの誰かなのかな?
ところで
> 4.10以前から>>927の書き方だったから気が付かなかた
それで思ったんだけど、たぶんみんなそうだから発見が遅れたんじゃないかな。
古いのはexpiresを出す機能自体がなかったし、自分自身、たいていcookieは別の方法で自前で作ってるし。headerメソッドあんまり使われないのかも。
それと、CGI〜モジュールって、けっこう頻繁にバージョンアップしてるんだね。これも知らなかった。
0934879
2006/04/04(火) 00:19:54ID:???$obj->attr = "foo";
なんてのが出来るようになったよ。とりあえずここでの報告はこれでおわり。
あとはチラシ裏用意したんでそっちで書きます。
0935nobodyさん
2006/04/04(火) 18:48:31ID:4PLmYPWhセッションファイルの掃除には、過去に何人かCGI::Session::ExpireSessionsをすすめてたけど、これは避けるべき。
シリアライザ次第で落ちる(制御文字が入ってるだけでも落ちる)っていうだけならまだしも、セッションファイルをそのままevalしてしまっているので、セッションに保存されるデータが絶対に安全だという、よほどの自信がない限り、使えない。
ちなみに本体のCGI::Sessionのほうでは、一応セッションファイルの読み込みはSafeとか使ってセキュリティ対策はしてある。
CGI::Sessionのfindを使って掃除、っていう方法は、これまた使えない。
findは、実行するとご親切にアクセスタイムを更新してくれる…。つまり永久に削除されない。
0936nobodyさん
2006/04/04(火) 19:20:11ID:???0937nobodyさん
2006/04/05(水) 03:22:05ID:Q6DtuhIy前にも誰か書いてたように、普通にバッチとかスクリプト組んで消すのが簡単&早い&安全だと思うよ。もちろん個人的意見だけどね。
ディレクトリの中に複数の期限のファイルが混在しないように設定しさえすれば、わざわざファイルをロードする必要なんてないんだから、ファイルのアクセス日時を調べて片っ端から消すべし。
圧倒的に軽いから、1日1回じゃなくてもアクセスのたびに(たとえばログインのプログラムからとか)呼び出してもOK
ちなみにCGI::Session::ExpireSessionsが危険だから自信がなければ使うな、っていうのは、付属ドキュメントにも書いてある。
0938nobodyさん
2006/04/05(水) 04:29:38ID:???0939nobodyさん
2006/04/05(水) 11:28:41ID:Q6DtuhIy0940nobodyさん
2006/04/05(水) 23:44:44ID:???0941nobodyさん
2006/04/06(木) 05:21:01ID:???0942nobodyさん
2006/04/06(木) 16:54:55ID:???939と940が正解
Apache::Sessionは関係ないやん
ちゅーか何が聞きたいのか意味不明だけど。
941は論点ズレちゃう?
0943初心者
2006/05/15(月) 09:35:22ID:4cAsENNb'test' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
と表示されてしまい、インストールできないのですが、どうすればよいでしょうか?
方法は、windowsXPのcmdで
C:\> perl -MCPAN -e shell
とした後、
cpan> install NDBM_File
としました。
基本的な質問で申し訳ありませんが、よろしくお願いしますm(__)m
0944nobodyさん
2006/05/15(月) 16:20:18ID:???0946nobodyさん
2006/05/20(土) 09:08:32ID:???0947nobodyさん
2006/05/22(月) 09:44:35ID:afee109F回答ありがとうございます。
Visual Studio 2005 Express Edition
をインストールしました。その中に
nmake.exe
が含まれています
0948初心者
2006/05/22(月) 09:56:02ID:afee109F返答ありがとうございます
ActivePerlの5.8.8.817
をインストールしたのですが、
use NDBM_File;
とすると
Can't locate NDBM_File.pm in @INC (@INC contains: C:/Perl/lib C:/Perl/site/lib .
) at test.pl line 4.
BEGIN failed--compilation aborted at test.pl line 4.
という風に表示されます
0950nobodyさん
2006/05/22(月) 16:32:01ID:afee109F0951nobodyさん
2006/05/22(月) 23:02:33ID:???CPANのshellで
o conf make
ってやったときnmake.exeが出てくる?
出てこないから設定しなされ。
以降はCPANの使い方を調べてから質問してください。
0952nobodyさん
2006/05/23(火) 17:09:43ID:KdLDl6Fq0953nobodyさん
2006/05/23(火) 17:15:11ID:???0955nobodyさん
2006/05/23(火) 23:34:34ID:???昔と違って今はIO::Fileのラッパーになってるよね。
JcodeがEncodeのラッパーになってるみたいに。
0956nobodyさん
2006/05/24(水) 00:23:42ID:???そそ、ラッパーになってる。
JcodeはEncodeが使えない環境では
元のJcodeとして動くはずだから、ちょっと違うけどね。
0957nobodyさん
2006/05/29(月) 15:46:20ID:qSQBaQa2JavaScript内のパスもちゃんと変換してくれるとありがたいのですが・・・
0958nobodyさん
2006/05/29(月) 21:06:38ID:???0959nobodyさん
2006/05/29(月) 22:24:08ID:???#逆にbaseとか存在しないと変換しようがない気がするけど。
0960nobodyさん
2006/05/30(火) 10:35:37ID:GSQr5F7Lパス変換のみならできそうなんですが
HTMLをparseしてURL部分を変換してくれるモジュール無いかなぁ?と思いまして・・・
例えばテンプレートが相対パスで書かれている場合
CGIで出力すると画像のパスなんかはおかしくなりますよね
ある程度汎用的なモジュールで対応できたら、と思った次第です。
Baseタグかあ。ちょっとやってみます。
0961nobodyさん
2006/05/31(水) 00:27:38ID:???0962nobodyさん
2006/05/31(水) 10:42:52ID:???0963nobodyさん
2006/05/31(水) 16:09:03ID:???cpan探せよ。
0964nobodyさん
2006/05/31(水) 16:39:49ID:???HTML URI で一発でしたね・・・
0965nobodyさん
2006/06/02(金) 22:10:36ID:???cgiが置かれているサーバ上のHTMLは読み込めても、そうでないHTMLが読めません。
記述はHTTP::Liteのドキュメントに載ってるものを、とりあえずそのまま使ってまして、
use HTTP::Lite;
$http = new HTTP::Lite;
$req = $http->request("ttp://aaa.bbb.ccc/xyz.html")
or die "Unable to get document: $!";
die "Request failed ($req): ".$http->status_message()
if $req ne "200";
@headers = $http->headers_array();
$body = $http->body();
で、$bodyの中身をファイル出力して、読み込みの確認取ってます。
どうやら ttp://aaa.bbb.ccc/ 以下にあるHTMLじゃないと駄目なようなのですが、
これはプログラム上の記述が何か足りないということでしょうか?
(↑つまり、HTTP::Liteの機能を使いこなせていれば解決できそうな話?)
それともサーバーの設定関係(よそからデータ持ってくるのは×とか)でしょうか?
考えのきっかけになれば充分なので予想でも構いません。
お心当たりの方はお願いします。
0966nobodyさん
2006/06/02(金) 22:18:47ID:???LWP::UserAgent が使えるか確認してみ?
レス数が950を超えています。1000を超えると書き込みができなくなります。