Perlコーディング初心者質問スレ Part 57
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2008/02/25(月) 19:25:51ID:???【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
「コマンドの意味がわかんない」とかはマニュアル見ましょう。
回答者さんは何でも屋じゃありません。
1: 自分はこういう事がしたい。
2: それでこんな風にやってみたが・・・
3: こんなエラーが出て上手く行かなかった。
最低でも1と3が無いと誰も答えられないよ。
良い回答は良い質問から。一緒に勉強しましょう。
お勧めサイトは >2 以降
前スレ http://pc11.2ch.net/test/read.cgi/php/1189939783/
過去ログ倉庫 ttp://user.ftth100.com/mirrorhenkan/perl/
0267nobodyさん
2008/03/30(日) 23:58:51ID:???言っとくけど俺をあまりナメないほうがいいよ
vipでコテハンやってるしこのスレ潰すくらいの影響力は持ってるから
くだらないことで刺激して後悔しないようにね
0270nobodyさん
2008/03/31(月) 10:11:33ID:???0271nobodyさん
2008/03/31(月) 12:02:54ID:???0272nobodyさん
2008/04/01(火) 21:14:09ID:???鯖管理してる人が入れたくないです。っていうので
HTML::Templateの代わりになるような標準モジュールって何かありますかね?
個人的にはHTML::Templateの<TMPL_IF>みたいなのが使えれば大満足なんだけども
自分で作っちゃったほうが早いかな?
0273nobodyさん
2008/04/02(水) 01:00:40ID:???0274nobodyさん
2008/04/02(水) 10:50:31ID:???0275nobodyさん
2008/04/02(水) 14:04:47ID:???perlには大きくわけて2つあると聞きました
1:恐らくActivePerlの為に書かれたであろうソースをcygwinで動かしたい
(書いた方はどちらのperlと言うこともなく消えちゃいました。他の方が「それperlだよ」と教えてくれました)
2:1行目に書かれていた 「 #!/perl/bin/perl 」 を 「 #!/cygwin/bin/perl 」 に書き換えた
2行目にあった 「 # /usr/bin/perl はないはず 」 を削除した
読み込ませるファイルをcgi-binフォルダーに置いた
3: Internet Explorer ではこのページは表示できません
cygwinとActiveperlは書き換える箇所があるのですか?
基本は同じと聞いたのですが細かく言うと変更すべきところもあるんでしょうか?
どなたかよろしくお願い致します
0276nobodyさん
2008/04/02(水) 14:28:33ID:???>perlには大きくわけて2つある
ファイルを置けば動くPurePerlと、installが必要なバイナリの2種類かな?
>恐らくActivePerlの為に書かれたであろうソースをcygwinで
プログラムファイル自体にその差は無い
よって
>cygwinとActiveperlは書き換える箇所があるのですか?
書き換える箇所は無い
ただしActivePerlでは動かないものもあるかもしれない
cygwinはUNIXエミュレータ(みたいなもの)
ActivePerlはWindows版のPerlインタプリタ
同列に並べるのはおかしい
> Internet Explorer ではこのページは表示できません
このエラーが出るってことはおそらくパーミッション
0277nobodyさん
2008/04/02(水) 15:21:24ID:???書いた人です。「それは Perl だ」と言ったのも自分。
あれはCGIではなくてCLIスクリプト(=コンソールアプリ)なので、
Perl実行環境さえあればWebサーバだの何だのは要りません。
# 「標準出力に何も吐かない」ブツはCGIではない。
あなたのしたいことは、Web制作板ともWebProg板とも関係のないことです。
ブツ自体はActivePerl だろうが cygwin 上の Perl だろうが動きます。
プロンプトから perl hoge.pl するだけ。以上。
ただ、glob() に2万ファイル食わせるのはやめといたほうがいいと思うな。
0278nobodyさん
2008/04/02(水) 15:33:03ID:???0279nobodyさん
2008/04/02(水) 15:40:45ID:???http://pc11.2ch.net/test/read.cgi/hp/1205922529/100
ほんとか?
0280nobodyさん
2008/04/02(水) 15:52:10ID:???>>276
詳しくありがとうございます
勉強になります
>>277
手取り足取りスレでお世話になりました
>>277さんのお陰で目標までの道が見えたような気がします
本当に感謝しております
HTMLとTXTそれぞれ3枚づつ置いてテストしてみようとしたのですが
上記の通り読み込めませんでした
hello.plで試したところ読み込みはできているようなので
書き込み用のファイルを用意しておくべきなのかわからないです
サーバなしで動くのでしたか私はサーバを通して操作するものかと勘違いしてましたすいません
perlでできると教えてくれて本当にありがとうございます
板違いになるのかーショボーン
どこに行けばいいのか・・・
みなさんありがとうございました
0281277
2008/04/02(水) 16:00:03ID:???とりあえず、物凄い勢いで板違い。>>275さんには、教えてgoo辺りがお勧め。
当分消えよう。
>>278
間接でも偏頭痛がしたので勘弁してください。
放置するとめんどくさい流れになりそうだったので出てきました。すみません。
>>279
そこで正解です…。
0282nobodyさん
2008/04/02(水) 17:09:09ID:???0283nobodyさん
2008/04/02(水) 21:09:16ID:???0284nobodyさん
2008/04/03(木) 00:13:59ID:???それぐらい察してくれるとありがたい
0285nobodyさん
2008/04/03(木) 03:38:43ID:x8vlzbgB0286nobodyさん
2008/04/03(木) 10:28:20ID:???0287nobodyさん
2008/04/03(木) 13:05:14ID:???0288nobodyさん
2008/04/03(木) 14:21:42ID:???0289nobodyさん
2008/04/03(木) 16:36:19ID:???0290nobodyさん
2008/04/03(木) 18:06:58ID:???0291nobodyさん
2008/04/03(木) 19:03:25ID:???StrawberryPerlと比べてActivePerlはどういうメリットがあるのかな。
PPMが便利なこともあるけど、CPANが使いやすいStrawberryPerlの方が自分は便利。
ActivePerlの方を推す方の意見を聞きたいです。
0292nobodyさん
2008/04/03(木) 19:56:47ID:???Strawberry Perl に一致する日本語のページ 約 13,000 件中 1 - 50 件目 (0.37 秒)
ActivePerl入れっぱなしだから特に探さなかった
0293nobodyさん
2008/04/03(木) 20:05:15ID:???0295nobodyさん
2008/04/03(木) 22:08:39ID:???存在すらしらなかった
0296nobodyさん
2008/04/03(木) 22:33:14ID:???何かあっても日本語で済ませられるからなぁ。あそこだとCatalyst+DBIC+TT2もJiftyもPlaggerもそろってるし。
0297nobodyさん
2008/04/04(金) 04:20:23ID:???0298nobodyさん
2008/04/04(金) 10:07:57ID:???たしかにそれはもっともなんだが、クライアントの要望でWinで動かなきゃだめ、ってのでも
対応できて助かる。ほんと。
0299nobodyさん
2008/04/04(金) 14:10:52ID:???特殊なことをするのでなければ、cronとSpeedyCGIぐらいしか思いつかない。
0300nobodyさん
2008/04/04(金) 16:49:23ID:???0301nobodyさん
2008/04/04(金) 17:29:46ID:???0302nobodyさん
2008/04/05(土) 00:28:43ID:???SQLに日本語が混じっているときSJISだとうまくいくのですが
UTF8だと文字化けしてエラーになってしまいます。
Unicodeでも文字化けしない方法はないでしょうか?
0303nobodyさん
2008/04/05(土) 03:41:48ID:???0304nobodyさん
2008/04/07(月) 18:30:35ID:/Zogy0zf現在、mod_perl下で動いているプログラムがあります。
必要があり、これを修正してみたところ、何が悪かったのかそのままサーバダウン。
サーバダウン直前の挙動、エラーメッセージ、mod_perlの特性などから検証した結果、
プログラムの必要メモリ量が極端に増え、それに伴いメモリ不足で落ちたのではないかという結論に至りました。
さて、ここからが質問なんですが、
mod_perlのプログラムを書くにあたり、メモリ使用量などに関して、
コーディングのコツ、書くときの注意、メモリ使用量を見る方法などがありましたら教えてください。
参考になるサイトや書籍などでも構いません。
英語でも頑張って読んでみようとは思いますが、理解できるかどうかは甚だ怪しいです。
0305nobodyさん
2008/04/07(月) 19:21:31ID:???0306nobodyさん
2008/04/07(月) 19:50:42ID:???0307nobodyさん
2008/04/07(月) 21:42:21ID:TcHrwP/20308nobodyさん
2008/04/07(月) 23:10:26ID:???0309nobodyさん
2008/04/07(月) 23:27:22ID:???0310nobodyさん
2008/04/08(火) 03:52:16ID:???0311nobodyさん
2008/04/08(火) 06:53:24ID:O35wAre8特定のオブジェクトを外部から判定したいとしたときなど、
文字列(ClassName=HASHxxxなど)を見て判断できるとも思いますが、
文字列変換が値の出力にオーバーライドされていたりするとダメですし・・
例えば、あるサブルーチンの引数をClassNameオブジェクトに限る、といったときに判定したいのです。
よろしくお願いします。
0312311
2008/04/08(火) 07:27:45ID:???if ($obj->isa('ClassName')) {・・・}
この辺から探っていけそうでしたので、311の質問は一旦取り下げますm(_ _)m
0313nobodyさん
2008/04/08(火) 09:05:59ID:???してます。
今回の場合に限りますが、解放されてないリソースが溜まり続けると言うより、1回の必要量が大きすぎた模様。
>305
いや、そんなこと言われても。
>306-309
質問文は後半だ。
0314nobodyさん
2008/04/08(火) 09:13:08ID:???>>1
【激速】mod_perl SpeedyCGI FastCGI【激速】
http://pc11.2ch.net/test/read.cgi/php/1149505269/
0315nobodyさん
2008/04/08(火) 12:45:16ID:???mod_perlかcgiかに関係なく
strictを付ける
サイズの予想できないデータは一括取り込みしない
ってのは当たり前だと思うんだが・・・
mod_perlで問題になりそうなのは
循環参照と意図しないクロージャくらいかな?
0316nobodyさん
2008/04/08(火) 18:50:34ID:???ありがとうございます。
宗教戦争が勃発してる魔境にしか見えないのが辛いところですが。
>315
ちょっとだけ内部の挙動を変えたらメモリ容量が4倍に膨れ上がってしまいまして…。
こういうのを、topコマンドでリアルタイムに監視する以外の方法があれば教えてください。
0317nobodyさん
2008/04/08(火) 19:19:20ID:???0318nobodyさん
2008/04/08(火) 19:20:40ID:???0319nobodyさん
2008/04/08(火) 19:26:09ID:???http://perl.apache.org/docs/1.0/guide/performance.html#Measuring_the_Memory_of_the_Process
参考リンク
0320nobodyさん
2008/04/08(火) 20:31:28ID:???単純計算ですが、総計にしてメモリ1GBほど増加です。
>318
ありがとうございます
>319
ちょうど英語にひぃひぃ言いながら読んでたところです。
0321nobodyさん
2008/04/08(火) 20:55:45ID:???とりあえずこのへんも参考にするといい
http://iandeth.dyndns.org/mt/ian/archives/000624.html
http://www.typemiss.net/blog/kounoike/20060212-64
0323nobodyさん
2008/04/08(火) 23:49:56ID:ng1N9SG/utf8::decode($str);
if ($str =~ /\P{IsASCII}/ and not (utf8::is_utf8($str))) {
### エラー
}
ってやってみましたが、あってますか?
0324nobodyさん
2008/04/11(金) 10:40:16ID:???0325nobodyさん
2008/04/11(金) 11:53:06ID:???それとも手動で?
0326nobodyさん
2008/04/14(月) 15:21:25ID:???↑の人と同じ悩みなんですが、jugem.jpのRSSをLWP::Simple::mirrorでミラーリングしようとすると、
RSSの内容ではなく、HTMLの内容が帰ってくるのは、どうしてですか?
RSSは以下のURLなのですが、引数を渡しているURLは、LWP::Simpleでは対応できないってでしょうか?
http://watalog.jugem.jp/?mode=rss
0327訂正
2008/04/14(月) 15:22:02ID:???↑の人と同じ悩みなんですが、jugem.jpのRSSをLWP::Simple::mirrorでミラーリングしようとすると、
RSSの内容ではなく、HTMLの内容が帰ってくるのは、どうしてですか?
RSSは以下のURLなのですが、引数を渡しているURLは、LWP::Simpleでは対応できないってことでしょうか?
http://watalog.jugem.jp/?mode=rss
0328nobodyさん
2008/04/14(月) 16:19:57ID:???UAで判定してる模様。
$ua = LWP::UserAgent->new(agent=>'IEみたいなUA');
でやってみ。
0329nobodyさん
2008/04/14(月) 16:25:16ID:???ありがとうございます。いやらしいことしますね…
LWP::Simple::mirrorを使っているので、全部書き直すか、例外処理を作るしかなさそうですねorz
0331nobodyさん
2008/04/14(月) 16:52:36ID:???オブジェクト指向的な話(->とか)が全くわからないので、そういうところを避けながらコーディングしてきたのですが厳しいですね。
0332327
2008/04/14(月) 19:32:33ID:???今後はSimpleではなくて、こっちを使おう…
0333nobodyさん
2008/04/14(月) 21:28:37ID:vhVZb6UQWeb上でいろいろサンプルコードを見ていたんですが、
使いたいモジュールがある場合は
CGI::Application::Plugin として利用するのがお決まりのように見えます。
実際、それが推奨スタイルなんでしょうか?
Log::Handler が使いたかったのですが、
単純に use Log::Handler; して使うと何か不都合があるのでしょうか?
0334nobodyさん
2008/04/15(火) 07:46:19ID:m7oSRbUq好きにしたらいいと思うよ
0335nobodyさん
2008/04/15(火) 11:53:04ID:7+9bkjp80336いしはら
2008/04/15(火) 18:41:44ID:y4DgL3Q4☆簡易CTIサービス(1万5千円)
http://s1s.jp/CTI/
☆自動クリックサービス
http://s1s.jp/
☆ブログ自動更新 記事投稿 コメント書き込みアプリ
http://s1s.jp/BLOG/
------------------------------------------------
ヽ('A`)ノ
( ) 大金星!!
ノω|
0337nobodyさん
2008/04/16(水) 14:37:06ID:???これらをperlかPHPで計算する方法が分かる方いましたらアドバイス頂けないでしょうか。
式は見ても理解できないのでサンプルソースを頂けると助かります。
0338nobodyさん
2008/04/16(水) 15:16:19ID:???0339nobodyさん
2008/04/16(水) 16:03:06ID:???0340nobodyさん
2008/04/16(水) 17:57:49ID:???サイコロ10000回投げて1が1666回出る確率とかだそうとする際に
数値が大きすぎるのかバグります…。
以前調べた時のソースも、数値が小さければ問題無いものの、
規模を大きくすると1.#INFというエラーが返ったり。
0341nobodyさん
2008/04/16(水) 21:19:23ID:WbXSl+I/与えられた文字列が大小文字同一視でハッシュのキーとして存在するかどうか、
調べる方法はないでしょうか。ハッシュキーは膨大な数あるので、配列にコピーとかは
したくないです。よろしくお願いし明日。
0342nobodyさん
2008/04/16(水) 21:28:03ID:???2 tieで1と同じ事を行う。
好きなほうをどうぞ。
0344nobodyさん
2008/04/16(水) 21:39:38ID:???実は、元の正しい表記を後で取り出したいんですが、
ハッシュのvalueは空いてるので、そこに元の表記を入れておいて
キーを大文字統一にしてみようと思います。
コピーするのと変わらないかもしれませんが。
0345nobodyさん
2008/04/17(木) 04:13:49ID:CjUpsUhEAll UTF-8 でやってます。
さらに USE CGI しないURLデコードをやってみたところ、マルチバイト文字が文字化けするようになりました。
全部□になります。
?#!c:/user/local/bin/perl510/bin/perl.exe
use utf8;
use encoding "utf8";
# ↓UTF8でPOSTされた情報を想定
my $str = '%E8%8C%B6%E6%B1%B2%E5%85%BC%E9%9B%91%E7%94%A8%E4%BF%82';
# ↓URLデコード(今回$strに+はないのでそのへんは省略)
$str =~ s/%([0-9A-Fa-f][0-9A-Fa-f])/pack("H2", $1)/eg;
# ↓出力
print "Content-type: text/html; charset=UTF-8\n\n";
print "テスト // START // $str<br>\n";
これでHTML全体としては正しく表示されているんですが、$str部分のみが文字化けします。
ウェブで原因を調べること丸1日、これについてどこにも情報がありませんでした……
0346nobodyさん
2008/04/17(木) 07:21:16ID:???use encoding "utf8";
# ↓UTF8でPOSTされた情報を想定(内部ではワイドキャラクタとして格納されてます)
my $str = '%E8%8C%B6%E6%B1%B2%E5%85%BC%E9%9B%91%E7%94%A8%E4%BF%82';
utf8::encode($str); # 一旦UTF-8フラグを落として
# ↓URLデコード(今回$strに+はないのでそのへんは省略)
$str =~ s/%([0-9A-Fa-f][0-9A-Fa-f])/pack("H2", $1)/eg;
utf8::decode($str); # UTF-8フラグを付け直す
0347nobodyさん
2008/04/17(木) 09:58:36ID:???> # ↓UTF8でPOSTされた情報を想定(内部ではワイドキャラクタとして格納されてます)
> my $str = '%E8%8C%B6%E6%B1%B2%E5%85%BC%E9%9B%91%E7%94%A8%E4%BF%82';
それデコードしたら、バイナリ(utf8フラグoff)のUTF-8文字列。
とりあえず、use utf8;とuse encoding "utf8"を外して、そのままprintしてみ。
ちゅうか、use utf8 とuse encoding "utf8"両方してる意味がわからん。
0348nobodyさん
2008/04/17(木) 14:34:42ID:FD3bsXbG解決しました。情報に感謝します。
>>346の内容を、Encode::〜でやりました。
こういうのって結構な落とし穴ですね。フラグのことはわかっているつもりでしたが……
0349nobodyさん
2008/04/17(木) 20:17:29ID:2zzFnXWLCGI::Applicationパッケージを使っているんだけど、
param() 関数で、数字だけの長い「文字列」を受け取ると
数値リテラルとして、しかも丸められた値が返されちゃうんだけど、
文字リテラルとしてそのまま受け取れるよい方法ないかな?
0350349
2008/04/17(木) 22:21:21ID:???CGI.pmにまでさかのぼって調べた結果、
query()->param()は文字リテラルで返してました。
自分が書いた、表示する際の処理のバグでした。orz
0351nobodyさん
2008/04/18(金) 00:03:02ID:qXgVgrBZ自分で作ったhash refの配列がデリファレンスできません。
$array[0]->{key}
$array[0]{key}
${$array[0]}->{key}
とか書いてみましたが様々なエラーが出ました。どう書いたらいいですか?
0352nobodyさん
2008/04/18(金) 00:07:12ID:???ソートをしようと思い、下記のように書いたらhash refを配列扱いするなと言われます。
my @sorted = sort {$array[$b]->{score} <=> $array[$a]->{score}} @array;
よろしくお願いします。
0353nobodyさん
2008/04/18(金) 00:20:08ID:???my @sorted = sort {$b->{score} <=> $a->{score}} @array;
0354nobodyさん
2008/04/18(金) 10:01:49ID:???0355nobodyさん
2008/04/18(金) 18:42:42ID:J/rLxrZJこれだけでも教えてくれると助かります…。
1.#INF の意味はなんですか?インフィニティ?
検索しても#は検索対象にならないらしく、
*.INFの設定ファイルや関係無いものが出て来るばかりで…。
0356nobodyさん
2008/04/18(金) 19:06:45ID:???0357nobodyさん
2008/04/19(土) 09:40:11ID:???それかインフォーラム
もしくはインフェルノ
0358nobodyさん
2008/04/19(土) 12:48:02ID:n4AN2xdTRNAというアンテナソフトを使っています。
すでに動作してるのですが、summary部分のhtmlタグを除去したいと思います。
http://www-kasm.nii.ac.jp/~i2k/tmp/rna/rss/recent_entry.html
のようにRSSを取得してくるCGIなのですが、
summary部分にhtmlタグが残ってしまいます。
ATOMやRSS2.0などでしょうか、
Yahoo!やexcite等RSSにhtmlタグが入ってるサイトを巡回すると
htmlタグが入ってしまいます。
template/recent_template には
<div class="summary">
<$RNAItemDescription$>
</div>
となっており、そのあたりを作ってると思われる
lib/RNA/AntennaTree.pmの1029行目、
my $encoded_descript = encode($item->{channel}->{description});
の後に
my $encoded_descript =~ s/<.*?>//g;
を追加してみたところ、サマリー部分がなくなってしまいました。
開発がストップしてるCGIなので、なんとか改造して使い続けたいと思っています。
どうかご教示願います。
0359nobodyさん
2008/04/20(日) 00:00:52ID:???>>355
備長炭 自殺方法 でぐぐれ。それでダメなら二項分布 オーバーフローとか。
0360nobodyさん
2008/04/20(日) 01:46:25ID:???現物ソース確認したわけじゃないけど
ttp://naoya.dyndns.org/~naoya/mt/archives/000611.html
の下の方にある remove_html を試してみたらどうかな。
0361nobodyさん
2008/04/20(日) 02:10:18ID:???そのモジュールについては詳しくはわからないけど、もともとのソースをいぢるんじゃなくて、
それが吐き出したものを、自前で書き換えればいいんじゃね?
0362nobodyさん
2008/04/20(日) 02:30:50ID:???> my $encoded_descript = encode($item->{channel}->{description});
> の後に
> my $encoded_descript =~ s/<.*?>//g;
> を追加
って書いてるんだから
my $str = "<strong>大切な</strong>文書";
my $str =~ s/(.)/$1/g; # 行頭の何かが余計
print length($str);
こういうことじゃないの。
0363nobodyさん
2008/04/20(日) 16:44:58ID:???$text =<<EOL;
name = $h->{'name'}
mail = $h->{'mail'}
EOL
とやっても変数が展開されません。
仕方ないのでハッシュにデリファンスしてますが、
方法があったら教えてください。
0364nobodyさん
2008/04/20(日) 17:36:03ID:???0365nobodyさん
2008/04/20(日) 20:52:48ID:tHisgd6UOUTをカウントするためなんすけど、アンカーから自前のCGIページを通過させてリンク先を表示させるにはどうすればいいですか?
0366nobodyさん
2008/04/21(月) 00:00:18ID:???■ このスレッドは過去ログ倉庫に格納されています