Perlモジュールについて
■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。
2001/08/15(水) 07:47ID:???モジュールの使い方とかリンクは>>2-10さんが出してくれるかも?!
0175あぼーん
NGNG0177nobodyさん
03/03/31 23:42ID:lrdCZ3fP・セッション管理
・ユーザ認証
・ロジックと表示部の分離
それぞれどんなモジュールがありますか?
0178nobodyさん
03/04/01 03:46ID:???http://sl.edge.jp
0179nobodyさん
03/04/01 23:12ID:y/azGnm1ありがとう。
ご紹介のWebフレームワークの出来は実際のところ
どうなのでしょうか?業務Webアプリに使えますか?
使いやすさ、品質、実績、などは?
それからドキュメントは付属のものしかないのですか?
市販本などはないのでしょうか?
0180!178
03/04/01 23:46ID:???業務で使った実績はアリだそうで。
ttp://sourceforge.jp/mail/?group_id=448
ここのMLのログのアーカイブを覗いたら、
>ちょっと試してみた方はお気付きかと思いますが、結構動作させるまでの敷居
>が高いです。Sledge::Doc::Tutorial も前提知識をかなり必要としていますし。。
>samples の充実と sledge-setup ツールの充実は、近々のTODOとして認識して
>ますので、もう少しご辛抱ください。もちろん、パッチ歓迎です!
…だそうです。
その後にクラス図のファイルをアップしましたって記事も。
ドキュメント類はこれからですかね。
0181nobodyさん
03/04/02 17:40ID:???perldoc の改行位置がおかしくなったり
pack_sockaddr_in が使えなく(?)なったりしたのですが、
同様の症状が出た方いませんか?
perldocはおかしかった。
とりあえず576行目(my ($tmpfd, $tmp) = File::Temp::tempfile(UNLINK => 1);)の後に
binmode($tmpfd, ':crlf');
を追加したら直ると思う。
pack_sockaddr_in()は使おうと思った事がないのでわからないな。
0183nobodyさん
03/04/03 07:36ID:???pack_sockaddr_inは、私の勘違いでした。
pack_sockaddr_inの引数に、getservbyname, gethostbynameで所得した値を設定していた事が原因でした。
pack_sockaddr_in(80, 'www.example.com')で問題無く動作しました。
単に、使い方を誤っていただけで。お騒がせしてスミマセン。
0184nobodyさん
03/04/03 13:34ID:KIsujz3E> pack_sockaddr_in(80, 'www.example.com')で問題無く動作しました。
これで本当にうまくいった???
0185nobodyさん
03/04/03 16:00ID:???0186nobodyさん
03/04/03 20:13ID:pMBEJ0AD自分でモジュールを作るとき、どんな風に組み合わせるのがエレガントですか?
0187nobodyさん
03/04/05 09:21ID:???エレガントなクラス設計には、私も興味あります。
一言にエレガントと言っても、状況次第で解決策は変わってくるでしょうから
実際に作成するモジュールの条件を指定しないことには、
抽象化された一般的な回答しか得られないと思います。… 要は、case by caseと。
ところで、Class::Structの例が動かなかったんだけど、
メンバにオブジェクトを持つ時は、明示的にインスタンスを作ってやらないといけないの?
use Class::Struct;
struct( ClassA => { foo => ClassB });
struct( ClassB => { bar => '$' });
my ($obj);
$obj = new ClassA;
$obj->foo = new ClassB; # <-- 必要 ?
$obj->foo->bar(1);
0188nobodyさん
03/04/05 16:15ID:???requireする処理が入ってないから、見えるところにクラス(パッケージ?)
を置いておけばちゃんと動くかと。実験してないけど。
Class::Struct::printem(1);
としておくと、evalするコードを出力してくれるよ。
しかしClass::Structってクラス設計というより単なる構造体を作成するユーティリティなんじゃないかと思われるが…。
0190nobodyさん
03/04/06 10:59ID:XHJoDMK3強いて利点を挙げるなら、宣言のところでメンバ変数の一覧が確認できるのと、
ハッシュだと、keyのtypoでも警告なしに通ってしまうことがあるのを防げること。
クラスの設計に利用する利点は…何かあるかな?クラス内でのデータ管理?
ところで、Perlでモジュールというと、
Perlには別のアプローチでのカプセル化の手段 tie があるよね
データ構造について抽象化できる場合なんかは、
こっちの方が Perl っぽくて良くないかな?
丁度、それっぽい記事を読んでいたので、
IBM : developerWorks : 洗練されたPerl: タイ変数 (Tied variables)
http://www-6.ibm.com/jp/developerworks/linux/030404/j_l-cptied.html
0191nobodyさん
03/04/08 04:08ID:O1bDvd1Lハッシュはねぇ…ハッシュはねぇ…。
0192あぼーん
NGNG0193あぼーん
NGNG0194あぼーん
NGNG0195あぼーん
NGNG0196山崎渉
03/04/17 12:08ID:???0197nobodyさん
03/04/18 11:29ID:qP4xwYVk難しい文字の羅列で説明見ても分からんのだけど、
思いっきり車輪の再発明ではないの?
0198山崎渉
03/04/20 06:02ID:???( ^^ )< ぬるぽ(^^)
0199nobodyさん
03/04/24 13:41ID:???再発明。ただし、再発明=悪とは限らない。
実際の話、自社の開発スタイルに適したフレームワークを確立してるとこは強いよ。
(Sledgeがその器かどうかは知らんが)
0200nobodyさん
03/04/30 03:18ID:DNJ+ul9N自分で再発明を繰り返さないためのものでしょ。
セッションの処理とか、フォームのデータの扱いとか、
いままで毎回毎回似たようなコードを書いていたようなものを、
うまくフレームワークにまとめてくれてるんだから、
ありがたいと思うよ。
0201nobodyさん
03/05/08 14:23ID:J45m1fTBセッションをロードしたとき、untieなどでロックを解放しなかった場合、
次のセッションでどうしてもApache::Session側が必ず固まってしまうのですが
なにか対処法ないでしょうか・・・
ちなみにLinux/apache 2/mod_perl 1.99.09/Apache::DBI/MySQL 4.0です
0202nobodyさん
03/05/08 14:36ID:J45m1fTBその後すぐuntieでいける。ここまで2行なのでエラーは起こらないはず
0203あぼーん
NGNG0204あぼーん
NGNG0205nobodyさん
03/05/12 01:40ID:???客指定のサーバに作ること多いんで・・・。
XMLパーサはXML::Perser::LiteってPurePerl?MovableTypeで使ってるみたいだけど。
0207nobodyさん
03/05/17 18:09ID:RhLo9Azbprint scalar localtime timelocal_nocheck 0,0,4,10,1,1987;
print "\n";
print scalar localtime timelocal_nocheck 0,60,4,10,1,1987;
print "\n";
--
これってTime::Localモジュールのバグですかね?
minuteがhourに繰り上がらない。
timegmを使うとこの現象は起こらないのですが。
0208あぼーん
NGNG0209nobodyさん
03/05/17 20:27ID:???シウシエシオシカシキ
0210nobodyさん
03/05/17 20:29ID:???0213nobodyさん
03/05/17 22:38ID:???>211じゃないが一言言わせてくれ。
こ ん な と こ で そ ん な テ ス ト す ん な !
0215山崎渉
03/05/22 02:01ID:???0216あぼーん
NGNG0217あぼーん
NGNG0218あぼーん
NGNG0219nobodyさん
03/07/30 20:21ID:Z9UJWv+FApacheのエラーログには
can't build entity: no body, and not multipart
[Wed Jul 30 19:37:09 2003] [error] [client 192.168.0.5] Premature end of script headers: /home/hoge/public_html/cgi-bin/hoge.cgi
と表示されました。
このエラーの対処方法を教えていただけませんでしょうか・・
環境は
perl5.8.0
関係ありそうなモジュール
MailTools-1.58
MIME-tools-5.411
Email-Valid-0.14
0220あぼーん
NGNG0221あぼーん
NGNG0222nobodyさん
03/07/30 23:19ID:???no body, and not multipart って出てるだろ
モジュールが原因かどうかは自分で何をuseしてるか見ればわかるだろ
0223あぼーん
NGNG0224nobodyさん
03/07/31 18:03ID:???Compress::Zlib なんだけど、Compress::Zlib::memGunzip が undef を
返す時ってどんな時?ソース見たんだけど、さっぱりわからなくて…。
0225nobodyさん
03/07/31 18:22ID:???inflateInitに失敗した時(考えにくい)
inflateでZ_STREAM_ENDにならなかった時
(Z_ERRNO Z_STREAM_ERROR Z_DATA_ERROR Z_MEM_ERROR Z_BUF_ERRORのいずれか)
CRCチェック失敗した時(binmodeとかの問題か?)
って感じ?
0229nobodyさん
03/08/17 18:01ID:36kz8z8Ahttp://www.adamswann.com/library/2002/msn-perl/
0230nobodyさん
03/08/18 19:12ID:???0231nobodyさん
03/09/16 17:03ID:5ze52rFS5.6 系と 5.8 系の ActivePerl を使い分けているのですが、
ppm でモジュールをインストールしようとすると、どのバージョンの
ppm を使ってもすべて 5.8.0 586 の site\lib にインストールされて
しまいます。
ppm プロンプトで
ppm>target
を調べると
* 1. ActivePerl 5.8.0.806
だけしか登録されていません。ppm のマニュアルを読んでみましたが
target の追加方法は書いてないような。。。どうしたら 633 とか 635
の site\lib にインストールできますか????
0232nobodyさん
03/11/20 23:45ID:???Makeは通るのですが,実行時にシェアドライブラリが見つからないとエラーが出てしまいます。
どうやら,chasenが利用するdartsライブラリ関連のリンクに関する問題のようです。
モジュール自体はc++で書かれていて私ではお手上げです。
だれか助けてください。
0233nobodyさん
03/11/21 00:34ID:???この辺では解決しませなんだか。
http://chasen.aist-nara.ac.jp/chasen/ml.html.ja
http://www.google.co.jp/search?q=perl+chasen+make+darts
0235232
03/11/21 22:20ID:???MLの過去ログはChaSenとNamazuなどから検索してみましたが,
見つかりませんでした。
2つのめのURLのライブラリのパスを記述する方法を試しましたが,状況は変わりません。
>234
gcc -v
Reading specs from /usr/lib/gcc-lib/i386-redhat-linux/2.96/specs
gcc version 2.96 20000731 (Red Hat Linux 7.3 2.96-113)
perl5.6.1
ChaSen version 2.3.3
という環境です。
また見つからないというsoファイルは存在を確認しています。
/usr/lib/perl5/site_perl/5.6.1/i386-linux/auto/Text/ChaSen/ChaSen.so
n.so
File::MMagicもインストールしています。
0236nobodyさん
03/11/22 01:05ID:???えーといまいちよくわからんのだが。
「ビルドできません」っていうのは正しくビルドできませんって意味?make は通ってるんだよね?
で、/usr/lib/perl5/site_perl/5.6.1/i386-linux/auto/Text/ChaSen/ChaSen.so がないって言われてるの?
それだと「dartsライブラリ」って関係ないような気もする。
perl -e 'print join " ",@INC' ってやったらどうなる?
0237232
03/11/22 20:16ID:???@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:???0239nobodyさん
03/11/28 16:04ID:???0240nobodyさん
03/11/28 22:14ID:???とりあえず CPAN で検索くらいかけようぜ。
ttp://www.perl.com/CPAN/
XML::SAX::PurePerl ってのがあるようだが?
0241nobodyさん
03/12/01 09:55ID:???test 成功率が 90% とか出てるんだけど、force install しちゃっていいのかな。
0242nobodyさん
03/12/29 13:40ID:iExeJWp2ここで報告されているフォーマットをMakefileに即反映させる方法ってあるのでしょうか。
0243nobodyさん
03/12/29 15:45ID:???0244?O?????|?X
03/12/30 16:30ID:2yZZI8A20245nobodyさん
03/12/30 16:50ID:???出来るけど、特許取られてるから商用利用の場合は気をつけてね。
ttp://www.union-jp.net/home/yukino-t.html
0246nobodyさん
04/01/01 19:50ID:KSdPAoW/google で調べてもよく分からないんです
0247nobodyさん
04/01/05 06:19ID:???十表ソ、等「\」が化ける
何とかならんのか…
0248nobodyさん
04/01/05 06:47ID:???0249nobodyさん
04/01/05 09:32ID:???0251nobodyさん
04/01/05 20:48ID:???解凍後リネームするのが面倒だから
0253nobodyさん
04/01/09 07:34ID:???0254251
04/01/09 08:27ID:???もしかして\\が入ってるのはActivePerl Win32版のみかな?
0255nobodyさん
04/01/14 22:39ID:???Example::Hogeっていうのを新しく作りたいんだけど,
h2xsでひな形作るにはどうしたらいいでしょうか?
h2xs -AX -n Example::Hogeってやると
Example/FooがすでにデリレクトリにあるとExample-Hogeってができちゃうの。
0256ヽ(´ー`)ノ
04/01/15 09:12ID:???0257nobodyさん
04/02/18 12:32ID:w3gtAc2IMyConfig.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 に入れて新しいの使う、
なんて事はできないんでしょうか?
モジュールの使い方ってよりインストールの仕方、なんですが。
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:???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:???無理すれば HTML::Template も動くとは思うが、でも古過ぎだよなあ
0261nobodyさん
04/02/18 20:42ID:???0262nobodyさん
04/02/18 21:27ID:???> PERL5LIBかPERLLIB環境変数は設定したでござるか?
MyConfig.pmの、
$CPAN::Config{'make_arg'}
$CPAN::Config{'make_install_arg'}
$CPAN::Config{'makepl_arg'}
にはそれぞれ設定してるんですが、
PERL5LIBかPERLLIB環境変数ってどんなエントリー(key)で
設定すればいいんでしょうか。
ユーザーlibパスを設定したらCPAN.pmがそれも含めて
@INC内モジュールを使ってくれる、って事ですよね。
0264nobodyさん
04/02/18 22:47ID:???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については良く分かりません。スマソ。
0265257
04/02/18 22:54ID:???すいません。お勉強してました。で、
.bash_profile に
PERL5LIBを設定して、
perl -e '(print join("\n",@INC));'
したら、見えました!
setコマンドでも設定されてました!
ありがとうございます。
で、引っかかってたいくつかがインストールできました。
で、確認ですが、
これを設定したからといって
use lib プラグマの記述が必要なくなる、って事ではないんですよね。
試しにuse lib 外したら、必要なモジュールがない、って怒られました。
@INC に入ってるのにuse libしなくちゃならないってのがげせないんですが、
何でですか?
0266nobodyさん
04/02/18 23:24ID:???ログインファイルはログイン時に参照されるので、
ログインしないと設定されないと思います。
PERL5LIBにパス入れたらuse libは必要ないよ。
多分、まだ何かおかしい。
0268257
04/02/19 01:38ID:8y6GewN9そうです。
そうか、そういうことなんですね。
CGIで設定が効いてないのはbashでログインしてないから。
>>267
つまり、bashから起動するperlスクリプトにはuse libは必要ないはず、と。
なんだかなぞが解けてきました。
明日bashからやってみます。
0269nobodyさん
04/03/04 07:39ID:yHD/tZ44use 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のエラーログにこう書き込まれ終了します。
どなたか解決方法わかる方見えましたら、
ご教示願います。
0271269
04/03/04 22:27ID:yHD/tZ44レスありがとうございます。
インストールしたバージョンは5.5.7-10です。
グーグルで探してもうまくヒットせず、どこを参考にしていいか…
やっぱり単純にバージョンを落としたほうがいいのでしょうか?
0272nobodyさん
04/03/05 11:42ID:???ReadImage()メソッドの引数、呼び出しのタイミングは絶対合ってる?
0273nobodyさん
04/03/05 16:05ID:EtQqgjUIしかし、perldoc DBIを行うと、 No documentation found for "DBI".
と表示されてしまいます。
DBI.pm、Pg.pmのディレクトリまで移動して、perldoc DBI
を行うと、マニュアルが表示されます。
どうやれば直せるのでしょうか?
なお、インストールの場所は自分で指定する方法で行いました。
0274269
04/03/05 19:53ID:???#!/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;
今回上記のようにテストしたんですが、同じエラーでます。
もしかして根本的に書き方間違ってるでしょうか…
■ このスレッドは過去ログ倉庫に格納されています