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/
0222nobodyさん
2008/03/26(水) 01:00:59ID:???0223nobodyさん
2008/03/26(水) 01:01:47ID:???質問が漠然とし過ぎてるんで、この辺一通り読んでから来て。
http://www.kt.rim.or.jp/~kbk/perl-5.8/perlfaq4.html
http://perldoc.jp/docs/perl/5.8.8/perldsc.pod
0225nobodyさん
2008/03/26(水) 09:29:51ID:LilkylgSそこで終わりにしたい場合はどうしたらいいでしょうか?
どうも全部読むか、失敗かの選択しかないみたいなんですが。。
0226nobodyさん
2008/03/26(水) 14:32:04ID:???一旦保存してから読み直せば?
0227nobodyさん
2008/03/26(水) 14:47:06ID:???httpd が受け取る/受け取らないという話でなく、
プログラム中の処理の流れでという意味なら
http://perldoc.jp/docs/modules/CGI.pm-2.89/CGI.pod
の「ファイル・アップロード・フィールドの作成」の項
0228nobodyさん
2008/03/26(水) 22:35:17ID:OE9DSfjk定数なんかを別ファイルに置いてそこから取得したい。
---const.pl---
my $x="あいうえお";
1;
---main.cgi---(ヘッダとかは略)
use strict;
require "./const.pl";
print $x;
とするとGlobal symbol "$x" requires explicit package nameという
$xが定義されていませんエラーになります。
use strict外すと$xは空白です。
http://q.hatena.ne.jp/1190815879
とかを見るとどう見てもこれで正しいようにしか思えないのですが何故?
他にこんなところで迷ってる人居ないから環境の問題なんだろうか?
CoLinux,perl5.8.6
0229nobodyさん
2008/03/26(水) 22:45:43ID:???0230nobodyさん
2008/03/26(水) 22:57:38ID:???<q cite="http://perldoc.jp/docs/perl/5.10.0/perlfunc.pod#item_my_EXPR_my">
my はリストアップされた変数を、囲っているブロック、ファイル、eval の中で
ローカルな (レキシカルな) ものにします。
</q>
http://www.kt.rim.or.jp/%7Ekbk/perl5.005/perlmod.html#Perl_Modules
0231nobodyさん
2008/03/26(水) 23:12:52ID:???変数の局所化とか strict とは無縁になるけど。
はてなでやり取りしてる人らはそうしてるんじゃないかな。
0232nobodyさん
2008/03/27(木) 01:07:20ID:???0233nobodyさん
2008/03/27(木) 01:23:34ID:R/qLdwoIhoge.pm
package hoge;
sub kaze_hiita{
"hayaku neru"
}
our $x = 1;
1;
foo.pl
use hoge;
print hoge::kaze_hiita; -> 早く寝る
print $hoge::x; -> 1
$hoge::x = 10;
print $hoge::x; -> 10
関数のときのみ::じゃなくて->が使えるんだぜ。
あと関数の尻尾には();って書いてあると俺はうれしい。
ハッシュで渡すとさらにうれしい。
あと、そゆのがコンフィグを一杯つかうなら
普通に Auto-Config使うべし。
http://memo.majide.com/index.php?%A1%DAPerl%A1%DBConfig-Auto%A4%CB%A4%E8%A4%EB%C0%DF%C4%EA%A5%D5%A5%A1%A5%A4%A5%EB%A4%CE%C6%C9%A4%DF%B9%FE%A4%DF
当然だがファイル間は文字コードは統一しとけよ
それでしんだひとをみたことがあります。>俺自身
0235nobodyさん
2008/03/27(木) 12:35:04ID:???234が責任を持って書き換えます。おながい。
0236nobodyさん
2008/03/27(木) 12:36:10ID:???こうするのさ。
---const.pl---
$x="あいうえお";
1;
---main.cgi---
use strict;
our $x;
require "./const.pl";
print $x;
0237nobodyさん
2008/03/27(木) 16:59:46ID:???0238nobodyさん
2008/03/27(木) 19:04:51ID:???0239nobodyさん
2008/03/27(木) 22:17:48ID:???0240228
2008/03/27(木) 23:49:16ID:OO8NUyXNさっぱりわからんがサンクス。調べてみる
iniファイルやPHPみたいに簡単に取得できる方法はないのかのう・・・
0241nobodyさん
2008/03/27(木) 23:56:27ID:???だからモジュール紹介されてるやんけwww
0242nobodyさん
2008/03/28(金) 00:17:56ID:???0243233
2008/03/28(金) 00:26:56ID:???感想でいいからくれ
何がさっぱりわからんと思ったか書いてくれれば分かりやすくもういっかい書くよ。
1. リンクを開いたと思うんだが、何が意味不明だと思った(全部ってのはなしで)
2. 何を作っててプログラム暦何年か教えてくれ。
スレ汚しならすまん。ちょっと個人的に技法よりも心理障壁に興味がある。
0244nobodyさん
2008/03/28(金) 10:02:51ID:???0245nobodyさん
2008/03/28(金) 15:01:30ID:jpsDmJfA2008/03/28(金) 09:30:08
↓
08/3/28 9:30
0246nobodyさん
2008/03/28(金) 15:33:52ID:???sub reduce_date {
my @date = split /\D+/, $_[0];
$date[0] -= 2000;
sprintf '%02d/%d/%d %d:%d', @date[0..4];
}
print reduce_date('2008/03/28(金) 09:30:08');
0247nobodyさん
2008/03/28(金) 15:36:13ID:???my $orgdate = '2008/03/28(金) 09:30:08';
my @splitdata = $orgdate =~ /(\d{2})+/g;
printf("%02d/%02d/%02d %02d:%02d:%02d", @splitdata);
0248nobodyさん
2008/03/28(金) 15:46:09ID:???0249nobodyさん
2008/03/28(金) 15:48:45ID:???0250nobodyさん
2008/03/28(金) 15:57:20ID:???s{\d\d(\d\d)/0?(\d+)/0?(\d+)[^ ]+ 0?(\d+):(\d+):\d+}{$1/$2/$3 $4:$5};
0251nobodyさん
2008/03/28(金) 16:45:45ID:???my $datetime = sprintf("%02d/%d/%d %d:%d:%d", @splitdata);
0252nobodyさん
2008/03/28(金) 16:49:23ID:???my @splitdata = $orgdate =~ /(\d{1,2})+/g;
my $datetime = sprintf("%02d/%d/%d %d:%d", @splitdata);
print $datetime;
0253nobodyさん
2008/03/28(金) 16:59:35ID:???0255nobodyさん
2008/03/28(金) 19:09:17ID:???例えばjavascriptで
var c=1;alert(c=c+(c*=10)+(c*=100));
は1011
Perlで
my $c=1;print($c=$c+($c*=10)+($c*=100));
は1020
になります。
そこで、この問題について載っているサイトがあれば教えてください。
0256nobodyさん
2008/03/28(金) 20:04:35ID:???0257nobodyさん
2008/03/28(金) 23:58:05ID:???> var c=1;alert(c=c+(c*=10)+(c*=100));
こう書くのはクズグラマー。
0258nobodyさん
2008/03/29(土) 03:54:49ID:???http://www.st.rim.or.jp/~phinloda/cqa/cqa7.html
0263nobodyさん
2008/03/29(土) 17:56:41ID:???0265259
2008/03/30(日) 22:02:27ID:???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
■ このスレッドは過去ログ倉庫に格納されています