Perlモジュールについて
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001名無しさん@お腹いっぱい。
2001/08/15(水) 07:47ID:???モジュールの使い方とかリンクは>>2-10さんが出してくれるかも?!
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 が使えるか確認してみ?
0968nobodyさん
2006/06/14(水) 02:21:50ID:???みなさんはどうしていますか。
Tk→これはこれでいいんですがWin32GUIも使いたいです。
GridLayout→resize時のrecalcは捨てがたいのですが最初の配置をGUIでぐりぐりやりたいです。
LoftのgldをStorableで解凍→DataDumperで覗いたら眩暈がしたので挫折しました。
そこでVBのfrmやVC++等のrcファイルの自力パースとか考えてるんですがどうでしょう。
主な目的は位置、サイズの指定です。
0969nobodyさん
2006/06/14(水) 05:12:42ID:???0970nobodyさん
2006/06/14(水) 09:24:21ID:???0971nobodyさん
2006/06/14(水) 19:30:54ID:???△▲ WebProg 初心者の質問 Part13 ▼▽
http://pc8.2ch.net/test/read.cgi/php/1139468729/
0973968
2006/06/15(木) 01:00:33ID:???ありがとうございます。
しかしLoftは、私のスペックでのもたつき感や拡張性に不満があり最近は使わなくなっています。
そこでLoftのgldだけ再利用しようと思ったのですが>>968のような結果となってしまいました。
0974nobodyさん
2006/06/15(木) 06:38:34ID:???0975nobodyさん
2006/06/18(日) 05:37:07ID:wjoky+sx0976nobodyさん
2006/06/19(月) 12:53:03ID:kmF33pQlレンタルサーバにparrotをインストールしてみたんですが、
telnetでは問題なく動いてるのに、サーバーを通して
例えば、system("/xxxxx/bin/parrot -h")とかすると何の音沙汰もない
んですが、どういう原因が考えられるでしょうか?
0977976
2006/06/21(水) 15:19:45ID:???0978nobodyさん
2006/06/21(水) 15:42:03ID:???telnetユーザとcgi実行時のユーザが違う、とかからいろいろある。
しかし、こういうと、それは違います、調べました、とかいわれそうだしな。
0980976
2006/06/21(水) 22:51:30ID:o4rXunEjUsage: /usr/bin/perl [switches] [--] [programfile] [arguments]
-0[octal] specify record separator (\0, if no argument)
-a autosplit mode with -n or -p (splits $_ into @F)
-C[number/list] enables the listed Unicode features
・・・・
・・・・
って感じです。
他にもいろいろ入れてるんですが、javaとかは普通に動いてて、
runghcは動かないとか、かなりカオスな感じです・・・
ちなみにsystem("whoami")だと自分のidが出ます。
環境変数がおかしいのでは?と考えてみたんですが、
apache経由だと環境変数が全てCGI用のものになってしまっていて
手のつけようがないです。
0981nobodyさん
2006/06/22(木) 04:40:01ID:???0982nobodyさん
2006/06/22(木) 16:50:20ID:???0983nobodyさん
2006/06/23(金) 20:14:33ID:???0984nobodyさん
2006/06/24(土) 20:36:24ID:???0985nobodyさん
2006/06/24(土) 21:30:04ID:???0986nobodyさん
2006/06/25(日) 20:44:54ID:???0987nobodyさん
2006/06/25(日) 22:42:44ID:???<FORM name="up" method="POST" ENCTYPE="multipart/form-data" action="./index.cgi?id=$mID">
のように method="POST"としつつ .cgiのうしろに引数を付けたいのですが
$q = new(CGI);
$q->param('id');
をすると、id だけ取れません。
この状態で id の値をとってくる方法はありますでしょうか?
0988nobodyさん
2006/06/25(日) 23:06:48ID:???で受け取れました。。
0989nobodyさん
2006/06/26(月) 01:28:59ID:???あんまりやらないほうがいいかも・・・
pythonなんかでは確かはっきり禁止されてたような・・・
レス数が950を超えています。1000を超えると書き込みができなくなります。