Perlモジュールについて
■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。
2001/08/15(水) 07:47ID:???モジュールの使い方とかリンクは>>2-10さんが出してくれるかも?!
0385nobodyさん
04/06/30 06:04ID:???この辺を調べ尽くし済なら知らないなぁ。
http://search.cpan.org/search?query=Bayes&mode=all
http://www.google.co.jp/search?num=100&q=Bayesian+Perl
0386nobodyさん
04/06/30 11:52ID:???サンクスコ
とりあえず、
http://search.cpan.org/~kwilliams/AI-Categorizer-0.07/
を呼んで見ることにしたよ。
0387nobodyさん
04/08/08 11:17ID:Ejd6WZ6rファイルではなくメモリ上に展開してくれるモジュール無いですか?
0388nobodyさん
04/08/08 14:32ID:???0389nobodyさん
04/08/08 17:57ID:???DBIと他に二つくらいあった気がするんですが忘れてしまいました。
一応今はwinxpにactiveperl5.6.1.638が入ってるのでPPMを使ってやろうと思いますが一応順番も関係あった気がするので
知ってる方おながいします。
0390389
04/08/08 18:11ID:???DBI
Msql-Mysql-modules
の3つを上の順番でインスコでした;失礼しました。
0391389
04/08/08 18:23ID:???perl.exeはc:\usr\binにあるのでwinxpのコマンドプロンプト開いて
cd \usr\binとして
c:\usr\bin>ppm install Data-Dumper
をやると以下のエラーがでました。
Failed to load PPM_DAT file
Can't use an undefined value as a SCALAR reference at C:/usr/site/lib/PPM.pm lin
e 1678, <DATA> line 40.
翻訳
PPM_DATファイルをロードしませんでした。
C:/usr/サイト/lib/PPM.pm lin e 1678、<DATA>40行でSCALAR参照として
不確定の値を使用することができません。
以前のパソコンはwin98だったのですが、同じactiveperlのバージョンで問題なくインストールできました。
エロイ人おながします。
0392nobodyさん
04/08/08 19:28ID:???PPM のバグのせいで ppm.xml が壊れてしまったんじゃないかと思う。
直し方は知らないのだが、5.8.4 に移行すればたぶん問題なくなる。
0393389
04/08/08 23:15ID:???ありがとうです。
今度使うサーバがactiveperl5.6.1.638を使ってるので、一応同じもので動作確認をしたくってこれを使ってます。
perlの再インストールとか試してみます。
0394389
04/08/09 06:56ID:???でもMsql-Mysql-modulesで下のようなエラーがでました。
C:\usr\bin>ppm install Msql-Mysql-modules
Installing package 'Msql-Mysql-modules'...
Error installing package 'Msql-Mysql-modules': Read a PPD for 'Msql-Mysql-module
s', but it is not intended for this build of Perl (MSWin32-x86-multi-thread)
翻訳
パッケージ「Msql-Mysqlモジュール」のインストールパッケージ「Msql-Mysqlモジュール」
をインストールするエラー:「Msql-Mysqlモジュールs」のためにPPDを読む
、しかし、それはPerl(MSWin32-x86マルチスレッド)のこの構造のために意図されません。
activeperlを入れてるディレクトリが悪いのでしょうか?それともmysqlの場所が悪いのでしょうか?
mysqlはc:\mysqlディレクトリにあります。再インストールは何度かしてみましたが変わらずです。
mysql4.0.18を使っています。
0395nobodyさん
04/08/09 08:56ID:CVqqb4Xeどこがおかしいのでしょうか?
ある程度複雑なコード書いて全く何も出力されなかったので、
簡単なコード書き直して試してみたのですが、やはりなにも出力されません。
a.pl
#!/usr/bin/perl
use strict;
use HTML::Template;
my $html = HTML::Template->new(filename => 'a.tmpl');
print "Content-Type: text/html\n\n";
$html->output;
a.tmpl
<html>
<head><title>Test Template</title>
<body>
</body>
</html>
0396nobodyさん
04/08/09 08:58ID:???0397nobodyさん
04/08/09 08:58ID:CVqqb4Xe何も出力されないと書きましたが
Content-Type: text/html
だけは出力されます。
HTML::Templateが何も出力してくれないという事です。
0399nobodyさん
04/08/09 10:01ID:???install HTML::Templateで入れただけなのですが…
0400nobodyさん
04/08/09 10:02ID:???print $html->output; にしないと
0401nobodyさん
04/08/09 10:05ID:???0402nobodyさん
04/08/09 10:07ID:???getResultみたいなメソッド名にしてくれれば、
こんな事で悩まないのに…
0403389
04/08/09 10:23ID:???0404nobodyさん
04/08/09 12:22ID:???$html->output(\*STDOUT)でもいけたはず。
メソッド名が紛らわしいのは同感だが、ドキュメントのSYNOPSISくらい読もうな。
0405nobodyさん
04/08/28 17:28ID:XMnxFKiqPOSTやGetでセッションIDを渡していく方法はできないのでしょうか?
0406nobodyさん
04/08/28 17:41ID:???http://perldoc.jp/docs/modules/CGI-Session-3.11/Tutorial.pod
0408nobodyさん
04/10/11 17:29:51ID://6u00DL素晴らしい。
0409nobodyさん
04/10/11 18:43:46ID:???コネクション切れちゃわない?
0410nobodyさん
04/10/11 20:45:35ID:???Apache::DBI で対応する
0411nobodyさん
04/10/11 23:48:16ID:???かってに保持される?
0412nobodyさん
04/10/12 00:14:09ID:???これはコネクションを保持するんじゃなくてクエリ結果をキャッシュしておくやつ
0414nobodyさん
04/10/12 04:52:53ID:???0415nobodyさん
04/10/12 10:37:05ID:???CGIはリクエスト毎にプロセスが終了するので、誰かが生き続けないといけない。
PHPの場合は mod_php が apache 内部で生き続ける。
同じことを perl でやろうとするなら、当然 mod_perl という話になる。
0417nobodyさん
04/10/14 10:22:20ID:???Ima::DBI - Database connection caching and organization
同一プロセスで、
dbhと、prepareされたSQLステートメントをOO的に使いまわす仕組み。
クエリのキャッシュじゃない。
0418nobodyさん
04/10/17 13:11:00ID:cj8+Zu2zデータのやりとりをするモジュールってできないかな。
速度的にも十分実用的なやつ。
DBD::CSVなどはちょっと実用的じゃないですしね。
0419nobodyさん
04/10/17 13:37:58ID:???それとも、PHPのSQLiteって別物?
0421nobodyさん
04/10/17 16:05:10ID:???使ったこと無いんだけどDBD::CSVとかDBD::Spriteって実用的じゃないの?
速度はそりゃ劣るだろうがそこそこいけるみたいだったが
DBD::SQLite入れるのが一番はやいと思うけどね
0422nobodyさん
04/10/18 21:21:06ID:???知らなかったよ。
0423nobodyさん
04/10/19 00:14:31ID:???0424nobodyさん
04/10/19 01:34:32ID:???くぱん?しーぱん?しーぴーあん?こぱん?
0426nobodyさん
04/10/19 10:49:16ID:sbgcDJ+72.http://bbb.b.b/b/cgi
1のプログラム上から引数を渡して2のプログラムを動作させて
結果を1のプログラムに返すようなことって可能でしょうか?
2のサーバーのローカルにあるデータベースからデータを取得して
1のサーバーのローカルにあるデータベースにデータを保存したいと
おもっております。 言語はperl使用です。
まったくモジュールのことがわからないのですが
LWPモジュールとHTTP::Request::Commonモジュールの
組み合わせで作成可能でしょうか?
0427nobodyさん
04/10/19 11:45:46ID:???やりたいことにもよるが、
たぶん君の場合は、LWPの中に入っている LWP::Simple で用が足りると思う。
0428nobodyさん
04/10/19 19:36:06ID:???0429nobodyさん
04/10/20 10:07:09ID:???0430nobodyさん
04/10/20 17:20:13ID:Z3mYsmENLWPを使用してデータを取得できるようにはなりました。
ただ、呼び出しもとのCGIからPOSTを使用して
データを送りLWP::UserAgentをつかってるので
CGIから呼び出したCGIの実行結果に
HTTP/1.1 200 OK Connection: close Date:・・・
と引っ付いてきます。
CGIから出力したデータのみを受け取る方法は
ないでしょうか?
送信結果に必ず専用の文字列を付けてsplitで
分割してやればとれるのですが・・・。
0431nobodyさん
04/10/20 20:24:28ID:???0432nobodyさん
04/10/20 22:56:16ID:???Net::HTTPを使おう!
0433nobodyさん
04/10/22 20:38:20ID:W90PZT9wLWP::UserAgentから移行したいのですが使いかたがわかりません。
WEBからHTMLを引っこ抜くだけでいいので、教えて下さい。。。
0434nobodyさん
04/10/23 23:04:20ID:???スキップするなり削るなりすればよろし。
HTTP/1.\dを送らない場合もヘッダ送ってこないね。
0435nobodyさん
04/10/23 23:31:37ID:???0436nobodyさん
04/10/23 23:51:23ID:???君もよくこんなあやしいモジュールを見つけてきたな。
man を読んでも使い方がわからん(笑)。
まあ冗談抜きで作者に直接聞くのが良さそうに思える。
>>435
GET でなく POST が必須のケースだと LWP::Simple では厄介なのかもしれん。
0437nobodyさん
04/10/26 17:52:20ID:1e7srzTI0438nobodyさん
04/10/26 17:56:52ID:???指定時間CPU私有したらKillとか
0439nobodyさん
04/10/26 17:58:22ID:1e7srzTI0440nobodyさん
04/10/26 18:14:05ID:???0441nobodyさん
04/10/26 18:17:07ID:???0442nobodyさん
04/10/26 18:54:37ID:???0443nobodyさん
04/10/26 20:28:08ID:MHz0RVYOお返事ありがとうございます。
速度的な問題でNEWSサイトの記事を並列アクセスでGETしたいんですよ。
今度はLWP::Para::UserAgentっていうのを見つけたんですが
またわかりませんw
LWP::UserAgentを参考にしろとあったのですが、わかりませんw
0444nobodyさん
04/10/26 20:28:48ID:MHz0RVYO{
$SIG{ALRM} = sub {die "timeout"};
my $url =$_[0];
$| = 1;
my $link_agent = LWP::UserAgent->new();
$link_agent->agent("robovie/v0.99 ooie");
my $request = HTTP::Request->new(GET => $url);
my $link_content="";
eval{
alarm(10);
my $response = $link_agent->request($request);
if($response->is_error()){
printf " %s\n" , $response->status_line;
}
else{
$link_content = $response->content();
}
alarm(0);
};
#print $link_content;
return jcode($link_content)->euc;
}
書き換えお願いします。。。
0445nobodyさん
04/10/30 16:39:05ID:N1vJ8kvjなんだかんだで、ソケットを分割してパラレルアクセスできる関数を
作ることができました!
板汚しすみません。
0446nobodyさん
04/11/17 00:47:02ID:eDG30weTどのモジュールがどんな使い方ができるのか、を全体的に知る方法はないでしょうか。
何かをするときにわざわざ調べるんじゃなくて、知っておきたいのですが。
0448nobodyさん
04/11/17 20:22:00ID:???0449nobodyさん
04/11/18 01:21:04ID:???0450nobodyさん
04/11/19 00:20:32ID:NL+qMdTZ以下、最小構成のサンプルコードです。
■問題までの過程
1.FTPできれいな画像をあげた。
2.$i->Readした。
3.何もしないで同じ場所に$i->Writeした。
4.画像のパーミッションは666!
■問題
画像の終わりのほうがグレーになる。
■■■■■■■■■■■■■■■■
■■■■■■■■■■■■■■■■
■■■■■■■■■■■■■■■■
■■■■■■■■■■■■■■■■
■■■■■■■■■■■■□□□□
↑みたいな感じ。
#!/usr/bin/perl
use strict;
use Image::Magick;
my $i = Image::Magick->new;
$i->Read("/home/www/hoge/html/$mode.jpg");
$i->Write("jpeg:/home/www/hoge/html/$mode.jpg");
なんでぇ?偉い人教えてください。バージョンは最新。OSは赤帽。
0453nobodyさん
04/12/03 15:52:45ID:???GIF動画の場合に特別な処理ってありますか?
$width = 120;
Scale(geometry=>$width);
という具合に縮小してます。
0456nobodyさん
04/12/07 21:21:20ID:???出ない場合もあるかもしれんが。
0457nobodyさん
04/12/17 12:42:18ID:???全くPPMが通らないのは何でだろう。。。。
0458nobodyさん
04/12/17 12:54:33ID:PMBOtGAD0459nobodyさん
04/12/17 18:05:00ID:???ppmの設定がおかしいんでは?
0460nobodyさん
04/12/17 22:11:49ID:LkZWkPCw確かにサーチすると見当たるのですが、、、、
インストールに失敗してしまいます。
どうも バージョンに適応しないと判断された という趣旨のエラーメッセージがでるのですが
Activestateで見てみるとPassにはなっているのですよね。
原因がさっぱり分かりません。
モジュールを直に落としてインストールする方法でも同じエラーでダメでした、、、
環境はActivePerl 5.8.4、Windows2000SP4です。
0461nobodyさん
04/12/17 23:11:36ID:???レポジトリが5.6.x用になってたりしない?
旧版からバージョン上げたりするとありがちな気がする。
ppm> rep desc
で何が出る?
0462nobodyさん
04/12/18 00:22:47ID:???返答ありがとうございます。
試したいのですが自宅に戻ってしまって試せません。
明日にでも試してみようと思います。
ちなみに自宅で同様のことをやったら、今度は成功しました、、、、、
何なんだろう。
環境の違いはプロキシぐらいなのですが、、、、(http_proxyは設定済みです)
0463457=462
04/12/18 12:14:00ID:j91tTSrDppm> rep desc
Describing Active Repository 1:
Name: ActiveState PPM2 Repository
Location: http://ppm.ActiveState.com/cgibin/PPM/ppmserver.pl?urn:/PPMServer
Type: PPMServer 2.0
こんな感じでした。
0464nobodyさん
04/12/18 12:41:30ID:???Perl5.8.xなら
Name: ActiveState PPM2 Repository
Location:
http://ppm.ActiveState.com/cgibin/PPM/ppmserver-5.8-windows.pl?urn:/PPMServer
Type: PPMServer 2.0
か、
Name: ActiveState Package Repository
Location:
http://ppm.ActiveState.com/PPM/ppmserver-5.8-windows.plex?urn:/PPM/Server/SQL
Type: PPMServer 3.0
だったかと。
レポジトリを上記に修正してみてちょ。
0465457=462
04/12/18 12:55:09ID:???http://ppm.activestate.com/PPMPackages/zips/8xx-builds-only/Windows/
ここからDB_Fileのものをダウンロードして解凍、ローカルとしてレポジトリに追加し、
”既存のレポジトリ(ActiveState)をオフにして” インストールしたら成功しました。
上位のレポジトリで失敗したら下位のレポジトリへ…とはいかないのですね。
しかしながら、オンラインで直接インストールには依然として失敗してしまいます。
なんなんだろう、、、
0466nobodyさん
04/12/18 12:59:38ID:???>>464
そちらのURLを追加して再びやってみたところ、正常にインストールできました。
素晴らしい!
ありがとうございました。これにて完全解決です。
0467nobodyさん
04/12/19 15:59:33ID:oCulOE0FCGIを作成しているのですが、グラフに日本語表示ができずにハマっています
set_xlabel_font('/usr/share/fonts/truetype/kochi/kochi-gothic.ttf',12)
こんな感じで指定してやっても表示できません・・・ 助けてください。
0468nobodyさん
04/12/21 01:29:38ID:???0469nobodyさん
04/12/21 02:27:24ID:???Class::DBI のパフォーマンスを上げる Class::DBI::Plugin::Iterator
0470nobodyさん
04/12/27 18:41:08ID:WjDOje5iこちらで質問させていただきます。
ActivePerl v5.8.6にて、
「LWP::Simple」で取得したソースから「HTML::TableExtract」を使用して、
テーブルの文字列を取得しようとしてます。
=�@==========================================
use LWP::Simple;
use HTML::TableExtract;
require 'jcode.pl';
$url = "http://xxx.com/";
$html_file = get($url) or die "$!\n";
jcode::convert(\$html_file,'sjis','euc');
=�A=========================================
use LWP::Simple;
use HTML::TableExtract;
use Encode;
use encoding 'shiftjis';
binmode(STDERR, ':raw :encoding(shiftjis)');
$url = "http://xxx.com/";
$html_file = get($url) or die "$!\n";
$html_file = decode('euc-jp', $html_file);
============================================
�@、�Aのパターンとも、$html_fileは正常に表示されます。
0471470
04/12/27 18:43:27ID:WjDOje5i=�B==========================================
$table_extract =
HTML::TableExtract->new(
headers => [qw(ああ いい うう)]);
$table_extract->parse($html_file);
foreach $table ($table_extract->table_states) {
foreach $cols ($table_extract->rows) {
print "@$cols[0] @$cols[1] @$cols[2]\n";}}
===============================================
�Bに流すと、�@の$html_fileについては正常にテーブルの値が取り出せるのですが、
�Aの$html_fileについては
Malformed UTF-8 character (unexpected non-continuation byte 0x00, immediately after start byte 0xef) in pattern match (m//) at c:/Perl/lib/HTML/TableExtract.pm line 920.
Malformed UTF-8 character (unexpected continuation byte 0xbf, with no preceding start byte) in pattern match (m//) at c:/Perl/lib/HTML/TableExtract.pm line 920.
というメッセージが大量に出現してしまいます。
�@については「headers」部に「ー」が入っていると、
Unmatched [ in regex; marked by <-- HERE in m/
が出てしまうので、�Aの方法でやりたいと考えてます。
この解決方法を教えていただけませんでしょうか。
よろしくお願いします。
0472nobodyさん
04/12/27 20:01:32ID:alR6olXTパールのバージョンを古いのから新しいのまで色々試してみたのですが、結果は同じでした。
ところが、他の人のPCで同じ条件で試して見ると半角文字が文字化け改行せず、正常に出力されます。
これは何が原因と考えられますか?
他人のPCの場合の出力結果(正しい結果):
1.合計
2.現在のポイント
3.通算順位
自分のPCの場合の出力結果:
1.合計
2.現在の・
イント
3.通算順位
0473nobodyさん
04/12/27 20:23:09ID:???3はスクリプト中に日本語が埋め込まれているようだが、スクリプト自体の文字コードは何?
あと、こちらの事情で恐縮だが、丸数字は使わないでくれると有難い。
>>472
常識的に考えて「あるプログラム」が原因なのは間違い無いように思える。
なお「これって Perl モジュールの質問なのか?」という点も疑問に思ったことを付け加えておこう。
0474470
04/12/27 21:22:00ID:???>丸数字は使わないでくれると有難い。
大変失礼致しました。
スクリプト自体の文字コードはWindowsなので"shiftjis"です。
ちなみに、取得したいURLの文字コードは"euc-jp"で、日本語ページです。
0476nobodyさん
04/12/28 22:37:32ID:???2だと decode('euc-jp',$html_file) した時点で utf8 フラグが立って、
Extract.pm の 920 行目で utf8 フラグの立った文字列を sjis でパターンマッチさせようとして
それでエラーが出るのだと思う。
headers に sjis を入れるのではなく utf8 を入れる、
例えば qw(ああ いい うう) をいったん utf8 に直してから headers に入れるとか、
あるいはスクリプト全体を utf8 で書いてしまうとか、というのはどうだろう。
0477470
04/12/29 19:50:47ID:???回答ありがとうございます。
当方、スキル不足のため、
今だその設定の方法も試せていない状況です。
ttp://homepage1.nifty.com/nomenclator/perl/unicode.htm
ttp://naoya.dyndns.org/~naoya/mt/archives/000611.html
あたりが参考になりそうですので、チャレンジしてみます。
0478nobodyさん
05/01/09 09:00:46ID:???0479nobodyさん
05/01/12 16:09:48ID:???http://perldoc.jp/docs/modules/CGI-Session-3.11/Tutorial.pod
http://perldoc.jp/docs/modules/CGI-Session-3.11/Session.pod
今この二つを読みながら実際に動作テストしていますが、セッションデータは
一体どこにファイルが作られているのでしょうか?
my $session = new CGI::Session(undef,undef,{Directory=>"/tmp"});
で初期化して$session->id();でセッションIDを見たりなどはチュートリアルに
わかりやすく書いてありますが、どこのディレクトリになんていう名前のファイルが作られている
のかがわかりません。
apacheを使っていて、cgi-bin内にtest.cgiを作りそこで動作テストしてます。
cgi-binの中に作られていると思ったらありませんでした。
初歩的な質問ですみませんが宜しくお願いしますm(_ _)m
0481480
05/01/13 09:07:23ID:???どこが起点になっているのでしょうか?test.cgiが置いてあるディレクトリにはtmpと
名前が付くものはありませんが・・・・・
0483479
05/01/13 12:42:59ID:???ルートとはapacheに設定してあるルートディレクトリですよね。
しかしパソコン内にあるファイル・フォルダ全てをtmpで検索しても
gimp2.2やウイルスバスターなどのtmpフォルダしか出てきませんでした。
なのでやはりどこにも存在してないんだと思います。
これはバグでしょうか?それとも自分でその場所に手動でディレクトリを作ってあげないと
いけないのでしょうか?
確かにセッションのテストをしていても何故かうまくいきません。
ファイルが作られていないという感じです。
ちょっと自分のPCに入ってるapacheのルート設定がどうなってるか調べて
手動でtmpフォルダを作ってみます。
ヒントありがとうございましたm(_ _)m
0484479
05/01/13 12:50:37ID:???CGI処理後にファイルが新たに作られてはいませんでした。
関係ありそうなところにはtmpフォルダを作成しましたが効果なしです・・・・
何が原因なのでしょうか?一応test.cgiの中身をあげます。
0485479
05/01/13 12:53:46ID:???#京
use strict;
use CGI::Session;
my $session = new CGI::Session(undef,$ENV{'QUERY_STRING'},{Directory=>'/tmp'});
if ( !$ENV{'QUERY_STRING'} ) {
$session->param(-name=>"test" ,-value=>"ok");
}
my $id = $session->id();
print "content-type:text/html;charset=euc-jp;\n";
print "\n";
print $id."<br>".$session->param("test");
print qq|<br><br><a href="test.cgi?$id">テスト</a>|;
■ このスレッドは過去ログ倉庫に格納されています