Perlコーディング初心者質問スレ Part 55
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2007/05/30(水) 11:34:01ID:???【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
「コマンドの意味がわかんない」とかはマニュアル見ましょう。
回答者さんは何でも屋じゃありません。
1: 自分はこういう事がしたい。
2: それでこんな風にやってみたが・・・
3: こんなエラーが出て上手く行かなかった。
最低でも1と3が無いと誰も答えられないよ。
良い回答は良い質問から。一緒に勉強しましょう。
お勧めサイトは >>2-10
前スレ http://pc11.2ch.net/test/read.cgi/php/1171102883/
過去ログ倉庫 ttp://user.ftth100.com/mirrorhenkan/perl/
0459nobodyさん
2007/07/14(土) 13:05:26ID:???どうせ違うとしても大した差じゃない。見通しよく書けるかどうか
のほうが重要だよ。
0460nobodyさん
2007/07/14(土) 13:23:11ID:XODLozhP旧サーバでは動いているのが、新サーバでは以下のようなSocket接続でこけています。
$remote = IO::Socket::INET->new(Proto => "tcp",
PeerAddr => $server,
PeerPort => $port,
) || &error("error");
IO:Socket:INETD.pmを1行ずつ進捗printしてみたところ、コンストラクタ(sub new)の
「return $class->SUPER::new(@_);」で止まってしまいます(長い時間かかったあと"error"が帰ってくる)。
この$class->SUPER::new(@_);って親クラスのコンストラクタを
呼び出していると思うんですが、INETD.pmの親クラスって何になるんでしょうか?
perl初心者につき変なこと言ってるかもしれませんが、
よろしくご教授ください。。。
0461nobodyさん
2007/07/14(土) 13:40:14ID:???ソースを読んでuse baseか@ISAをいじってるところをさがす
or
そのパッケージの@ISA配列の値を調べる
0462nobodyさん
2007/07/14(土) 13:50:10ID:???0463nobodyさん
2007/07/14(土) 15:18:54ID:???>>451がどれだけドンチキな話をしてるのか理解してもらえればそれでいいのよ。
>>460
IO::Socketが親で、さらに上をたどるとIO::Handle。
0464460
2007/07/14(土) 15:20:34ID:XODLozhPありがとうございました。親クラスはIO:Socketでした。
今のところ、IO:Socket:connect()まで入ってきているのを確認できたので、
connect()の中を色々探ってみたいと思います。
(connectのどこかで止まっている状態)
0465460
2007/07/14(土) 15:24:56ID:???>>464
Hanndleとか行ったりきたりして、今のところ463のような状態なので
引き続き調べます。ありがとうございます。
0466nobodyさん
2007/07/14(土) 15:55:23ID:???0467トラハムちゃん
2007/07/14(土) 16:32:18ID:M6VlwpzHユーザーエージェントに「AAA」または「BBB」という文字が
含まれていなかったらエラーを表示したいと思っています。
if(not $ENV{'HTTP_USER_AGENT'} =~ /AAA/) {
&error("エラーです");
}
「AAA」だけでしたら作れたのですが、うまく「BBB」が追加できなくて困っています。
初心者なりにor等を使ってみても、入れ方が悪いのかうまくいきませんでした。
どなたかご教授いただければと思います。
よろしくお願いします。。
0468nobodyさん
2007/07/14(土) 16:35:18ID:???0469トラハムちゃん
2007/07/14(土) 17:14:18ID:M6VlwpzHできました!
ありがとうございました!!
助かりました!!
0470nobodyさん
2007/07/14(土) 17:54:00ID:???慣れないうちは、&errorとかサブルーチン作った方が、本人の!可読性がいいと思うし、
webprog的には、エラーが発生したときにブラウザに表示させることも多いので、別に構わないというか
俺はそうしてる。
特殊変数なんかも同じで、慣れないうちは使ってなかった。
foreach my $str (@hoge) { print $str; } みたいに。
0471460
2007/07/14(土) 18:53:18ID:???IO:Socket:connect()の↓のconnect関数から反応が返ってこないということが
分かりました。
if (!connect($sock, $addr)) { }
connect()関数を使うにあたって、
サーバ側で何か設定が必要だったりするでしょうか?
今回自宅サーバのため、同じcgiが動いているレン鯖と何か設定が
違うのかもしれないと思いまして。
もしくは、ポート開放関係?一応メールの110ポートはあけているんですが。。。
すみませんが、よろしくお願いします。
0473448
2007/07/14(土) 19:25:34ID:ybwwq6evその点が気になってたとこです。
実行効率か、可読性かみたいな。
ただ、どっちがどうかは良く分かってませんが。
すんません。
0474nobodyさん
2007/07/14(土) 23:24:23ID:???0475nobodyさん
2007/07/15(日) 00:16:49ID:tgDYqhX7普通にやるとアクセス元のcgiのあるフォルダにファイルが作られてしまいます。
ライブラリであるplのあるフォルダにファイルを作りたいのですが、
どのようにすればいいのでしょうか?
0476nobodyさん
2007/07/15(日) 00:32:58ID:???0477nobodyさん
2007/07/15(日) 00:50:43ID:???0478nobodyさん
2007/07/15(日) 02:37:03ID:???0479nobodyさん
2007/07/15(日) 08:06:39ID:???アマグラマの回答でよければ。
library.pl 側で、自分の位置を変数に保持するか、それを調べて返すサブルーチンを用意してはどうでしょう。
私も初学者ゆえ、パスの調べ方については分からんのですが、たぶんやり方はあると思います。
で、そうやって取得したlibrary.plのフルパスを、ファイル操作ルーチンに突っ込む。
0480479
2007/07/15(日) 08:08:13ID:???× そうやって取得したlibrary.plのフルパスを、〜
○ そうやって取得したlibrary.plが存在するディレクトリのフルパスを、
0481nobodyさん
2007/07/15(日) 09:19:49ID:???http://search.cpan.org/~nwclark/perl-5.8.8/pod/perlvar.pod#%25INC
しかし普通はそんな変な仕様にせず、内容が変化するファイルのパス
なり親ディレクトリなりをスクリプト内や設定ファイルで明示的に指定
できるようにするべきだろう。
0484460
2007/07/15(日) 18:30:54ID:???PerlのSocket:connect()を使えるかどうかは
自宅サーバなので自分で設定できるんですが、
設定する箇所がわからない・・・。
httpdのconfigにもそれらしき箇所はないし、
perlってconfigファイル的なものがなさそうなんですが、
設定とかってどこでするんでしょうか?
0485nobodyさん
2007/07/15(日) 19:30:10ID:???etherealかなんかでやり取り眺めて切り分けしろ。
0486nobodyさん
2007/07/18(水) 19:25:52ID:???アップローダでアップされたファイルなど、CGIを使ってバイナリ単位で編集したいのですが、どのように行えばよいのでしょうか?
0487nobodyさん
2007/07/18(水) 19:42:48ID:???0488nobodyさん
2007/07/18(水) 19:44:38ID:U8dvSnpWCGI::Session、Apache::Session(mod_perl2に対応していない?)
以外の方法ってありますか?
自前で実装になる?
0489nobodyさん
2007/07/18(水) 19:45:15ID:???0492nobodyさん
2007/07/18(水) 20:38:08ID:???C、C+、tcl、lisp、sh、perl、PHP、java、ruby、ほか好きな言語、スクリプトで
open か fopen でもしていじってくださいな
0494nobodyさん
2007/07/18(水) 21:10:34ID:???0495nobodyさん
2007/07/18(水) 21:21:38ID:???ワロスww
0496nobodyさん
2007/07/18(水) 21:33:02ID:???0497nobodyさん
2007/07/18(水) 22:11:24ID:???> 1: 自分はこういう事がしたい。
> 2: それでこんな風にやってみたが・・・
> 3: こんなエラーが出て上手く行かなかった。
0499nobodyさん
2007/07/19(木) 02:03:02ID:???>>495は、>>490が日本語云々言ってるのに「よいよ」って書いてるのにつっこんでんのに、
自演とか言ってる>>496は何だ?
>>497は質問者に>>1嫁と言っているだけだと思うのだが、>>498のつっこみは何だ?
何だ( ゚д゚)何だ(゚д゚ )何なんだ(゚д゚)???
0500nobodyさん
2007/07/19(木) 02:27:41ID:???0504nobodyさん
2007/07/19(木) 17:23:44ID:???http://pc11.2ch.net/php/dat/1180492441.dat
0505nobodyさん
2007/07/19(木) 20:27:45ID:???どのような表記になるのでしょうか?
この場合「ー」や「〜」も含めたいです。
0506nobodyさん
2007/07/19(木) 20:29:49ID:???で使うのは !~ を使ってください
0507nobodyさん
2007/07/19(木) 20:38:30ID:???if( $test !~ '^[\82\9e-\82\ef]+$' )
{
//ひらがなの場合
}
0508nobodyさん
2007/07/19(木) 20:41:15ID:???わからん
0509nobodyさん
2007/07/20(金) 01:10:35ID:???0510nobodyさん
2007/07/20(金) 10:31:22ID:???0511nobodyさん
2007/07/20(金) 17:57:06ID:???つ ttp://www.din.or.jp/~ohzaki/perl.htm#Character
EUCかSJISの場合
0513nobodyさん
2007/07/20(金) 22:12:15ID:???0514nobodyさん
2007/07/21(土) 20:05:13ID:???0515nobodyさん
2007/07/22(日) 02:05:22ID:???0516nobodyさん
2007/07/22(日) 10:54:01ID:???サーバーで実行されることを想定して
作られているCGIゲームを、自分の
windowsのパソコン上で一人で実行したいのですが、
perl+アパッチ+アクtィブパール
という構成になるのでしょうか?
アパッチは必須ですか?
0517nobodyさん
2007/07/22(日) 11:16:44ID:???0518nobodyさん
2007/07/22(日) 11:21:20ID:???0520nobodyさん
2007/07/22(日) 11:32:56ID:???0521nobodyさん
2007/07/22(日) 12:30:49ID:???特に、ImageMagickとかでそういう機能ありますか?
0522nobodyさん
2007/07/22(日) 13:28:00ID:???0523nobodyさん
2007/07/22(日) 14:12:18ID:???初心者はAN HTTPDとActive Perlでいいだろ
つーかぐぐれ
0524nobodyさん
2007/07/22(日) 14:27:23ID:???0525nobodyさん
2007/07/22(日) 15:17:51ID:???超ヤサシイ俺が。
左右上下に動かすって、ボタンを押すたびに動かす事は出来るかもな。
基本的にPerlが動くのはボタン押したりアドレス開いたりした直後だけ。
つーかCGIの入門書でも嫁。
0526nobodyさん
2007/07/22(日) 16:26:43ID:???いや、それでもいい。
フォームでボタン押してパラメタ送信、受け取ったら画像が右に少し移動してるって状態で十分。
空白文字分を入れて右にずらしたりはできるけど、上下左右に細かく描画位置を変えれる方法が知りたす。
0527nobodyさん
2007/07/22(日) 16:46:42ID:???超ヤサシイ俺が。
テーブルで囲んで上下左右にセルを用意して透明画像(幅、高さ指定して)を挿入すりゃいいんじゃね?
それか、GD使って元画像を編集するか・・・。マンドクサイな。
ってかなんでCSS+JavaScriptでやらねえのか、かなり疑問。
CGIの出力なんてHTMLなんだから、そこをDynamicHTMLにしちゃいけないって決まりはないんだし。
0528518
2007/07/22(日) 16:52:24ID:JZmpPZ9RActivePerlと別途にPerlが必要、ってのは何かおかしくないか?
と思ってたのだけど、俺が勘違いしてたかもしんない。
0529nobodyさん
2007/07/22(日) 16:56:58ID:RK22sjeKforeachを使わない方法があったと思うのですが、忘れてしまいました。
foreach(@list){$_*=2;}
以外の、foreachを使わない、全ての要素にアクセスする関数か何かあったと思うのですが・・・教えてエロイ人。お願いいたします。
0530nobodyさん
2007/07/22(日) 17:13:41ID:???0532nobodyさん
2007/07/22(日) 18:24:04ID:???CSSとJavaScriptもいいんだけど、俺の知り合いが携帯しか持ってない奴ばっかりで。
携帯じゃCSSもJavaScriptも無理だから。
つーか超ヤサシイもまいは超ヤサシイ俺という名前なのか気になた
0533nobodyさん
2007/07/22(日) 18:42:34ID:???中野一人が言うんだから間違いない。
0534nobodyさん
2007/07/22(日) 19:39:53ID:???0535nobodyさん
2007/07/22(日) 22:18:20ID:???0536nobodyさん
2007/07/23(月) 15:42:25ID:???パスワードをcryptで暗号化して、ファイルに保存しておいたものを、$CRYPTとして読み出して、
フォームから入力された$form{'pass'}と一致するかをチェックしようとしたところ、
$CRYPTが空だと、$form{'pass'}がどんな値でも通ってしまう。
if (crypt($form{'pass'}, $CRYPT) eq $CRYPT) {
# $CRYPTが空だと、$form{'pass'}がどんな値でも通ってしまう。
}
こういうのは
if (crypt($form{'pass'}, $CRYPT) eq $CRYPT) && ($CRYPT)) {
# $CRYPTが空だと、$form{'pass'}がどんな値でも通ってしまう。
}
0537途中で書き込んじゃったスマソ
2007/07/23(月) 15:43:52ID:???パスワードをcryptで暗号化して、ファイルに保存しておいたものを、$CRYPTとして読み出して、
フォームから入力された$form{'pass'}と一致するかをチェックしようとしたところ、
$CRYPTが空だと、$form{'pass'}がどんな値でも通ってしまう。
if (crypt($form{'pass'}, $CRYPT) eq $CRYPT) {
# $CRYPTが空だと、$form{'pass'}がどんな値でも通ってしまう。
}
こういうのは、以下のような対策でいいと思いますか?
if ((crypt($form{'pass'}, $CRYPT) eq $CRYPT) && ($CRYPT)) {
# $CRYPTが空だと、通らないはず。
}
0538nobodyさん
2007/07/23(月) 15:55:07ID:???その対策だとパスワードに「0」を設定されると問答無用でfalseになりますね。
$CRYPT eq "" のほうがいいかも?
というかそれ以前にif( crypt($form{'pass'}, $CRYPT) eq $CRYPT )で常にtrueになるのが変です。
本当にやってることはそれだけ?
0539nobodyさん
2007/07/23(月) 16:29:20ID:???cryptを通した後の暗号化された文字列$CRYPTが、一文字の"0"になるってことはあるんでしょうかね。
if (($form{'id'} eq $ID) && (crypt($form{'pass'}, $CRYPT) eq $PASS)) { }
みたいにIDも照合してます。
0540nobodyさん
2007/07/23(月) 16:29:38ID:???それともundefだったかな?
0541nobodyさん
2007/07/23(月) 16:37:49ID:???蛇足は間違えてるし本題はなんの役にも立たないしで恥ずかしいので無視してください。
0542537=539
2007/07/23(月) 16:41:51ID:???ちゃんと、値のチェックを行っていなかった自分に反省…
0543nobodyさん
2007/07/24(火) 09:20:42ID:???my %file = map { chomp; $_ } <f>;###こんな感じで一旦chompして改行取っ払って、、、
delete $file{'$blogFileName'};###こんな処理をしたあと、、
また改行をくっつけてもどしたいのですが、どうすればいいか教えていただけませんか。
0544nobodyさん
2007/07/24(火) 09:53:00ID:???0545nobodyさん
2007/07/24(火) 09:58:11ID:???ありがとうございます
言葉足らずですいません
一番最後の要素にも改行コード付けて戻したいんですが、どうすればいいでしょうか…
0546nobodyさん
2007/07/24(火) 10:26:09ID:???0547nobodyさん
2007/07/24(火) 10:30:34ID:???あと連想はやめろ
0548nobodyさん
2007/07/24(火) 11:26:52ID:???0549nobodyさん
2007/07/24(火) 11:28:33ID:???0550nobodyさん
2007/07/24(火) 12:03:01ID:???0551nobodyさん
2007/07/24(火) 18:09:32ID:???とかじゃダメ?
0552nobodyさん
2007/07/24(火) 18:56:17ID:???print f $name, "\n", $value, "\n";
}
0553nobodyさん
2007/07/24(火) 20:59:43ID:???正しくないIDやDB名を入れた場合はきちんと
DBI::errstr にそのエラー文言が入るのですが、
正しくないパスワードを入れた時は何故かそのまま通っちゃいます。
帰ってきた中身を見ても、パスを入れた時、入れない時でどちらもハッシュが入っています。
これは不可思議な事に何故か両方繋がってしまっていると見た方がいいですよね??
0555nobodyさん
2007/07/24(火) 22:06:21ID:???ありがとうございます。
セキュリティをかなりガチガチにしているところなのでちょっと考えにくいような。。。
パスワードの値を変更したらハッシュの値も微妙に変わりますがこれは仕様でしょうか?
何にも入れない時と入れた場合で±8くらい差があります。
文字数でハッシュも変わる!?
0556nobodyさん
2007/07/24(火) 22:35:34ID:???DBI->connectの復帰値はデータベースへの接続ハンドル(接続者の識別コードみたいなもの)なので、
接続毎に違う値になる事もあるし、disconnect → 再connect で同じ番号が割り当てられないとは限らない。
ってか、値自体に意味はない。(0ならエラーって意味以外は人間様が解析するべき内容じゃない。)
レン鯖でも、ポスグレがlocalhostを無条件トラストしてる事は十分考えられる。
コンソール前に座って、コンソールの管理者ログインパスワード知ってても
DBパスワード知らなきゃメンテナンス出来ないんじゃ、管理コスト高くつくからな。
その状態で、ポスグレ鯖とHTTP(CGI)鯖が同じマシンだったら、
localhost(=HTTP(CGI)鯖)は無条件トラストされてるから、ユーザー名さえあってりゃコネクトできる。
試しにテーブル作ってダミーデータぶち込んで、それを表示するプログラムを
パスワードありなし両方で動かしてみれば良いんジャマイカ?
それでパスワードなしで繋がっちゃったら鯖缶に問い合わせれば良いと思われ。
0557nobodyさん
2007/07/24(火) 22:44:50ID:???ポスグレ鯖とWeb鯖は同一PCです!
さっそく今からためしにテーブル作ってデータぶちこんで表示させてみます!
0558554=556
2007/07/24(火) 22:51:24ID:???役に立ててよかった。
漏れ、ポスグレ+アパッチの鯖缶兼CGI開発やってるから多少は分かるが、
鯖缶としてはシロウトに近いんで(テスト用2台、本番用1台しかやってない)
切り分けぐらいまでしか役に立てない。スマソ。
もし設定やらについて必要ならポスグレスレででも聞いてみてくれ。
■ このスレッドは過去ログ倉庫に格納されています