Perl 初心者コーナー Part24
レス数が900を超えています。1000を超えると表示できなくなるよ。
0001 ◆fBgbHI04bQ
03/06/07 22:30ID:GbQKLcPE【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
1:自分はこう言う事がしたい。
2:それでこんな風にやってみたが・・・
3:それだとこんなエラーが出て上手く行かなかった。
最低でも1と3が無いと誰も答えられないよ。
良い回答は良い質問から。一緒に勉強しましょう。
CGIだけど、なんか質問ある? Part 10
http://pc2.2ch.net/test/read.cgi/php/1048686475/
【Perl,CGI】参考書籍 第三版
http://pc2.2ch.net/test/read.cgi/php/1030209573/
CGIに依存しないPerlの話題一般/Part2
http://pc2.2ch.net/test/read.cgi/php/1030548610/
スクリプトの改造依頼は、【 スクリプト改造工房 PART 6 】
http://pc2.2ch.net/test/read.cgi/php/1047806915/
過去ログやお勧めサイトは >>2-10
0824nobodyさん
03/06/24 10:41ID:???クラス名・変数名に迷ったら書き込むスレ
http://pc2.2ch.net/test/read.cgi/tech/1046541730/
こんなスレもあるでよ
0825818
03/06/24 10:44ID:4jjnB7QK初耳です。
こっち行きます。
0827nobodyさん
03/06/24 11:05ID:???ネーミングで困ることは少ないな
大抵そういう、どうでもいい変数で困る事が多いし
0828nobodyさん
03/06/24 11:11ID:2JWEavap分からないなら、しゃべんなって。
な。
0829nobodyさん
03/06/24 11:19ID:???お前はあの文章がわかんのか、とか思ったら本人だったので鬱
0830nobodyさん
03/06/24 11:23ID:???0832nobodyさん
03/06/24 12:32ID:???0833nobodyさん
03/06/24 13:40ID:???0834nobodyさん
03/06/24 13:59ID:???0835nobodyさん
03/06/24 14:10ID:RsywTEy7つまり値を参照するときはフィールド番号(って言うんですか?)で指定しなければいけません。
$record[2]みたく。
できれば、フィールド名で参照したいんですけど、それって無理なんですか?
連想配列みたいになれば言うことないんですが。
$record{'DATE'}って感じに参照したいんですけど、DBIだけでは無理?
どの解説サイトみても、「配列でかえります」までしか説明されてませんでした。
0836nobodyさん
03/06/24 14:29ID:???表示する時2ちゃんねるみたいに
1&750-800みたいに途中を飛ばして表示するとして
ログがレス順1から順に並んで保存されてるとすると
2-749まで空読みして飛ばしますよね?
これって無駄に思えますが何か良い方法ありませんか?
レスを逆順に800,799・・・保存する方法も考えましたけど
これだと表示時に表示するレスの分だけメモリ消費して
こちらも無駄かなと思ってしまうんですが。
全レス表示したら全レス分配列必要だし。
前者だとレスが多いスレだとCPU負荷がかかるし
後者だとメモリを多く消費してしまうし、何か他の選択が
ないでしょうか?
0838nobodyさん
03/06/24 14:38ID:???1レス1ファイル形式(w
0839nobodyさん
03/06/24 14:48ID:???http://member.nifty.ne.jp/hippo2000/perltips/dbimemo.htm
よく読んで毛
0840nobodyさん
03/06/24 15:07ID:py7llED6http://endou.kir.jp/yuminet/link.html
0841nobodyさん
03/06/24 15:10ID:???1000回の空読み <<<<< ファイルのopen
というか、
1000回の空読み <∞< perlのオーバーヘッド
何をするにもCPU負荷はかかるけど、
定量的に考えないと。
あと、これはバリ私見&経験則だけど、
最近のマシンは一般的なwebサーバー用途で考えると、
バランス的にCPUだけの性能が突出してます。
仮に、1Gメモリー積んでCPUがPIII 1Gぐらいのとき、
先ず、CPUが足りなくなる前にメモリーが足りなくなります。
(これは、webサーバーやRDBMSがメモリー食いすぎというのも理由だが)
なので、CPUとメモリーはトレードオフの関係にあるときは、
メモリー優先で基本的にはOK。
0843nobodyさん
03/06/24 19:55ID:???0845nobodyさん
03/06/25 00:40ID:???0847nobodyさん
03/06/25 01:18ID:Ai+C7V0g<HTML>
<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=EUC-JP">
<TITLE></TITLE>
</HEAD>
<BODY>
<FORM action="test.cgi" method="POST">
%%errmsg%%
E-mailアドレスを入力して下さい。<BR>
<INPUT size="30" ="text" name="email" value="%%email%%"><BR>
確認のため、再度入力してください。<BR>
<INPUT size="30" type="text" name="confirm" value="%%confirm%%"><BR>
<BR>
<INPUT type="submit" value="送信"></FORM>
</BODY>
</HTML>
これを変数化したものを
$html =~ s/\%\%.+?\%\%//gs;
このように「%%〜%%」を全て取り除くはずなのですが、
なぜか$html =~ s/\%\%.+?\%\%//gsi;
でないといきませんでした。%%%%に大文字も小文字も無いとは思いますが、、、
どうしても腑に落ちないため、質問させていただきました。
宜しければどうかご教授ください。宜しくお願いいたします。
0850nobodyさん
03/06/25 06:35ID:???$html =~ s/%%.+?%%//g;
で、動かないかい?
それはさておき、%%strings%%で書き換えるHTMLテンプレートをよく見かけるけれども、
鬱陶しくなぁい?
%sにしてsprintfで一気に書き換える方が楽そうに思えるけれども。
それはさておき、正しいHTMLを描きましょう。
0851nobodyさん
03/06/25 11:07ID:???必ず</p>で閉じましょう
0853nobodyさん
03/06/25 16:44ID:???</p>は省略可能だけど、それを意識して省略しましょうね。ということでよろ。
>>852
そだよ。そんなに頻繁にテンプレを変えるのは少々難ありだと思うけれども。
0854nobodyさん
03/06/25 17:48ID:???テンプレは変わるだろ。システム変わらずともデザインが変わることは多々ある。
あとDOCTYPEの指定がないのに省略可能と言い切るのはすごいな。
0855nobodyさん
03/06/25 18:36ID:???のですが、これは文字コート゛の問題なのですか?
普通はどう解決しますか?
0858nobodyさん
03/06/25 19:49ID:???これで表示される。Shift-JIS だと「表」のコードが \x95\x5c となる。
\x5c(\) が perl だと特別に解釈される文字なのでおかしくなる
0859855
03/06/25 20:04ID:???0860nobodyさん
03/06/25 20:18ID:???↓
明らかに突飛な解決策が提示される
↓
「調べろ」とアドバイス
↓
同情した奴がマジレス
↓
自己解決
まったく噛み合ってないな(w
0861ayaya
03/06/25 20:35ID:???アドレスです!http://www.loveshelter.tv/まで!沢山きてね(^o^)丿
待ってまーす
0862nobodyさん
03/06/25 20:49ID:+p8CFadctest::func();
この呼び方で、どちらでも動くようにfunc()をコーティングしたいんだけど、
いい方法知らないすか?
0863nobodyさん
03/06/25 21:02ID:UMoE3ZS2JavaScriptのescapeのように、あいうえお<->%u3042%u3044%u3046%u3048%u304A
といった感じで変換したいのです。
$value =~ s/(\W)/'%' . unpack 'H2' , $1/eg;
とやっただけではムリでした。
どのようすればいいのでしょうか?
0864nobodyさん
03/06/25 21:12ID:???取得する時間って24*60*60しないとちゃんと取得できないの?
0866nobodyさん
03/06/25 21:40ID:???1.与えられた引数とは全く関係なしに、決まった結果を返す。
2.与えられた第一引数を調べ、それがオブジェクトかそうでないかを判断する。
ref $_[0] でなんとかなるだろ。
0867nobodyさん
03/06/25 21:42ID:???本読め。
-M で取得できるのは、最終更新日からの日数だと明記してある。
秒に変換したいなら、*24*60*60しないとどうしようもないわな。諦めろ。
0869nobodyさん
03/06/25 23:52ID:???今一つ爽快感に欠けるのは、-Mについて聞くのが
どのくらい愚かなのか実感が無いからだな
0872864
03/06/26 04:34ID:???bakabakabakabakabakabakabakabakabakabaka
bakabakabakabakabakabakabakabakabakabaka
bakabakabakabakabakabakabakabakabakabaka
bakabakabakabakabakabakabakabakabakabaka
bakabakabakabakabakabakabakabakabakabaka
bakabakabakabakabakabakabakabakabakabaka
bakabakabakabakabakabakabakabakabakabaka
bakabakabakabakabakabakabakabakabakabaka
bakabakabakabakabakabakabakabakabakabaka
0873nobodyさん
03/06/26 04:35ID:bmlG3tt5文字が文字化けの原因となってしまいます。
具体的には、「当代島」と打つと、「套島」、「当島」と打つと
「島」となってしまいます。
入力フォームも間違えなくEUCなのですが、不明です。
どうかご教授いただけますでしょうか。
0874nobodyさん
03/06/26 05:46ID:???0876nobodyさん
03/06/26 09:31ID:???0877nobodyさん
03/06/26 11:55ID:UmMKROoY0878nobodyさん
03/06/26 12:17ID:???当代島 - C5F6 C2E5 C5E7
套島 - C5 E5 C5E7
当島 - C5F6 C5E7
島 - C5 E7
なんか2バイト目と3バイト目が欠けてる気が。
0879nobodyさん
03/06/26 12:46ID:???0881nobodyさん
03/06/26 15:21ID:lH1PokLv受信に添付されたファイルを使えばいいので何となくわかるのですが、
i - shot の場合、メール内のアドレスを解析してそのサイトから
画像を取ってくるようなプログラムはどのようになるのでしょうか?
0883873
03/06/26 16:07ID:???ソースを載せますと
my (%form, $buffer, @pairs);
if ($ENV{'REQUEST_METHOD'} =~ /^post$/i){ read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); }
else{ $buffer = $ENV{'QUERY_STRING'}; }
@pairs = split(/&/,$buffer);
foreach (@pairs){
my ($key,$value) = split(/=/,$_);
$value =~ tr/+/ /;
$key =~ s/%([A-Fa-f0-9][A-Fa-f0-9])/pack("C", hex($1))/eg;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$form{$key} = jcode::convert(\$value,'euc', 'euc','z');
}
このようにformで受け取ったものを%formに入れているのですが、
ここで問題の「当代島」の入っている$form{address}を表示させる
と例の文字化けが発生してしまいました。
スクリプト内で「当」がきたらエスケープする処理をしてもよいの
ですが、もう少し効率的な方法を考えたいと思います。
こんな駄目質問にも応えていただいた皆様には本当に感謝しており
ます。
0884_
03/06/26 16:23ID:???0885nobodyさん
03/06/26 16:33ID:???jcode:converが怪しい
0886nobodyさん
03/06/26 16:41ID:???>jcode::convert(\$value,'euc', 'euc','z');
3つ目にeucを指定してEUCtoEUCじゃ、実際に変換が行われるのは
zオプションの半角カナ→全角カナ変換だけだろ
jcode::convert(\$value,'euc', '','z'); じゃないのか?
0887nobodyさん
03/06/26 16:43ID:???なんか理由あるのかね?
0889nobodyさん
03/06/26 17:12ID:???0890nobodyさん
03/06/26 17:23ID:???多分 kent-web とかの配布スクリプトが hex 使ってるから
>889
同じ
速度が違う
0891nobodyさん
03/06/26 17:37ID:???申し訳ありませんがご助言をお願いできませんでしょうか。
1: Perlスクリプトで色んなサイトのhtmlソースを一気に取得してきたい。
2: それでこんな風にやってみました。
※メインのスクリプトにて
foreach(@url_list){ # @url_listに各サイトのurlが入っている。
@source = &get($_);
(いろいろな処理)
}
※サブルーチン(別ファイル)にて
sub get{
(socketを使ってソースを取得し、@backに格納)
return(@back);
}
3: うまくいかないサイトがちらほらあります。
<付加的情報>
・問題なく取得できるサイトも多くある。
・Hostヘッダは送っている(=バーチャルホストが原因ではない?)。
・うまくいかないサイトでも、サブルーチン内ではそのソースをprintできる。
(=実は取得できている?)
<自分の考え>
・特定のサイトの時だけ、メインのスクリプトに@backが帰って来ない?
・特定のサイトの時だけ、そもそもサブルーチン内で配列に格納されていない?
0892891
03/06/26 17:38ID:???足りない情報などあったらすべてお答えしますので、
何とぞよろしくおながいします。<(_ _)>
0894nobodyさん
03/06/26 17:54ID:???HTMLの文字コードがEUCだからって、EUCが送られてくるとは
限らないよ。たまたまIEなんかはそういう実装になってるだけで。
あと、単にブラウザが文字コードを判定ミスしてるってことはない?
Content-Type行を、
print "Content-Type: text/html; charset=EUC-JP\r\n\r\n";
みたいにしてみ。
0895nobodyさん
03/06/26 18:09ID:???0897nobodyさん
03/06/26 18:26ID:???0898891
03/06/26 18:29ID:???ありがとうございます。しかし申し訳ありません。原因は凡ミスでした・・・。
891の「(いろいろな処理)」のほうがマズかったようです。
質問する前にもっとしつこく調べてみるべきでした。本当にすみません。
0899nobodyさん
03/06/26 18:52ID:???おいおい、解決したから満足ですさようならーってのはナシでしょ。
善意とは言え、他人の手を煩わせたんだから、
その凡ミスを晒して他の初心者に貢献するのが
ギブアンドテイクっていうもんじゃないか?
0902nobodyさん
03/06/26 20:03ID:???とか。
0905nobodyさん
03/06/26 20:36ID:fBG4qVY6サーバーの負荷はファイルの読み書き何byteに対してフォームデータ送信何byteと同じぐらいでしょうか?
0908nobodyさん
03/06/26 21:12ID:8elJoZcAホスト12-231-187-185.client.attbi.com
名前:
E-mail:
内容:
こちらでリロードしてください。 GO!
分からないことがあったら2ちゃんねるガイドへ。。。
プロキシー制限は、2ちゃんねるビューアを使うと回避できることがあります。
ワラタ
0910nobodyさん
03/06/26 22:00ID:0WiiLc+a横に連結した1つの jpeg 画像ファイルを出力するプログラムを書け。
また、指定した位置に連結できるようにもせよ。
どなたか作っていただけませんか?
0911nobodyさん
03/06/26 22:07ID:XYA3PmxJ0912nobodyさん
03/06/26 22:07ID:8elJoZcA偉そうにマルチポストか。死ね。
0914nobodyさん
03/06/26 22:31ID:???まじれすすると、モジュール要るし、
貴方にはソレを入れるとか、もしくはソレを使えるサーバーも用意できないと思われる。
もうちっと勉強してきなさい。
0915nobodyさん
03/06/26 22:33ID:8elJoZcA>まじれすすると、モジュール要るし、
自分の低レベルをカミングアウトせんでも・・・。
学生のうちに離散コサイン変換位覚えとけ。
0916nobodyさん
03/06/26 22:54ID:???>>914じゃないけど、俺も面倒だからモジュール使うかなあ。必須だとは思わんけど。
> 学生のうちに離散コサイン変換位覚えとけ。
プログラマで10年飯を食ってるけど、文系なのでそういうの苦手。
0918891
03/06/26 23:08ID:???本当にバカですみません。どういう凡ミスかを簡単に申しますと、
htmlソースの<body>から</bocy>までの間だけ切り取ろうとしていた部分で
$_ =~ /^<body/i → $_ =~ /<body/i のように直したという感じの話です。
ちなみに実は他にも問題山積みであまり解決していないので
>解決したから満足ですさようならー
という状況でもなかったりするのですが。
0921nobodyさん
03/06/26 23:29ID:???0923nobodyさん
03/06/26 23:33ID:???レス数が900を超えています。1000を超えると表示できなくなるよ。