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

Perl コーディング初心者質問コーナー Part34

■ このスレッドは過去ログ倉庫に格納されています
0001前スレの連投で気分崩したので後よろ04/04/05 16:01ID:???
いらっしゃーい、Perlのコーディングで困ってる人のスレです。

【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
「コマンドの意味がわかんない」とかはマニュアル見ましょう。
回答者さんは何でも屋じゃありません。

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

最低でも1と3が無いと誰も答えられないよ。
ソース貼る時は、全角スペースでインデント忘れずに。
良い回答は良い質問から。一緒に勉強しましょう。

過去ログやお勧めサイトは >>2-10
0381nobodyさん04/04/25 14:33ID:???
>378
相互 use、自己 use とも無限ループにはならない。
ttp://www.perldoc.com/perl5.8.0/pod/func/use.html
ttp://www.perldoc.com/perl5.8.0/pod/func/require.html
ただし、自己 use することに何の意味もない。
さらに、相互 use することにも意味がない。
>378 の例だと CGI の中の use MOD_B; と、MOD_B.pm の中の use MOD_A; は
あってもなくても変わらない。
とりあえず、相互に use するような設計がおかしいので考え直せ。
0382nobodyさん04/04/25 21:00ID:???
cgiにjava scriptを組み込もうとしているのですが、500エラーがでます。

HTMLでの " は \" になることは知っているので、そうしたのですが、
 ! や ? の記号の前にも \ が必要なのですか?それとも他の記号なのでしょうか?
0383nobodyさん04/04/25 21:06ID:???
まずはソースを出せ。
話はそれからだ。
0384nobodyさん04/04/25 22:15ID:???
>>382
cgiで文字列の出力をしようとしているのですが、500エラーがでます。

" は \" になることは知っているので、そうしたのですが、
 ! や ? の記号の前にも \ が必要なのですか?それとも他の記号なのでしょうか?
0385nobodyさん04/04/25 22:15ID:???
>>382
500エラーなんてものでデバッグしてることからして論外。
まずはちゃんとした環境を用意してから出直してきてください。
0386nobodyさん04/04/26 16:42ID:NLGfQi9F
/private
ディレクトリに、Basic認証もしくはDigest認証をかけて
/private/secure.cgi
へアクセスをした場合に、ユーザ名・パスワードを引数として
渡すには、どうやったら良いのでしょうか?

どなたかご教授、お願い致します。
0387nobodyさん04/04/26 17:04ID:???
ユーザ名は環境変数 REMOTE_USER で引き渡されます。

パスワードを CGI に引き渡すのは
少なくとも現行の CGI というインタフェースを使う限りでは
原理的に不可能です。
これは Perl コーディング上の制限ではなく
CGI というインタフェース仕様上の制限です。

CGI 以外の方法なら、
例えば mod_perl を使って PerlAuthenHandler を組むやり方であれば
Apache Request オブジェクトの get_basic_auth_pw() メソッドを使って
パスワードを取得することができます。
038838604/04/26 17:18ID:NLGfQi9F
>>387
レスありがとうございます。

REMOTE_USERでのユーザ名引き渡し、確認できました。
パスワードはやはり無理ですか...
ユーザ名だけを利用して(重要な部分へは再認証という形で)
対応していきます。
0389nobodyさん04/04/26 17:45ID:8MkOGNrL
DBD::Pgを使ってDB接続を試みているのですが、
エラー処理ができなくて困っております。

例えば、
my $dbh = DBI->connect("dbi:Pg:dbname=$dbname;port=$port", $user, $password, {RaiseError => 1, AutoCommit => 0}) || print "error";
これで$dbnameが存在していないものを指定すると、printにいってくれず、
Internal Server Errorが出てしまいます。↓error_log
DBI connect('dbname=--;port=--','',...) failed: FATAL: database "--" does not exist at --.cgi line --

ご教授いただけませんでしょうか。
宜しくお願いします。
0390nobodyさん04/04/26 18:09ID:???
>>389
dieしてるのでevalで捕まえられると思うよ。
0391nobodyさん04/04/26 18:11ID:???
>>388
横槍入れるようだが、同じパスワードで何回認証しても意味ないと思うんだが。
ユーザー名は追跡の為に追うこともあるだろうけど。
0392nobodyさん04/04/26 18:24ID:???
>>386
ユーザ名とパスはリクエストヘッダAuthorizationで渡されるから拾えばいい。
例えば.htaccessで
RewriteEngine on
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule test.cgi test.cgi$1 [e=HTTP_CGI_AUTHORIZATION:%1]

($scheme, $data) = split (' ', $ENV{'HTTP_CGI_AUTHORIZATION'});
if ($scheme eq 'Basic') {
 $data = &decode_base64 ($data);
 ($ENV{'REMOTE_USER'}, $ENV{'REMOTE_PASSWORD'}) = split(':', $data);
}
sub decode_base64 {
 my ($str) = "@_";
 my ($res, $len) = "";
 local($^W) = 0;
 $str =~ tr|A-Za-z0-9+=/||cd;
 if length($str) % 4;
 $str =~ s/=+$//;
 $str =~ tr|A-Za-z0-9+/| -_|;
 while ($str =~ /(.{1,60})/gs) {
  $len = chr(32 + length($1)*3/4);
  $res .= unpack("u", $len . $1 );
 }
 return ($res);
}
print "Content-type: text/html", "\n\n";
print "$ENV{'HTTP_CGI_AUTHORIZATION'}<br>\n";
print "$ENV{'REMOTE_USER'}<br>\n";
print "$ENV{'REMOTE_PASSWORD'}<br>\n";
0393nobodyさん04/04/26 18:28ID:???
>>389
RaiseError => 1 を設定するのを止める。つーかコピペプログラマは氏ね
0394nobodyさん04/04/26 18:39ID:???
>>392
ちょっと間違った
RewriteEngine on
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule test.cgi test.cgi [e=HTTP_CGI_AUTHORIZATION:%1]

sub decode_base64 {
 my ($str) = "@_";
 my ($res, $len) = "";
 local($^W) = 0;

 $str =~ tr|A-Za-z0-9+=/||cd;
 $str =~ s/=+$//;
 $str =~ tr|A-Za-z0-9+/| -_|;
 while ($str =~ /(.{1,60})/gs) {
  $len = chr(32 + length($1)*3/4);
  $res .= unpack("u", $len . $1 );
 }
 return ($res);
}
039538604/04/26 20:29ID:???
>>394
そういう方法もあるんですね。
とても参考になりました。
ありがとうございます。
0396nobodyさん04/04/26 21:22ID:BWwI4BSi
このスレでPerlで作ったCGIの質問してもいいのかな…

cgiでcss文書を吐き出したいんですが、Content-type:text/cssと最初につけておけばよいのでしょうか?
infoseek iswebでこれをやると広告がついてきてcssとして使えなくなるんですが、普通にうpしたcssファイルはhttpでgetできます。
この差はCGI作り手側のミス?それとも拡張子cgi=広告付加とかCGI作り手側じゃどうしようもないものですか?
0397nobodyさん04/04/26 21:28ID:???
鯖の仕様なんてそれぞれ。鯖缶に問い合わせろ。
0398nobodyさん04/04/26 22:16ID:???
>>396
スレ違い。
Perl以外で作っても成立する質問でしょ。
0399nobodyさん04/04/26 23:30ID:???
>396-397
そうでしたか…失礼。
0400nobodyさん04/04/27 17:46ID:m4JuDEBr
perl cgiで開きポートをチェックする方法ってありますか?
0401nobodyさん04/04/27 17:51ID:???
基本的に総当りで調べるしかないな
0402nobodyさん04/04/27 17:56ID:m4JuDEBr
掲示板で80と8080くらいわかればいいんですけど…
できるだけ早く処理できる方法があったらお願いします。
0403nobodyさん04/04/27 18:04ID:???
reject が帰ってくれば早いが、timeout を待つことになると時間がかかるな。
できるだけ待ち時間を短くするための工夫としては、
ソケットを non-blocking で開いて並列で処理する、ぐらいか。
0404nobodyさん04/04/27 20:01ID:D2O5MFhm
サブディレクトリにあるhtml文書を読み込んで表示するプログラムは、下ではダメなのでしょうか。

print "content-type: text/html\n\n";
open(TEST, "sub/test.htm");
while (<TEST>) {
print $_ ;
}
close(TEST);
exit;

ローカルではうまくいくのですが、サーバーに上げて実行してみると上手くいきません。
0405nobodyさん04/04/27 20:12ID:???
>>404
どう上手くいかないのか書け
0406nobodyさん04/04/27 20:14ID:???
エラーをトラップして調べる癖をつけないといつまでも聞くことになるぞ。
それに「うまくいかない」で読んでるやつがどうなったかわかると思うか?
0407nobodyさん04/04/27 22:30ID:???
掲示板のログが飛ぶ事が多いので
先頭にtime値を書き込んで、新しい方を読み,古い方に書く
2重ファイル方式を取入れたのですが、ログが消えた時はそのままでした。
flock考やperlメモのやり方でもたまに飛ぶので(ローカルでは書き込みプログラムを何個走らせても飛ばないんですが…)
バックアップ的にこのやり方を導入したいんですが、アドバイス願えないでしょうか?
0408nobodyさん04/04/27 22:36ID:???
ローカルテストは本当にしたか?
並列で処理しないとロックの検証にはならないよ。
でなきゃ鯖の問題だな。
0409nobodyさん04/04/27 22:55ID:???
どうせ、なんちゃってロックだろ。笑ってやるからロックのところ貼り付けてみろ。
0410nobodyさん04/04/27 23:00ID:???
time値の新しい方と古い方って、アクセス集中すると
同じ値になるだろ
0411nobodyさん04/04/27 23:01ID:???
秒単位だからね
041240404/04/28 00:18ID:2okML1Hb
>>404はPerlのパス名のタイポでした。お騒がせしました。ごめんなさい。
ですがまた問題が発生しました。
sub/test.htmから<n月>という文字列がある行をマッチさせたいのですが、下のようにすると
ローカルではマッチするんですが、サーバーに上げるとマッチせず。。。

print "content-type: text/html\n\n<html>";
open(TEST, "sub/test.htm");
while (<TEST>) {
if ($_ =~ /<.*?月>/) {print $_;}
}
close(TEST);
print "</html>";
exit;

4行目を
if ($_ =~ /<(.*?)月>/) {print $_;}
に書き換えるとローカルでもサーバーでもマッチします。なぜでしょうか。
0413nobodyさん04/04/28 00:46ID:???
>>412
そりゃ初耳だ。
こんな世知辛い世の中に笑いをありがとう。
和んだよ。
0414nobodyさん04/04/28 00:54ID:???
>>413
答えられないなら黙ってろ。
0415nobodyさん04/04/28 01:00ID:???
>>414
何だ釣りだったのか?
釣りを楽しむ余裕が

今はある!!!

誘導くらいしてあげるよ
http://pc5.2ch.net/test/read.cgi/php/1069245758/l50
0416nobodyさん04/04/28 01:05ID:???
>>414
君は404かい?
それなら俺も大笑いしてあげる
041740404/04/28 01:33ID:???
>>414は私ではありません。とにかく、誘導ありがとうございます。
むこうの過去ログを見てみて、それでもわからなかったら質問しようと思います。
0418nobodyさん04/04/28 01:59ID:???
スルーされるんじゃないかと心配しておりました。
回答ありがとうございました。

>>408
5台くらいで鯖マシンに(perlの)duke撃ちまくってテストしました。

>>409
現在携帯からなので無理ですが
perlメモのロックの部分とflock考えの奴をそれぞれやりました。

>>410
そうでした…
ただifの条件に合わないと、elseで指定されている方を読み込みますし大丈夫なのでは?



サイトの方は日に200くらいの書き込みで、そんなに多くは無いんですが、
2,3ヵ月に1回は飛んでしまいます。
逆にtopのカウンタは2重ファイルってだけで
ロックは使って
0419nobodyさん04/04/28 02:10ID:???
>>418
そのぐらいのアクセスでログが飛ぶなんて不思議。
コードそのものに問題があるような気がするが。
0420nobodyさん04/04/28 06:01ID:???
ロックはしっかりしてても、サーバ自体がファイルオープンしたまま
落ちたりしたらログ飛ぶわなあ。
0421nobodyさん04/04/28 07:36ID:???
>>419-420
そういう可能性もあるんですね。
読み書き両用でopenして…と思いましたが、どっちみちサイズを0にした時点で落ちたら意味無いですよね…

ツリー型なので700件残るようにしてますが、少し多いづしょうか?サイズは130KBくらいです。
0422nobodyさん04/04/28 09:58ID:???
>>421
だったらhoge.newに新しい内容作ってからrenameするとか
やり方はいろいろありそうなものだが。
0423nobodyさん04/04/28 13:45ID:???
>>422
なるほど…
こっちの方が楽ですね。その方法でやってみます。
0424nobodyさん04/04/28 16:05ID:S7OIBKMs
#!/usr/bin/perl

`halt`;
----------------------------------------------
以上のスクリプト実行しても鯖ダウン出来ませんでした。

どうやったら鯖ダウンできますか?
0425nobodyさん04/04/28 17:32ID:???
rootがいるじゃろ?
0426nobodyさん04/04/29 00:19ID:DqcSI5IG
質問ですm(__)m
index.htmlがあるとしてこの中の一部にxxx.cgiを表示したいのですが
どぅやったら表示出来るのでしょう?
表の中に表示させたいのですがインラインフレームしかありませんか?
0427nobodyさん04/04/29 00:27ID:???
Perlとどこに関係がありますか?
板違いです。
0428nobodyさん04/04/29 00:42ID:???
>>426
それはSSI。
0429nobodyさん04/04/29 13:25ID:???
CGIの拡張子を .html 設定にするだけだろ
0430nobodyさん04/04/29 14:16ID:???
>>429
釣り乙
0431nobodyさん04/04/29 14:52ID:???
>>429
馬鹿かお前。初心者はすっこんでろよ。
0432nobodyさん04/04/29 14:59ID:???
案外、本気で答えてたりしてなw
0433nobodyさん04/04/29 20:58ID:???
逆の方法もあるじゃん。
htmlをcgiに取り入れたら?
0434nobodyさん04/04/29 21:11ID:???
(´-`).。oO(無理すんなよなぁ・・・)
0435nobodyさん04/04/29 22:36ID:???
use Pgからuse DBIに切り替えプログラミングしているのですが、
use Pgのgetvalueみたいなものはuse DBIにないのでしょうか。

すみませんがご教授いただきたいです。
0436nobodyさん04/04/30 01:19ID:???
fetch
0437nobodyさん04/04/30 01:52ID:???
$tup_num と $field_num を指定して目的のとこだけ取ってくるようなメソッドは無いような気がするが
DBIスレの方がちゃんと知ってる人が多いと思う
http://pc5.2ch.net/test/read.cgi/php/1015943725/
0438nobodyさん04/04/30 03:25ID:SiN+gHBL
質問です。
バッククオートで外部プログラムを実行し、標準出力を受け取りたいと考えてます。

$tmp = `/usr/bin/wget -d http://example.com/test.cgi?d=domain\&p=password -O -`
このとき、アンパサンド「&」をエスケープできません。( http://example.com/test.cgi?d=domain でwgetが実行される)
どうすればよいでしょうか。

perl -v > This is perl, v5.6.1 built for i386-linux.
シェルで/usr/bin/wget -d http://example.com/test.cgi?d=domain\&p=password
はちゃんとgetの長いメッセージとして実行できてます。

GETはやめてPOSTにしろ、はなしでお願いします。。
0439nobodyさん04/04/30 10:18ID:???
>>438
かなり卑劣かも。
$tmp = q|http://example.com/test.cgi?d=domain&p=password -O -|;
$tmp = `/usr/bin/wget -d $tmp`;
0440nobodyさん04/04/30 10:20ID:???
>>438
`/usr/bin/wget -opt 'URI'`
0441nobodyさん04/04/30 10:46ID:???
なんて恐ろしい事をしているんだ。
俺には真似出来ねえ。
044244204/04/30 17:56ID:G+Ai2Hl9
perlでxmlを読み込もうとしています。
このようなxmlファイル(test.xml)があったとして、
-------------------------------------------------
<?xml version="1.0" encoding="Shift_JIS"?>
<data>
 <member num="01">
   <name>AAA</name>
 </member>
 <member num="02">
   <name>BBB</name>
 </member>
</data>
-------------------------------------------------
その中から、「AAA」と「BBB」を取り出すには
perlどのように書けばよいのでしょうか?
↓から続きがかけません・・
-------------------------------------------------
#!/usr/local/bin/perl
use XML::Parser;
:
:
:
print $name01; #AAA
print $name02; #BBB
-------------------------------------------------
0443nobodyさん04/04/30 18:34ID:???
>>442
google って知ってる? とっても便利だから使ってみなよ。
http://www.google.co.jp/search?lr=lang_ja&q=perl+XML%3A%3AParser
044444204/04/30 18:51ID:???
googleで探していろいろ見てみて
ttp://member.nifty.ne.jp/hippo2000/perltips/xml/parser.htm
とか良さそうだったのですが、解説を呼んでもいまいちよくわかりませんでした・・
044543804/04/30 20:25ID:???
どもです。 >439 で対処できました。
必ず直前で変数に固定値を代入するので、変数るのを納得しときます
0446nobodyさん04/04/30 22:38ID:???
>445
バッククォートでは変数展開とかがかかるので、\& が & になった状態でシェルに渡されてる。
なので、\\& にしても通るとは思うんだが、>440 のようにシングルクォートを使う方が素直だと思う。
0447nobodyさん04/04/30 22:54ID:5VEFp/rm
質問です。既出だったらスマソ。
ポートチェックってどうやったらできますか?
掲示板の荒らし対策に80と8080のチェックしたいんです。
ググってもいいページが見つからないんで・・・
できればスクリプトごとお願いします。
0448nobodyさん04/04/30 23:30ID:???
>>447
Socket使って、接続できたらあいてるってことでいいんじゃ?
0449nobodyさん04/04/30 23:37ID:???
>>448
普段perl使わないんで実装方法が・・・
0450nobodyさん04/04/30 23:45ID:???
>447 = >400 ?

とりあえず Socket.pm のマニュアルでも読めば。
0451nobodyさん04/05/01 00:12ID:???
Socket使うらしいということまではわかったんですが構文や応答の有無の判別がわかりません・・・
0452nobodyさん04/05/01 00:43ID:???
http://sv2ch.baila6.jp/chk_proxy.cgi?source
0453nobodyさん04/05/01 01:09ID:fGFxpvHE
                   ,.. -──- 、
                 / . : : : : : : : : : \
                /.: : : : : : : : : : : : : : ヽ
               ,!::: : : :,-…-…-ミ: : : : :',
               {:: : : : :i '⌒'  '⌒' i: : : : :}
                {:: : : : | ェェ  ェェ  |: : : : :}
.         , 、      { : : : :|   ,.、   |:: : : :;!
        ヽ ヽ.  _ .ヾ: :: :i r -ニ-┐ | : : :ノ
          }  >'´.-!、 ゞイ! ヽ 二゙ノ イゞ‐′
          |    −!   \` ー一'´丿 \ 
         ノ    ,二!\   \___/   /`丶、
        /\  /    \   /~ト、   /    l \
       / 、 `ソ!      \/l::::|ハ/     l-7 _ヽ

教  え  ろ  や  ?    あ ?  コラ ?
0454nobodyさん04/05/01 01:10ID:fGFxpvHE
   _,,,,,,,,
     , - ' ゙    `` ‐ 、_,,,,,
   ,r'          /=ミ
  /           彡ll',''´
. /             彡lll
 !-- .、    ,、、、、,,,   彡lノ
 l,,,,,__ /   ___     'r''゙ヽ
. |`゙'' ./   `'゙'''"    .〉,l |
 |.   ,'           //
. ',. ,'           , r'
.  ゙, ゙'ー ‐`      l  |
   ゙、''゙ ,,、二''‐    ノ  l、
''''''''7'ヽ  '''    /   /`〉`゙T''''''''''
  l  ` 、,,,,、- ' "    / /.|  |
.  |  |  .l i       / ./ |  |
  |  |  | l      / ./ .|  |
. |  |   | l     / /  |  |
 |  |   | ',   / /  l  .l
0455nobodyさん04/05/01 01:10ID:fGFxpvHE

                ,..-──- 、
                /. : : : : : : : : : \
           冒  /.: : : : : : : : : : : : : : ヽ
            l l ,!::: : : :,-…-…-ミ: : : : :',
          ./〜ヽ{:: : : : :i '⌒'  '⌒' i: : : : :}   _______
           |__| {:: : : :.| ェェ ェェ |: : : : :}   /
.           .|| �d.|| { : : : :|   ,.、  |:: : : :;! < とんちゅーみねーりらろっとおブ
         /| of||_.ヾ: :: :i r‐-ニ-┐| : : :ノ   \
         |  ̄ -!、 ゞイ! ヽ 二゙ノ イゞ‐′     ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
         |    −!   \` ー一'´丿 \
         ノ    ,二!\   \___/   /`丶、
        /\  /    \   /~ト、   /    l \
       / 、 `ソ!      \/l::::|ハ/     l-7 _ヽ
      /\  ,へi    ⊂ニ''ー-ゝ_`ヽ、    |_厂 _゙:、
      ∧   ̄ ,ト|    >‐- ̄`    \.  | .r'´  ヽ、
     ,ヘ \_,. ' | |    丁二_     7\、|イ _/ ̄ \
     i   \   ハ��       |::::|`''ー-、,_/  /\_  _/⌒ヽ


0456nobodyさん04/05/01 01:11ID:fGFxpvHE
●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
●●●●●●●●●●●●●●●●死 ね●●●●●●●●●●●●●●●●●
●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
0457nobodyさん04/05/01 01:13ID:fGFxpvHE
             !llヾ
             i1llllllii ,..-‐''" ̄~゙" ̄ ̄ミヽ──ー,
              ;;ll,;:" i          ヽ.、ヽ;=、/   
             ,/   l          ヽ ゙i、 ゙、:、゙、;;   
                /  :'  l :     i !.  ゙、 !l !,゙, ゙:,    
              l, ; . ; i !i :   :, }i!、 ', ! l l :!:.;:'; i  ミィは最強なんだよっ♪
                l.;.; : ;: l liヾ、 , .;}, Lj-ヾ ;.; l l :l ;: : l
              j!;.;; : ;: }:、ゝ、ヾ、゙ jリ.,. ..,,ヾj : .:rl ; : .!   
               !l; ;; .; ; l. ,,,,、ヾ、ツレ' i;;';;;;゙jL; ゙:,゙:, ; ; l
             |,:l;, ':, ; ;l,,l!i';;゙;,    ヾ-'',j ; ;;' l.゙i、; l
              | ;l;':,', ;, '!ヾ.`'''  ,      ,ォj,;:'' ;  !l;:; l
           | ;.!'l !゙,ヾ:「~;,、   ー   ノi''  ;'   ,ノ;; ,l
          ;l.; i ;.!l゙;ヾ,ヽ、;, `''ー ..,,_,. ::'ノ;.},,.  、,;'"; ;:; ;l
          ;'i ; ! ; i! ヾ; :、リ,, -::''"::l::i!::/;'.j、ヽ、j:::::ブヽ、!
          ;' !,' i ; ;; rヾ,:,゙; l:::::::::::::ヽi!フ;ノl'ヽ、,.ノ:;:"   ヽ,
           ,:'.;',' j,.、!'ヾ‐- ゞ、;゙ト、;::::::::::ソ/::!   .|:i       ゙!,
          ,' ,'.;,rヾ .ヽ ヽ......:::ヽi!'::゙ヾ-''リ^7    l/-、     .jヽ
          ,' ;;'.;r゙、 ヾ、j ゙"::::::::;;:::l:::::::::;メ:::::!.    i   ゙i   ,;^ヾ;,
.        ,' ,;',,'.;'i、'l'┘:::::::::::::::l':;:::!::::::::::::!::;'    !.   i!,.:;i ;, .lヾ:;,
       ,:' ,' //,! ゙':::::::::::::::::::::!ノ::::.!:::::::::::;,l.     !.  ,:';;::|, :;: 'l ゙;,゙;
       ;' ,;:'/ ;'/ :::::::::::::::::::::i"::::::.|:::::;,;;'イ     l , ':::::::|,: ; ! ヾ:.,
0458nobodyさん04/05/01 01:13ID:fGFxpvHE
  i 、 :. ヽヽ_,,.....、,,,....._;/ ,;'   ;,.!
  i.,  ..;;;ヽ       ヾ ,,;_ , /
   ヾ_:::,:'           -,ノ
    ヾ;.   ,         , 、;, 
      ;;    ● , ... 、,● ;: 
       `;.       C)   ,; ' うるせー!パンチ5分の2を教えろ!!
       ,;'     '.、 -‐-ノ ,;'、
      /      )           _     _
     / ,イ 、  ノ/    ∧ ∧―= ̄ `ヽ, _
    / / |   ( 〈 ∵. ・(ミィ〈__ >  ゛ 、_―
   | !  ヽ  ー=- ̄ ̄=_、  (/ , ´ノ
   | |   `iー__=―_ ;, / / /   
    !、リ  -=_二__ ̄_=;, / / ,'
        /  /       /  /|  |
       /  /       !、_/ /   〉
     / _/             |_/
     ヽ、_ヽ
0459nobodyさん04/05/01 01:15ID:fGFxpvHE
            /∧        /∧
          / / λ     / / λ
         /  /  λ   /  /  λ
       /   /  /λ /   /  /λ
     /          ̄ ̄ ̄      \
    /         /       \     \
   /        /          \    \
  /        /             \    丶
  |                             | 
 |                             |    
 |                            |   PERLオタクを殺す会
 |          ^―――――――      /
  |                           /
   \                        /
    /―/ /   / \/;;;;;;;\////////―\
0460nobodyさん04/05/01 01:16ID:fGFxpvHE
        /⌒ヽ⌒ヽ
         ....:::..∧Y∧ .
        .::::::::. ・ ・ ::ヽ  
     (     )●(  )  このスレは終了しました
      丶     ー  /    
        l,       j    
       i     i   .j
        |     八   |
         {        }
       | i し " i   '|
      |ノ (   i    i|
      ( '~ヽ   !  ‖
        │     i   ‖
      |      !   ||
      |    │    |
      |       |    | |
     |       |   | |
     |        !    | |
0461nobodyさん04/05/01 01:45ID:???
ヽ( ゜,_ゝ゜)ノ
   +
   人
0462nobodyさん04/05/01 08:27ID:???
flockが使えるか否かを判定するにはどうすればいいのでしょうか?

ただし、Internal Server Errorはさけたいと思っています。
つまり・・・

if (?????){
 print "flock 使用可能";
}
else{
 print "flock 使用不可能"
}
とさせたいのですが。。。

よろしくお願いします。
0463nobodyさん04/05/01 08:53ID:???
evalを検索汁
0464nobodyさん04/05/01 13:21ID:???
クラスHumanを継承するクラスBakerがあった時に、Humanのnewが

sub new {
 my $class = shift;
 my %params = @_;
 my $self = {
  sex => male,
};
bless $self, $class;
$self->initialize();
return $self;
}

で、Bakerに、外部からアクセスできる変数$skill (パン屋の腕前)と、内部でのみ使用する変数
$east (イースト菌 $east = new East()とかやりたい)を持たせたい時、
どうするのが賢いやり方なのでしょうか?

$eastの方は、ブロックの一番外でmy $eastと宣言したのでいいのだろうか、と思うのですが、
$skillの方は、$self->{skill} = $skillとかやっても、Humanのnewでblessした後なので、
途中で勝手に$selfのキーを増やしたりできるんだろうか、と思いまして…。
0465nobodyさん04/05/01 15:45ID:???
>>464
関係ないっつーかそういう風に
継承でハマることを避けるために
newとinitializeをわけてるんじゃないの?

Bakerの
initializeでskillとeastのキーを増やしておく。
skillのアクセサを作る。
eastのアクセサを作らないもしくは内部使用に限定する。

$baker->skill;
$baker->_east;
0466nobodyさん04/05/01 16:33ID:???
>>465
initializeはblessした後に呼び出される訳ですよね?
blessした後に$selfのキー勝手に増やしても大丈夫なんでしょうか…。
0467nobodyさん04/05/01 16:49ID:???
>>466
何故試さない?
>>1
0468nobodyさん04/05/01 18:49ID:???
>>467
いや、動くプログラムと良いプログラムは違うっていうか、
動くのは試したんですが、何らかの理由があって推奨されない方法なら
別のアプローチを探さないと、と思いまして。
普通に使われてる方法なら良いのですが…。
0469nobodyさん04/05/01 19:03ID:???
/
|  ・・・・・・・・・・・・・・・
\              
   ̄ ̄ ̄ ̄V ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
            
     (;;::::: )
    ,/;/⌒/)
  //;: /;:: /./
  (;::::|;:: (;: (/
  \);;:::.\;\
   (;:: ( (<<<ヽ
    .|;: |\;::::\
    );:: |  );:::: )


        _、_  
     (;;:::::,_ノ` ) 彡  マーシェーリィー… !
    ,/;/⌒/)
  //;: /;:: /./
  (;::::|;:: (;: (/
  \);;:::.\;\
   (;:: ( (<<<ヽ
    .|;: |\;::::\
    );:: |  );:::: )
0470nobodyさん04/05/01 19:04ID:???
      __ _,, -ー ,,
      (/   "つ`..,:
   :/       :::::i:
   :i        ─::!,,
     ヽ.....:::::::::  ::::ij(_::●
    r "     .r ミノ~
  :|::|    ::::| :::i ゚。 ・・・トゥートゥートゥマシェリー・・・
  :|::|    ::::| :::|:
  :`.|    ::::| :::|_:
   :.,'    ::(  :::}:
   :i      `.-‐"
   :ヽ__::',__   ::|:
    :{ ::|   ::|:
    :| ::|   ::|:


    __ _,, -ー ,,
    (/      `..,つ
   /       ::::::', マーシェーリー♪
   i    ●   ●:!
   ヽ...     ( .● )::/  彡くるっ
  r ":::::::.... ,,_ ─:/
  |::|    ::::r ̄:i
  |::|    ::::| :::|
  `.|     ::::| :::|_
   .,'    ::(  :::}
   i       `-‐"
   ヽ__::',__   ::|
    { ::|   ::|
0471nobodyさん04/05/01 19:05ID:???
                   ,....':::::::::::::゙=:::::、
                 /::::::::::::::::::::::::::::::::゙:、
.                /:::::::::::::::::::,r-:::::::::::::::::゙::、
..               ,l':::::::::::::::::::/-〃゙゙''''''゙\:::::::゙、
                l:::::::::::::::::::,l' ll'l    ゙l;:::::::l,
               ,;:::::::::::::::::::l  .ll.l..    l:::::::::l
              ,ィ:::::::::::::,r-- '''''--=-'l''=-''り::::l
             〃::::::::::::::l'   ゙ - ' ;. l゙ - ' l::::::l   ここのスレには…
             ソ::::::::::::::::l     , ア__,.l,.('' .t:::::j'
.             l::rk:::::::::::::゙l   ,..'゙-、=-:,.゙ t ゙レ   書き込まないで…ほしいです…
             ゝj:::::::,、::::::゙、  ; -==ヲ'弋''''{ ゙l,
            ,.-'::;==' ノ::::::::>'~::::゙=、_,l,.;'゙^'''゙l. ゙、
         ....,.=''   ,,〃'ヘ:::/:::::::::::::::::゙l爪.     l,
        ,.r'',:,:,:,:,:,^~",:,:,:,:,:,:,:7'''',=';,''''ヘ:ノ爻゙、   ,.=''-、
        k,:,\、,:,:,:,:,:,:,:,:,:,l,:,:,:,:/ (ふ勺 ,''l' j::l ゙l,-='',:,:,:,:,:,:゙、
       ,l',:,:,:,:゙、,:,:,:,:,:,:,:,:l,:,:,:,:l---===,,'.j^~:::l ,-゙,:,:,:,:,:,:,:,:,:,:,゙、
       /,:,:,:,:,:,:,゙、,:,:,:,:,:,:j,:,:,:,:,:l l':::::゙ュ), l.,' ;::;,/,:,:,:,:,:,:,:,:,:,:,:,:,:,:,ヘ
      j,:,:,:,:,:,:,:,:,:,゙、,:,:,:,:,l,:,:,:,:,:,k:::::::ヒ_l .;:::ll,:,:,:,:,:,:,l,:,:,:,:,:,:,:,:,:,:,ハ
      ,l,:,:,:,:,:,:,:,:,:,:,:,z,:,:,:,l,:,.,. '^.、::_:j':::::::::::::::::::l,:,:,:,:,:,:,:\,:,:,:,:,:,:,:,:,:,:,\
0472nobodyさん04/05/01 19:05ID:???
         ,,,r-‐───‐--、
      /     ,,,z-──ュ‐-、
     /,,ミミミミ,,r-‐''    リ  \
    //~             |   ゙i
   i/         ┛┗    |     |
   f |         ┓┏    ヽ   |
   | |                リ   r-、
   | |                 `ヽ/「ワ,|  こんな感じで頼みます・・・
    リ ,,,r==、   ,,r===ュ、      ┐ソ
   ゙i -=◎=-ヽ i−я−- `      ン }      
    ゙i ヽ--‐ .| l `'─‐'"    ノ ト‐/
    |    /l l 、      ,/ ├‐'゙
     .|、  ノr'  レ ヽ¬、,,.... -‐   |
     ゙iヽ‐' ヽ,,,,,r''´     ノ    |
     ヽ  ト‐==─イ~、 /    .ト、
      \ ヽ  ̄__:::‐'  y    ノ 
         \ ` ::  , '   
        `ー--──'"-' 
0473nobodyさん04/05/01 19:08ID:???
                    /    /     !    | ゙、    `' -、  l     \ ``
                  /    /-‐=、''" ', !  ト -ヽ__      ヽl  \   ヽ
                  , '     ,イ. ジ.l7!   ゙、|ヽ | ,r.‐、!,.``  !   , |、 \!    ゙,
                /    /! !.   |':l     ヽl l7l  i   |   'l ヽ         !
              /    / イ.   `  ,     .l'ノ  !.  i    i \       |
            , '       /   ! /// <   ///  ! |      ゙、  `ヽ、  ,'
          -="-ァ     i    ヽ    rァ─- 、      _| /       ゙、   ヽノ
              i        !    i \.  .,,___,,.)   / |/         ゙、
              l  ,     r    |   ` 、    _ ,. べ  |       、 ヽ 
              ヽ/ヽ、  |       .`l ""´ l .   ヽ/       _,)``
                  ヽ.」  ___,./ ' ´  ___ `ー 、_ / ,ノレ'
                   ,.r '´    ー-`  '´ - ‐  ̄    `'ー 、
                  ,/  _,.                      ヽ
                  ,レ' ´                i      l
                /           ,             ,l      l
               。'i            !     r',ヽ    l l       l
        ,、r;,         i'゙            !      ヾ'-'    l. l     l
    _,r'´、l.レ'、         '、          , '、          ,/ l     ,.!v-、,_
   l L.., }   !         ハ、     , ‐'  ヽ、       ノ  /!    /`,/_,l L,
   l゙l ヘ」/   l.      /  `''┬ ' ´     `'ー----- '´ ,/ l   /  !:イ、_ノ l、
アダルトとPERLは禁止
0474nobodyさん04/05/01 19:09ID:???
  /^~"´ ̄-‐‐‐'''"´/:/;ノ;;;;ノ://                _、-、_
 /::::::/:::::::_,,,、---‐‐'''`~,、-''/::/              /"`'ー-''`''-、これなんのAA・・・?
/:::/:-‐''''"~~::::::::;;;;-、,,,,、-,,、-‐ヽ,,_             /        ヽ
;/;;'`"~、-''''''~^'''''ー-、_,,i:i、  ヽ`ヽ、;ヽ、,,,ノ.   /"´ ̄~''/         ::::ヽ
;;;/~":、---、___/´ ,,i:'''  ::   ヽ. ヽ.`'''"´  /´    :::./         :::::::i
;;;;;'''''^~~~~^'''''/ー-  ';、 :::    `  ヽ`''ー-,,,i_    -‐''"         ::::::::;/-、,
;;;、;;;`''ー-,,,,,,,,,,,,,,_,,,,,、_   ''       ',::::    `'ー _、-'''~ ̄`''''''ー-、  :::::;/::  ヽ、
;;;ヽ、ー、;;ー-、,,,,,,,、-‐''"    .;´ ̄`,   ',::::,,,,、-  /"'::;,:ヽ    、    ヽ.:::::::      ''ー
:::::ー、ヽ、,,''ー-ヽ.''''",.,;' "^' 'ー-‐'' . _、-'''''"´  / ヽ,,,ノ   ヽ|     ヽ::::   ::
:::ヽ、`''ー-、ー-、'ヽ"、i;.     ヽ /"     i:::        i:     ':::   :::::
、::ヽ;;ヽ、:ー-、,,,,,、.ヽ ';''   ノノノ/;/        i::::::::::      υ    "    :::
ヽ,,_::''‐、,,,,''ー-''ー-"''/~'"''"/:/::      ::、:::i..::::::::::::::::::::::::::::::::::::       :::::::::
  ヽー''"~´     ヽ、  "`'i::::::::i、:..    :~^ヽ:::::::::::::::::::::::::::::ノ:::::::::::::::i'/::::::::::::::::::::::
~´   ::: :::::::::;;;;;; ;;;;;;;;;;;_,,、--、_i.::::::'ノ::::::::     `''ー-、,,,,,,,,,,‐'":::::::::υ::::υ::::::::::::::::::::::
    ヽ'''''''''''''' ''  :::::;;;;;;;;;;;;;;;;`-、:::::::::::::::::iノ:::::::::::   """`''ー、,,_;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
0475nobodyさん04/05/01 19:10ID:???
  i 、 :. ヽヽ_,,.....、,,,....._;/ ,;'   ;,.!
  i.,  ..;;;ヽ       ヾ ,,;_ , /
   ヾ_:::,:'           -,ノ
    ヾ;.   ,         , 、;, 
      ;;    ● , ... 、,● ;: 
       `;.       C)   ,; ' うるせー!パンチ5分の2を教えろ!!
       ,;'     '.、 -‐-ノ ,;'、
      /      )           _     _
     / ,イ 、  ノ/    ∧ ∧―= ̄ `ヽ, _
    / / |   ( 〈 ∵. ・(ミィ〈__ >  ゛ 、_―
   | !  ヽ  ー=- ̄ ̄=_、  (/ , ´ノ
   | |   `iー__=―_ ;, / / /   
    !、リ  -=_二__ ̄_=;, / / ,'
        /  /       /  /|  |
       /  /       !、_/ /   〉
     / _/             |_/
     ヽ、_ヽ

0476nobodyさん04/05/01 19:10ID:???
        /⌒ヽ⌒ヽ
         ....:::..∧Y∧ .
        .::::::::. ・ ・ ::ヽ  
     (     )●(  )  このスレは終了しました
      丶     ー  /    
        l,       j    
       i     i   .j
        |     八   |
         {        }
       | i し " i   '|
      |ノ (   i    i|
      ( '~ヽ   !  ‖
        │     i   ‖
      |      !   ||
      |    │    |
      |       |    | |
     |       |   | |
     |        !    | |
0477nobodyさん04/05/01 19:50ID:???
>>468
「blessした後に$selfのキー勝手に増やしても大丈夫か否か」という
問いに対し「何故試さない?」という答えなんだが…。>>464 だけでは
君がどう実装しているか分かりかねるので、善し悪しを尋ねられても
誰も答えられんだろう。

OO 設計に関するノウハウを知りたければ、その手の本なりサイトを
一通り読んだ方が、こんな処で一問一答してるより早いんじゃないか?
もしくはこの板なら下のスレ辺りに動くコードを晒して揉んでもらう
事を勧める。
http://pc5.2ch.net/test/read.cgi/php/1049514428/
http://pc5.2ch.net/test/read.cgi/php/1016474386/
0478nobodyさん04/05/01 21:32ID:???
>>468
http://www.kt.rim.or.jp/~kbk/perl5.005/perlbot.html#INSTANCE_VARIABLE_INHERITANCE
0479nobodyさん04/05/01 21:38ID:???
レスついてるみたいだけどせっかく書いたし。

>464
bless は単に型付けするだけだから、その後、キーを増やそうがその事自体に問題はない。
ただし、基底クラスで利用しているキーとぶつかったりしたら問題を引き起こす可能性はあるけどな。
ちなみに、一度 bless した後、別のクラスに bless し直すことだって可能なんで、bless を神聖視する
必要はない。

個人的には C++ 使いなので、派生クラスの new の中で基底クラスの new を呼ぶ方が好きだなぁ。
ttp://www.perldoc.com/perl5.8.0/pod/perltoot.html#Overridden-Methods
でも、この辺は Perl らしく TMTOWTDI なんで好みに合わせればいいと思う。
0480nobodyさん04/05/01 22:10ID:???
>>477-479
>bless を神聖視する必要はない。
thx すっきりしました
0481nobodyさん04/05/02 15:15ID:???
DBD::Pgモジュールについて質問ですが、executeのあとに
finishしないと まずかったりしますか?
今書いてるソース、すべてつけていないもので、、、
■ このスレッドは過去ログ倉庫に格納されています