Perlモジュールについて
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001名無しさん@お腹いっぱい。
2001/08/15(水) 07:47ID:???モジュールの使い方とかリンクは>>2-10さんが出してくれるかも?!
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を超えると書き込みができなくなります。