トップページ⇒php
990コメント339KB

Perlモジュールについて

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。2001/08/15(水) 07:47ID:???
モジュールについて話し合うスレッドです。

モジュールの使い方とかリンクは>>2-10さんが出してくれるかも?!
0236nobodyさん03/11/22 01:05ID:???
>>232
えーといまいちよくわからんのだが。
「ビルドできません」っていうのは正しくビルドできませんって意味?make は通ってるんだよね?
で、/usr/lib/perl5/site_perl/5.6.1/i386-linux/auto/Text/ChaSen/ChaSen.so がないって言われてるの?
それだと「dartsライブラリ」って関係ないような気もする。
perl -e 'print join " ",@INC' ってやったらどうなる?
023723203/11/22 20:16ID:???
>>236
@INC:はこのようになっています。
/usr/lib/perl5/5.6.1/i386-linux
/usr/lib/perl5/5.6.1
/usr/lib/perl5/site_perl/5.6.1/i386-linux
/usr/lib/perl5/site_perl/5.6.1
/usr/lib/perl5/site_perl/5.6.0/i386-linux
/usr/lib/perl5/site_perl/5.6.0
/usr/lib/perl5/site_perl
/usr/lib/perl5/vendor_perl/5.6.1/i386-linux
/usr/lib/perl5/vendor_perl/5.6.1
/usr/lib/perl5/vendor_perl

すみませんが,ちょっと手元で再現させる環境が無いので,
火曜日までいろいろ報告できません。
0238質問03/11/28 10:08ID:???
SAX2 相当で PurePerl の XML パーサってありますか?
0239nobodyさん03/11/28 16:04ID:???
1年以上経ってるのにコメントして去る、(・∀・)カコイイ!
0240nobodyさん03/11/28 22:14ID:???
>>238
とりあえず CPAN で検索くらいかけようぜ。
ttp://www.perl.com/CPAN/

XML::SAX::PurePerl ってのがあるようだが?
0241nobodyさん03/12/01 09:55ID:???
cpan でインストールに失敗した場合ってどうすればいい?
test 成功率が 90% とか出てるんだけど、force install しちゃっていいのかな。
0242nobodyさん03/12/29 13:40ID:iExeJWp2
http://testers.cpan.org
ここで報告されているフォーマットをMakefileに即反映させる方法ってあるのでしょうか。
0243nobodyさん03/12/29 15:45ID:???
( ゚д゚)ポカーン
0244?O?????|?X03/12/30 16:30ID:2yZZI8A2
Perlで食用油を作ることはできますか。
0245nobodyさん03/12/30 16:50ID:???
>>244
出来るけど、特許取られてるから商用利用の場合は気をつけてね。
ttp://www.union-jp.net/home/yukino-t.html
0246nobodyさん04/01/01 19:50ID:KSdPAoW/
image::magick と perlmagick って全く同じ意味?
google で調べてもよく分からないんです
0247nobodyさん04/01/05 06:19ID:???
Archive::Zip
十表ソ、等「\」が化ける
何とかならんのか…
0248nobodyさん04/01/05 06:47ID:???
SJIS使うな
0249nobodyさん04/01/05 09:32ID:???
それは無理
0250nobodyさん04/01/05 16:17ID:???
>>249
なんで無理?
0251nobodyさん04/01/05 20:48ID:???
何でといわれても…
解凍後リネームするのが面倒だから
0252nobodyさん04/01/08 01:28ID:???
>>251
$str =~ s/\\\\/\\/ig;
0253nobodyさん04/01/09 07:34ID:???
無理じゃない!
025425104/01/09 08:27ID:???
Zip.pmの$newName =~ s{[\\/]+}{/}g;をコメントアウトしたら何とかなりますた。
もしかして\\が入ってるのはActivePerl Win32版のみかな?
0255nobodyさん04/01/14 22:39ID:???
たとえばExampl::Fooっていうモジュールがあるとき,
Example::Hogeっていうのを新しく作りたいんだけど,
h2xsでひな形作るにはどうしたらいいでしょうか?

h2xs -AX -n Example::Hogeってやると
Example/FooがすでにデリレクトリにあるとExample-Hogeってができちゃうの。
0256ヽ(´ー`)ノ04/01/15 09:12ID:???
(´-`).。o(…Inline::Cしか使ったことがないヘタレな俺…)
0257nobodyさん04/02/18 12:32ID:w3gtAc2I
リモートでユーザーエリアにモジュールをインストールしています。
MyConfig.pm を設定してCPANを使って問題なくインストールできているのですが、

あるモジュールで Test.pm がないから make test が通らずインストールできない、
といわれたので先に Test.pm をインストールしたのですが、その上で再度行っても
やっぱり @INC にTest.pm がないのでだめだ、とおこられました。

試しに、MyConfig.pm頭に
use lib '/home/user_name/perl-lib';
って足してみたけどだめみたいで、何とかする方法はありませんか?

あと、サーバーにあるCPAN.pm が古いので新しくしたいのですが、
こいつを/home/user_name/perl-lib に入れて新しいの使う、
なんて事はできないんでしょうか?

モジュールの使い方ってよりインストールの仕方、なんですが。
0258 ◆hMJAPH9PWA 04/02/18 15:34ID:???
>>255
Example-HogeじゃなくてExample/Hogeってなってほしいのに、という意味かな?
もしかして、そのFooを作ったのはPerl5.8以前にあったh2xsで、HogeはPerl5.8以降のh2xsなんじゃないかな。
そもそもh2xsはモジュールの雛型というよりディストリビューションの雛型の作成だから、
h2xsを実行した時のディレクトリ名なんてあまり関係ないわけで、私は今の動作の方が好ましいが。
どうしても嫌なら後でディレクトリ名を変えるか、古いPerlのh2xsを入れ直すかするしかないと思うよ。

>>257
う〜ん。Test.pmは標準モジュールだし、無いはずないよ。
しかもTest.pmをインストールした、というのなら尚更それは関係ないと思う。
そのモジュールのテストコードに何か問題があるんじゃ…。
その失敗するモジュール以外のモジュールは無事テストできるの?
0259nobodyさん04/02/18 16:09ID:???
>>258
perl -e 'use Test;print $Test::VERSION;'
てやってもCan't locate Test.pm in @INCって言われます。
ちなみにインストールしようとしてたのは
HTML::Templateです。
2.2が入ってたのでとりあえずいいか、と。
あとピュアパールなのでftpでとりあえず送っちゃお、と思います。

Test.pmインストールしたのはユーザーエリアにです。
CPANに use lib できればこいつ使ってくれるんでしょうが、
Can't locate Test.pm in @INC にはもちろんユーザエリアはいってないので
CPANに use lib できれば Test.pmないっておこられないのかな、と。

ただサーバのPerlが、
This is perl, version 5.004_04 built for i386-linux
なので、古いのが原因かもしれません。
なので新しいモジュールだとテスト通らないのかもしれませんね。

このバージョンだとTest.pm 入ってないんでしょうか。

あんまり古いのも困ったもんです。
0260nobodyさん04/02/18 16:47ID:???
俺んとこの 5.004_04 built for sun4-solaris でも Test.pm は入ってないや

無理すれば HTML::Template も動くとは思うが、でも古過ぎだよなあ
0261nobodyさん04/02/18 20:42ID:???
PERL5LIBかPERLLIB環境変数は設定したでござるか?
0262nobodyさん04/02/18 21:27ID:???
>>261
> PERL5LIBかPERLLIB環境変数は設定したでござるか?
MyConfig.pmの、
$CPAN::Config{'make_arg'}
$CPAN::Config{'make_install_arg'}
$CPAN::Config{'makepl_arg'}
にはそれぞれ設定してるんですが、
PERL5LIBかPERLLIB環境変数ってどんなエントリー(key)で
設定すればいいんでしょうか。
ユーザーlibパスを設定したらCPAN.pmがそれも含めて
@INC内モジュールを使ってくれる、って事ですよね。

0263nobodyさん04/02/18 22:26ID:???
>>262
システムシェルの環境変数でござる。
0264nobodyさん04/02/18 22:47ID:???
コマンドラインから自前のライブラリを使うのに@INCを設定する手っ取り早い方法として挙げました。
http://www.kt.rim.or.jp/%7ekbk/perl5.005/perlfaq8.html#How_do_I_keep_my_own_module_libr

>perl -e 'use Test;print $Test::VERSION;'
>てやってもCan't locate Test.pm in @INCって言われます。
ということは、自前のライブラリにパスが通っていないと思ったので…。

perl -e 'print @INC'
で、パスが通っているか確認してみるといいかと思います。

# 私はCPANでなくtarボールでいれているので、CPANについては良く分かりません。スマソ。
026525704/02/18 22:54ID:???
>>263
すいません。お勉強してました。で、
.bash_profile に
PERL5LIBを設定して、
perl -e '(print join("\n",@INC));'
したら、見えました!
setコマンドでも設定されてました!
ありがとうございます。
で、引っかかってたいくつかがインストールできました。

で、確認ですが、
これを設定したからといって
use lib プラグマの記述が必要なくなる、って事ではないんですよね。
試しにuse lib 外したら、必要なモジュールがない、って怒られました。
@INC に入ってるのにuse libしなくちゃならないってのがげせないんですが、
何でですか?
0266nobodyさん04/02/18 23:24ID:???
CGIとしてアクセスすると設定が効かないって事ですよね?

ログインファイルはログイン時に参照されるので、
ログインしないと設定されないと思います。
0267 ◆hMJAPH9PWA 04/02/18 23:26ID:???
>>265
PERL5LIBにパス入れたらuse libは必要ないよ。
多分、まだ何かおかしい。
026825704/02/19 01:38ID:8y6GewN9
>>266
そうです。
そうか、そういうことなんですね。
CGIで設定が効いてないのはbashでログインしてないから。

>>267
つまり、bashから起動するperlスクリプトにはuse libは必要ないはず、と。

なんだかなぞが解けてきました。
明日bashからやってみます。
0269nobodyさん04/03/04 07:39ID:yHD/tZ44
ちと質問です。

use Image::Magick;
$i = Image::Magick->new;
$i->Set(size=>"200x200");

これだけだと問題なくスクリプトは終了するんですが、

$i->ReadImage("xc:black");

これを付け足すと
perl: constitute.c:2015: ReadImage: Assertion `image_info->signature == 0xabacadab' failed.
apacheのエラーログにこう書き込まれ終了します。

どなたか解決方法わかる方見えましたら、
ご教示願います。
0270nobodyさん04/03/04 16:35ID:???
>>269
バージョンが古いんじゃないかい?
5.5.3-2でfixされたようだが・・・
027126904/03/04 22:27ID:yHD/tZ44
>270さん
レスありがとうございます。
インストールしたバージョンは5.5.7-10です。

グーグルで探してもうまくヒットせず、どこを参考にしていいか…
やっぱり単純にバージョンを落としたほうがいいのでしょうか?
0272nobodyさん04/03/05 11:42ID:???
Assertion failed は普通プログラムのバグだからなぁ…解決法は無いかもよ。
ReadImage()メソッドの引数、呼び出しのタイミングは絶対合ってる?
0273nobodyさん04/03/05 16:05ID:EtQqgjUI
DBIとDBD-Pgのインストールを行いました。

しかし、perldoc DBIを行うと、 No documentation found for "DBI".
と表示されてしまいます。

DBI.pm、Pg.pmのディレクトリまで移動して、perldoc DBI
を行うと、マニュアルが表示されます。

どうやれば直せるのでしょうか?

なお、インストールの場所は自分で指定する方法で行いました。
027426904/03/05 19:53ID:???
>>272さん

#!/usr/local/bin/perl

use Image::Magick;
$i = Image::Magick->new;
$i->Set(size=>"200x200");
$i->ReadImage("xc:black");

print "Content-type: text/html\n\n";
print "<html><head><title>Check</title></ead><body>";
print "<p>Ok</p>";
print "</body></html>";

exit;

今回上記のようにテストしたんですが、同じエラーでます。
もしかして根本的に書き方間違ってるでしょうか…
0275ヽ(´ー`)ノ04/03/06 14:02ID:???
>>273
man perldoc

>>274
古いバージョンも入ってて、そっちが使われてたりとか。
$Image::Magick::VERSION はチャンと 5.5.7 になってる?

あと、コンソールから convert -size 200x200 xc:black して、
キチンと動くかどうか確認してみれ。
0276ヽ(´ー`)ノ04/03/06 14:04ID:???
ゴメン(;´Д`)
convert -size 200x200 xc:black test.png だ。
これで、

use Image::Magick;
$i = Image::Magick->new;
$i->Set(size => '200x200');
$i->ReadImage('xc:black');
$i->Write('png:test.png');

と同じ事ができるから、これがキチンと動けば Image::Magick.pm の、
動かなかったら libmagick 自体の問題。
027726904/03/06 23:13ID:???
>>275-276
ごめんなさい、勘違いしてました。
インストールしたのはPerlMagick-5.56.tar.gzでした。
$Image::Magick::VERSION の結果は5.56で問題ないと思います。

それで
convert -size 200x200 xc:black test.png
だと問題なくtest.pngが作成されました。

use Image::Magick;
$i = Image::Magick->new;
$i->Set(size => '200x200');
$i->ReadImage('xc:black');
$i->Write('png:test.png');
だとエラー。

ってことはImage::Magick.pmの問題なんですね。
としたら…どうすればいいんだろう…
がんばって調べてみます。
解決方法が見つかればいいんだけど…
0278nobodyさん04/03/07 00:48ID:???
>>277
エラーって500なんじゃないの?
027926904/03/07 01:32ID:???
>>278さん

perl: constitute.c:2015: ReadImage: Assertion `image_info->signature == 0xabacadab' failed.

下のスクリプトをbashで走らせると↑なメッセージが出ます。
ブラウザでは知らせれば500エラーでます。
もうわけがわからなくなってきた…

#!/usr/local/bin/perl

use Image::Magick;

$i = Image::Magick->new;
$i->Set(size => '200x200');
$i->ReadImage('xc:black');
$i->Write('png:testw.png');

print $Image::Magick::VERSION."\n";

exit
0280nobodyさん04/03/07 05:54ID:???
>>279
手元にWinしかなかったけどそのコードでもコマンドプロンプトから作成できた。
convert -size 200x200 xc:black test.png でもOK。
エラーになるかどうかはOSが違うから参考にはならないかもしれないけど。

ところでブラウザではそのままじゃ無理。
#!/usr/local/bin/perl

use Image::Magick;

print ("Content-type: image/png\n\n"); ←
binmode STDOUT; ←

$i = Image::Magick->new;
$i->Set(size => '200x200');
$i->ReadImage('xc:black');
$i->Write('png:-');  ←

exit;
028126904/03/07 06:05ID:???
>>280さん
手元のWinにApacheなど放り込んで試してみましたが、
Winな環境だとうまくいきます。
Linuxと言うかRH7.2ベースのサーバだとうまく稼動しない。
$I->Set(size => '200x200');
まではうまくいくんだけど、ReadやらWriteやらがうまくいかない…
何でだろうと一晩中Webで探してもblog関係のしかヒットしないし、こうなればどっかにお金払ってでも頼むしか無いかなぁとか思いつつ。

あとスクリプト修正ありがとうございます。
面倒なのでbashで見る為だけにかいたのでブラウザは無視してました。
Content-typeやらbinmodeでの標準出力やらしなければだめでしたね。
失敗失敗…
0282nobodyさん04/03/07 08:47ID:???
デバッガで追跡すべし
0283nobodyさん04/03/07 23:10ID:???
このスレは 269 に乗っ取られたようだ
0284nobodyさん04/03/07 23:44ID:???
まあもともと他に話題も無かったし
0285nobodyさん04/03/08 01:00ID:???
PODって日本語で書いちゃダメ?
0286nobodyさん04/03/08 23:07ID:???
日本語やりたきゃひまわりでもやったらどうだい?
0287nobodyさん04/03/09 11:35ID:???
sendmailを使うモジュールって
Mail::Sendmailが定番ですか?
0288nobodyさん04/03/09 12:34ID:???
なんとなく Net::SMTP が好き
0289nobodyさん04/03/09 12:37ID:???
sendmail を使うモジュールは Mail::Sendmail が定番だろうけど、
sendmail 入ってなかったら困るよなぁ。
0290nobodyさん04/03/09 12:42ID:???
>>289
いえ、入ってます。
今は手動でやってるんですが、簡単にしたいなと
こういうわけです。
ありがとうございました。
0291nobodyさん04/03/09 13:01ID:???
>>290
そうじゃなくて、将来、sendmailの無い環境で動かすようになる可能性を
示唆してるのだと思うけど。
029229004/03/09 14:32ID:???
>>291
> >>290
> そうじゃなくて、将来、sendmailの無い環境で動かすようになる可能性を
> 示唆してるのだと思うけど。
>
ああ、なるほど。
とりあえず自分が使うんでない環境になたら別の手立てを考えますけど、
それとも、それならNet::SMTPとかに最初からしておくべき、って事でしょうか?
0293ヽ(´ー`)ノ04/03/09 14:48ID:???
Mail::Mailer とか Mail::Sender とかを使えって話じゃないんだろうか、多分。
0294nobodyさん04/03/10 16:05ID:???
>285
使いたければ使っても良いんじゃないの。
CPANに登録したいとか言うのなら英語の方が良いと思うが。
0295nobodyさん04/03/11 01:44ID:???
>>294
英語の方が良いっていうか日本語で登録できるの?
万が一登録できても馬鹿にされまくりだと思うけど。
0296nobodyさん04/03/11 06:42ID:???
なんで馬鹿にされるの?
0297nobodyさん04/03/11 06:45ID:???
英語できない奴に限って変なコンプレックスを持ってる
0298遙皇 ◆HEHARUKAoo 04/03/14 21:53ID:MDuAbN5E
cygwinのPerl5.8.2でCPAN.pm使って
G/GA/GAAS/libwww-perl-5.76.tar.gzとかインスコしようとすると
HTML::Parserでコケますが
これってこういうものですか?
0299nobodyさん04/03/15 01:54ID:???
>>298
Perl のバージョンあげた後、入れるの忘れてたからついでに入れてみたけど問題なく入ったべ。
これ以上は何て言われてこけてるのかわからないとなんとも。
0300遙皇 ◆HEHARUKAoo 04/03/15 02:58ID:???
>>299
こりゃどーもすまんです。
perl.hとかperlvars.hで氏ぬほどsyntax errorが出てるのですが

In file included from /usr/lib/perl5/5.8.2/cygwin-thread-multi-64int/CORE/perl.h:2349,
from Parser.xs:19:
/usr/lib/perl5/5.8.2/cygwin-thread-multi-64int/CORE/scope.h:221: error: syntax error before "sigjmp_buf"
/usr/lib/perl5/5.8.2/cygwin-thread-multi-64int/CORE/scope.h:221: warning: no semicolon at end of struct or union
/usr/lib/perl5/5.8.2/cygwin-thread-multi-64int/CORE/scope.h:228: error: syntax error before '}' token
(Snip)
In file included from /usr/lib/perl5/5.8.2/cygwin-thread-multi-64int/CORE/perlapi.h:37,
from /usr/lib/perl5/5.8.2/cygwin-thread-multi-64int/CORE/XSUB.h:313,
from Parser.xs:20:
/usr/lib/perl5/5.8.2/cygwin-thread-multi-64int/CORE/perlvars.h:31: error: syntax error before '*' token
/usr/lib/perl5/5.8.2/cygwin-thread-multi-64int/CORE/perlvars.h:31: warning: data definition has no type or storage class
(Snip)
/usr/lib/perl5/5.8.2/cygwin-thread-multi-64int/CORE/perlvars.h:52: error: syntax error before '*' token
/usr/lib/perl5/5.8.2/cygwin-thread-multi-64int/CORE/perlvars.h:52: warning: data definition has no type or storage class
make: *** [Parser.o] Error 1
/bin/make.exe -j3 -- NOT OK
Running make test
Can't test without successful make
Running make install
make had returned bad status, install seems impossible

こんな感じです。
perl.hが悪いとか言われても(;´Д`)
0301nobodyさん04/03/15 13:27ID:???
コンパイル通らなければ修正するしかないだろう。
標準ライブラリヘッダってわけじゃないんだから、編集しても全然問題なし<perl.h
0302ヽ(´ー`)ノ ◆.ogCuANUcE 04/03/15 13:50ID:???
>>300,>>301
原因をキチンと調べて、他に方法が無いにしか修正しない方がいいと思うけどね。
ググって同じような原因で悩んでいる人がいないのなら、大抵、自分の環境がおかしいから。
このモジュールの make は通っても、他のモジュールのコンパイルに影響を与える可能性もある。

cpan> look HTML::Parser
# perl Makefile.PL
# make > LOGFILE 2>&1

して、エラーメッセージの始めの方見せて欲しいかも。

パッと思い付くのは Perl が複数バージョン入ってて、ゴチャゴチャになってたり、
gcc が必要なヘッダを見付けられてないとかかねぇ。

あと、今から入れるんなら事情が無い限り 5.8.3 にした方がイイと思うが。
0303遙皇 ◆HEHARUKAoo 04/03/15 15:03ID:???
すみません、お世話になります
まずmakeのメッセージの冒頭
(Snip, only cp *pm)
/bin/perl.exe /usr/lib/perl5/5.8.2/ExtUtils/xsubpp -typemap /usr/lib/perl5/5.8.2/ExtUtils/typemap -typemap typemap Parser.xs > Parser.xsc && mv Parser.xsc Parser.c
/bin/perl.exe mkhctype >hctype.h
/bin/perl.exe mkpfunc >pfunc.h
gcc -c -DPERL_USE_SAFE_PUTENV -fno-strict-aliasing -DUSEIMPORTLIB -O2 -DVERSION=\"3.35\" -DXS_VERSION=\"3.35\" "-I/usr/lib/perl5/5.8.2/cygwin-thread-multi-64int/CORE" -DMARKED_SECTION Parser.c
In file included from /usr/lib/perl5/5.8.2/cygwin-thread-multi-64int/CORE/perl.h:687,
from Parser.xs:19:
/usr/include/sys/times.h:11: error: conflicting types for `clock_t'
/usr/include/time.h:69: error: previous declaration of `clock_t'
こんな感じでコンフリクトから始まってます。
0304遙皇 ◆HEHARUKAoo 04/03/15 15:06ID:???
続き
In file included from /usr/include/asm/socket.h:14,
from /usr/include/cygwin/socket.h:23,
from /usr/include/sys/socket.h:15,
from /usr/lib/perl5/5.8.2/cygwin-thread-multi-64int/CORE/perl.h:709,
from Parser.xs:19:
/usr/include/cygwin/if.h:79: error: syntax error before "caddr_t"
/usr/include/cygwin/if.h:81: error: syntax error before '}' token
/usr/include/cygwin/if.h:82: error: syntax error before '}' token
ここまでif.h
0305遙皇 ◆HEHARUKAoo 04/03/15 15:08ID:???
続き
In file included from /usr/lib/perl5/5.8.2/cygwin-thread-multi-64int/CORE/perl.h:2071,
from Parser.xs:19:
/usr/include/pthread.h:72: error: syntax error before '*' token
(Snip)
/usr/include/pthread.h:135: error: `pthread_create' declared as function returning a function
/usr/include/pthread.h:135: error: syntax error before "void"
/usr/include/pthread.h:139: error: syntax error before "int"
/usr/include/pthread.h:141: error: syntax error before "void"
/usr/include/pthread.h:142: error: syntax error before '*' token
(Snip)
/usr/include/pthread.h:178: error: syntax error before ')' token
/usr/include/pthread.h:185: error: syntax error before "pthread_self"
/usr/include/pthread.h:188: error: syntax error before "int"
/usr/include/pthread.h:189: error: syntax error before "const"
ここまでpthread.hですがこれはヘッダが悪いかも
0306遙皇 ◆HEHARUKAoo 04/03/15 15:11ID:???
こんな感じでログが13KBほどあります。

・そもそもヘッダファイルが悪い
・threadsにPOSIX使うな

みたいな感じで解決策は思い浮かぶのですがそこから先がどうもダメです・・・
0307nobodyさん04/03/15 15:22ID:???
pthreadとかsys/times.h、time.hを使った他のソース(Perl以外)はコンパイルできるの?
0308遙皇 ◆HEHARUKAoo 04/03/15 16:08ID:???
pthreadはlibが見つかってなかったようです。
環境を修正したらこっちは落ち着きました。
ただ、time.hとsys/times.hはダメですね。
0309遙皇 ◆HEHARUKAoo 04/03/15 18:33ID:???
time.hとsys/times.hがコンフリクトしたらPerl自体ビルドできねえじゃん・・・_| ̄|○

再インスコします
0310遙皇 ◆HEHARUKAoo 04/03/19 12:35ID:???
再インスコしてわかったのですが
そもそも/lib/libc.aが見つかってなかった模様ですた。
0311nobodyさん04/03/29 19:23ID:VhHocr2p
CGI::Sessionつかって
$session = new CGI::Session("driver::File", undef, {Directory => $session_dir});
$sid = $session->id();
$session->param("aaa", "v_bbb");
のようにして、得たセッションIDをもとに次にアクセスするときにその
セッションIDをもとに
$session = new CGI::Session(undef, $sid, {Directory => $session_dir});
として、前のセッションのデータにアクセスしようとしたんですが、データを
引き継げてないようです。これは使い方が間違っているのでしょうか?
ぶっちゃけparamメソッドで入力したデータに二回目以降のアクセスで
取得できるようにするにはどのようにすればいいのでしょうか?

$session_dirに指定したファイル?もどこにあるかわからないし、、、
わからないことずくしです。
0312nobodyさん04/03/30 02:28ID:???
>>311
「データを引き継げていないようです」なんて投げやりな事を言わずに
とりあえず use strict したり、スクリプトのあちこちに print STDERR $hoge とかして
何がおこってるのか確認してみたらよいかと思うですよ。
0313おしえてたこらん04/04/06 00:09ID:iAK4SXtb
Perlでセッションを使う一番簡単なモジュールを教えてください!!
無料鯖で使いたいのでpmファイルをもってくれば使えるだけのがいいです!!
0314nobodyさん04/04/07 08:28ID:???
>>311
$session_dirのパーミッションは?
0315nobodyさん04/04/07 08:42ID:???
>>313
セッション管理で何がやりたいかによって違う。
単にSessionIDで連続したセッションである事を管理するだけならcookieを
使えばよい。セキュアでない単純なデータの保存もcookieで良い。
大量のデータを保存する場合は、Apache::SessionやCGI::Sessionが便利だが、
依存するモジュールが多いので単にpmを持ってくれば良いというものではない。
比較的簡単なのはWalrus::Session::Lite。
0316nobodyさん04/04/07 11:57ID:uSQ3Xq7V
Perl スクリプト内で、相対パス指定を絶対パス指定に変換できるような
モジュールはありますでしょうか?

ぐぐってみたら File::Spec->rel2abs が見つかりましたが、" ../../ "の
ような指定が思った通りに変換できませんでした。
(Active Perl v5.6.1 Build 635@Win2000上で確認)

テストに使ったコード(test2.perl)
use File::Spec;

$abs_path = File::Spec->rel2abs( '../../temp/', 'c:/WINNT/system32/drivers/etc/' );
print $abs_path;

結果
C:\>perl test2.perl
C:\WINNT\system32\drivers\etc\..\..\temp


C:\WINNT\system32\temp に変換して欲しいのですが・・・
0317nobodyさん04/04/07 13:12ID:???
>>316
そのものズバリはしらない。
ちょっとカッコ悪いが下のスクリプトで同じような結果になる。

use Cwd;
my $cur_dir = Cwd::getcwd();
chdir '../../temp';
print Cwd::getcwd();
chdir $cur_dir;
0318nobodyさん04/04/07 13:15ID:???
my $abs_path = File::Spec->rel2abs('../../temp/', 'c:/WINNT/system32/drivers/etc/');
shorten => while $abs_path =~ s|[^/\\]+[/\\]\.\.[/\\]||;
print $abs_path;
031931604/04/07 14:39ID:???
>>317
>>318
318さんの方法を使う事にしました。ありがとうございました。

あと、スレ違いになってしまいますが 318さんのコードの中の
「shorten」は Perl 標準関数でしょうか?
ぐぐってみたのですが、正体が分かりませんでした。
0320nobodyさん04/04/07 15:11ID:???
>>319
=> 演算子を調べるべきだろう。

'縮めろ' while ... なり
1 while ... なり
while ($abs_path =~ ...) {} なりご自由に。
0321nobodyさん04/04/07 17:46ID:???
>>320
初心者にそのコード酷では…

0322nobodyさん04/04/07 22:15ID:???
>>311
mod_perl使っているなら
$session->flash();
が必要
032332104/04/07 22:19ID:???
>>322
flashではなくflushです。すまそ
0324nobodyさん04/04/09 12:53ID:???
E:\>perl -e "笑点 => while 1;"
Unrecognized character \x8F at -e line 1.

(`Д´)オッシャ
0325ヽ(´ー`)ノ ◆.ogCuANUcE 04/04/09 13:51ID:???
こうだろ。

$ perl -e "'笑点' => while 1;"
0326nobodyさん04/04/17 22:56ID:???
Image::Magickのマニュアルなぜ翻訳されて無いんでしょうか?
2、3見つかりますがどれも機械訳&途中までで使い物にならないです
もしあるのなら教えていただけませんでしょうか?

使ったスクリプト書いてwin上で動いてたのが
レン鯖で動いてくれなくて・・・
0327nobodyさん04/04/17 23:32ID:???
日本語訳がないとわからないならそういうものを使わなければいい
0328nobodyさん04/04/17 23:41ID:???
使う必要があるから聞いてるんだろ
自分でちょっとづつ翻訳していってるのがローカルにあるよ
しかしあまりに時間がかかるしわからない英文もある。
本来のやりたい事と実際やってる事が激しく脱線してて
いやんなるんだよ
大体論点ずれてんだよ
これだけ一般的に使われてるモジュールが
なぜ翻訳されて無いのかと聞いてるんだろ
こんなに翻訳されてるのに http://perldoc.jp/

何でもかんでも
使いたいなら英語勉強しなってな風潮にうんざり
0329nobodyさん04/04/17 23:43ID:???
あ、不毛だからもうレスいいです
0330nobodyさん04/04/17 23:45ID:???
世の中なんでも自分のレベルに合っていないといけないわけ?
自分に合った環境が整っていないと切れる能無しのほうがうんざりするが。
0331nobodyさん04/04/18 00:14ID:???
Give&Takeの仕組みがわかってないんだろうか。
翻訳したもの自分のサイトで晒してから言えって。
0332nobodyさん04/04/18 05:17ID:Z8nwBIb4
うっせー馬鹿
うだうだくっちゃべってる暇あったら早く翻訳しろカス
0333遙皇 ◆HEHARUKAoo 04/04/18 14:10ID:???
自分で翻訳するしか。
0334nobodyさん04/04/18 14:16ID:???
328はImage::Magickの和文マニュアルを見て何をしたいのだろう?
APIが書いてあるだけだよね。APIを確認したいって話か?
それよか「動かない」ってどういうことなんだろう?
当人のスキルが判らなさすぎなんで、何ともいえなさすぎ。
0335nobodyさん04/04/18 22:22ID:???
もう解決したよヴォケが
$hoge->Write(filename=>'./hoge.gif',type=>'gif');
俺のローカル環境(win)ではこれで動いてたのが
レンタルのunix環境では動かなかった
$hoge->Write("gif:./hoge.gif");
こんな感じでいいんだな
あと、別にタイプ指定しなくても拡張子で判断して
ちゃんと圧縮方法選んでくれるようだ。
$hoge->Write("./hoge.gif");
0336nobodyさん04/04/19 00:23ID:???
それっぽっちのことで騒いでいたのか ( ゚д゚)ポカーン
■ このスレッドは過去ログ倉庫に格納されています