トップページphp
329コメント113KB

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

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん03/08/14 06:06ID:xOc/6R60
いらっしゃーい、Perlのコーディングで困ってる人のスレです。

【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。

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

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

関連スレ
【Perl上級者コーナーPart01】
http://pc2.2ch.net/test/read.cgi/php/1024741312/
CGI: Common Gateway Interface part 11
http://pc2.2ch.net/test/read.cgi/php/1055597189/
【Perl,CGI】参考書籍 第三版
http://pc2.2ch.net/test/read.cgi/php/1030209573/
【 スクリプト改造工房 PART 6 】
http://pc2.2ch.net/test/read.cgi/php/1047806915/

過去ログやお勧めサイトは >>2-10
0081あぼーんNGNG
あぼーん
0082あぼーんNGNG
あぼーん
0083nobodyさん03/08/16 07:26ID:???
>>77
削除依頼よりかコピペ荒らしで挙げれば規制対象になるのにねぇ。。。
0084nobodyさん03/08/16 08:41ID:mdqCqsMr
SQL文のデバッグなどで、printとは別にどこかへ変数の内容などを出力する場合、
どのような方法が考えられるでしょう?
0085あぼーんNGNG
あぼーん
0086nobodyさん03/08/16 10:24ID:22Mj43o0
>>62
お答え、ありがとうございます。
できるとは最初から思ってはいませんでしたが。
C言語とかでDLL書くのめんどくさいのでperlでかけたらなぁって。
とりあえずまずはperlcc使えるように環境を整えようかと思っております。
なぜか僕の環境、Cプログラムは吐き出すんですがコンパイルしてくれなくて。
しかもそのプログラムをコンパイルしてみるがエラー続出。
どうなんだ、LarryWallよw
仕方がなく自分でエラー部分を書き直してるのですが。
なんとかまともなCプログラム、吐き出させられないですかね。
ちなみに環境はWinMeでActivePerl、CコンパイラはDev-C++(GCC系)とBCCです。
解決方法がありましたら、教えてください。
0087nobodyさん03/08/16 10:32ID:???
VC++を使う。
0088nobodyさん03/08/16 11:17ID:???
>>83そう思うなら、おまえがコピペ荒らしとして規制依頼しろよ。できねーくせにガタガタぬかすな
0089nobodyさん03/08/16 11:18ID:mv+dlsfN
KENTのネットクルーザーで
検索部分を改良したい。
英語の半角、全角をともに検索するには
どうしたらいいのでしょうか?
0090nobodyさん03/08/16 11:22ID:???
>>89
【 スクリプト改造工房 PART 6 】
http://pc2.2ch.net/test/read.cgi/php/1047806915/
0091助けてください03/08/16 12:07ID:???
1: 自分はこう言う事がしたい。
http://server/program.cgi/hogeというのを、http://server/hogeで見れるようにしたい
2: それでこんな風にやってみたが・・・
.htaccessに「ErrorDocument 404 /program.cgi」と追加。
3: こんなエラーが出て上手く行かなかった。
エラーは出ないけど、404エラーなので、エラーログがたまっていく・・・

どなたか助けてくださいm(__)m
00929103/08/16 12:08ID:???
ErrorDocument 404 /nph-test.cgi
だと、ヘッダに404となってしまうので、
ファイル名をnph-program.cgiにして、「print 'HTTP/1.0 200 OK'."\r\n";」とヘッダに追加。
でも、エラーログが(ry
0093nobodyさん03/08/16 12:23ID:???
>>91
DirectoryIndex
スレ違いなので後は自分で調べな。
0094nobodyさん03/08/16 12:32ID:R1l09wg/
>> 93
DirectoryIndex DirectoryIndex nph-program.cgi
と記載してあります。
やっぱプログラム側の問題じゃないからここじゃ駄目ですね。。。
0095nobodyさん03/08/16 12:37ID:???
コピペ荒らしにマジレス。
残り少ない夏休みを2chでコピペ荒らしするだけに費やす気みたいだけど、
入門本くらい一通り読んで初心者レベルに到達してから来てね。
0096nobodyさん03/08/16 12:44ID:???
>>86
perlをCにトランスは完全に出来ませんし
できたとしても使い物にはなりません(実行ファイルは馬鹿でかい)
あきらめたほうがいい
XSをつかうかswigをつかうか
perlのソースコードを書き換えるかしてください

Win32系のモジュールで直接DLL関数に引数はわたせます
0097nobodyさん03/08/16 12:52ID:???
>>84
コメント扱いで出力。htmlなら<!-- -->内に埋め込む。batならremの後ろに書く。
自分でファイルをオープンして書き込み保存。
syslogに飛ばす。
変数デーモンを作成して、そこへの接続を全て記録。

>>91
そう言う用途にはapacheのモジュールのmod_writeを使うと便利。
が、確実にスレ違いなのでそれ以上言わない。
0098nobodyさん03/08/16 12:54ID:???
mod_writeじゃねーよ>オレ
mod_rewriteね。
00999103/08/16 13:05ID:R1l09wg/
googleでmod_rewriteで探してきます。
Apacheの板orスレってあったっけ?(−−
0100nobodyさん03/08/16 13:11ID:???
>>99
この板にも自宅サーバ板にもUNIX板にも
01019103/08/16 13:49ID:R1l09wg/
>> 100
おお。..._〆(゚▽゚*)メモメモ
ありがとうございました
それではいってきます(w
01029103/08/16 15:16ID:R1l09wg/
/htdocs/.htaccess: Invalid command 'RewriteEngine', perhaps mis-spelled or defined by a module not included in the server configuration
こんなエラーから進めない(;;
01039103/08/16 15:39ID:R1l09wg/
>>99
mod_rewriteが入っていない可能性が出てきたので他の方法ってありませんか?
0104nobodyさん03/08/16 15:54ID:???
>>103
すれ違い
01058403/08/16 15:54ID:mdqCqsMr
>>97
>コメント扱いで出力。htmlなら<!-- -->内に埋め込む。batならremの後ろに書く。

……コロンブスの卵(^^; そーか、SQL実行しないでこーすればいいのか(汗)
アドバイスありがとうございました。

あと、「syslogに飛ばす」っつーのは、具体的にどうすればいいのでしょうか?
厨で申し訳ありませんが、ヒントなど頂ければ幸いです。よろしくお願いします。
0106nobodyさん03/08/16 16:25ID:???
>>105
qx{/usr/bin/logger -s "Virus warning: uploader:[$host]:Detected $1 and deleted."};
みたいな。
0107nobodyさん03/08/16 17:11ID:???
>>105-106
標準モジュールに Sys::Syslog というものが…。
0108nobodyさん03/08/16 17:40ID:???
>>95

もう、動かないからあきらめた
0109nobodyさん03/08/16 17:41ID:???
このスクリプト、どうもみても初心者のじゃねーよ
0110あぼーんNGNG
あぼーん
0111あぼーんNGNG
あぼーん
0112あぼーんNGNG
あぼーん
0113あぼーんNGNG
あぼーん
0114あぼーんNGNG
あぼーん
0115nobodyさん03/08/16 18:09ID:???
質問スレが珍しく荒れてるな〜と思ったら、全部 メール欄??? の仕業かい!w
0116nobodyさん03/08/16 18:41ID:???
お。なるほど。メール欄であぼーんすればよかったのか
01178403/08/16 18:57ID:mdqCqsMr
……syslog.phってどーやってつくればいいのでせう?<厨なアタシ(T_T)

それはさておき、「Can't locate Date/Manip.pm in @INC〜」なんてエラーが出てきました。
CPANで「Install1 Date」はしたのですが、他になにかしなければならないことがあるのでしょうか?
重ね重ねで申し訳ありませんが、よろしくお願いします。
0118nobodyさん03/08/16 21:02ID:???
>>117
一々作らんでも @INC に入ってない? UNIX系OS以外は知らんけど。
作るなら h2ph で。

見つからんって言われてるんだから、入れればいいじゃん。:-)
http://search.cpan.org/author/SBECK/DateManip-5.42a/
0119nobodyさん03/08/16 21:19ID:???

十進数の数字があり、それを出力する時16進数にしたいのですが、
どのように変換すれば良いのでしょうか?

すみません、かなり初歩的な質問ですがお願いします。
0120nobodyさん03/08/16 21:20ID:???
sprintf
0121nobodyさん03/08/16 21:33ID:???
%x
01228403/08/16 22:43ID:mdqCqsMr
>>118
Date::Manipは入りました。……単純に「install Date::Manip」でOKなんですね。
厨でごめんなさい(T_T)
0123あぼーんNGNG
あぼーん
0124nobodyさん03/08/17 01:00ID:???
>>119
printf("%x", $a);
とか
$s = hex($a)
とか
012511903/08/17 01:30ID:???
返信遅れてすみません。

アホな質問に答えてもらって、とってもありがとうございました。
m(__)m
0126nobodyさん03/08/17 01:59ID:okMBcaWD
ディレクトリ作成するときって
mkdir("mydir",0700);
のようにパーミッション指定できるが、
open(fp,">output.txt");
ってやって書き込むとパーミッションが自動的に644になります。
これを600にするにはどうしたらいいでしょう???

っつってもあとでchmodすればすむことなんだが、
open時に600にするようにできればしたい、
0127nobodyさん03/08/17 02:13ID:???
>>126 umask
0128nobodyさん03/08/17 02:29ID:???
>>126

いったんファイルを削除します。それからディレクトリで呼び出すを選ぶと
復元できるので、その設定でパーミッションを設定すると固定できます。
0129あぼーんNGNG
あぼーん
0130あぼーんNGNG
あぼーん
0131あぼーんNGNG
あぼーん
0132あぼーんNGNG
あぼーん
0133あぼーんNGNG
あぼーん
0134あぼーんNGNG
あぼーん
0135あぼーんNGNG
あぼーん
0136nobodyさん03/08/17 02:38ID:???
>>126
IO::Fileモジュール使うとパーミッションを指定しながらオープンできます。
(sysopen互換のO_XXX指定を使うとファイルロックしながらオープンできたり便利。)
013712603/08/17 02:42ID:???
大変参考になったぞ。
おめーらに感謝。
0138あぼーんNGNG
あぼーん
0139nobodyさん03/08/17 05:55ID:EjdzKOi8
POP3サーバと接続してメールを閲覧するプログラムを
書きたいのですが、これをsocketモジュールを使わない
で行うことは可能でしょうか。

初心者ですみませんが教えてください。
0140nobodyさん03/08/17 06:21ID:1qkkfnQM
>>139

Net::POP3
0141nobodyさん03/08/17 06:22ID:???
化膿。
0142あぼーんNGNG
あぼーん
0143あぼーんNGNG
あぼーん
0144あぼーんNGNG
あぼーん
0145あぼーんNGNG
あぼーん
0146あぼーんNGNG
あぼーん
0147あぼーんNGNG
あぼーん
0148あぼーんNGNG
あぼーん
0149nobodyさん03/08/17 13:11ID:8iaOJK9H
X.cgiの中の、一部の数字を取り出したいのですが。
X.cgiの中身はこんなです

1,データA,データB,データC,
2,データA,データB,データC,
3,データA,データB,データC,

この中の、最後のデータの数字「3」を変数に入れたいのです。

open(IN,"X.cgi") ;
while (<IN>) {
$num = split(/,/);
}
close(IN);
print $num;

これ全然違いますが、$numに「3」が入ってくるようにしたいんです。
よろしくおねがいします。
0150nobodyさん03/08/17 13:23ID:???
>>149
splitの使い方がまちがっとる
$num = split(/,/); のすぐ下に print $num; を入れてみ。
その後で、splitの説明を読むとグー
0151nobodyさん03/08/17 14:12ID:???
>>149
$num = split(/,/); の2つ下に print $num; を入れる。
それからwhile (<IN>) { をwhile($IN1 > 0){
に変える。
その後で、スクリプトを3の入るようにすればOK。
上はどっかの馬鹿だから無視しろ。
0152あぼーんNGNG
あぼーん
0153あぼーんNGNG
あぼーん
0154あぼーんNGNG
あぼーん
0155あぼーんNGNG
あぼーん
0156nobodyさん03/08/17 14:16ID:???
>>126
おまえの脳みその程度もよくわかりました。
もう、二度と来ないでくださいね。すっごいむかつく!!
くだらん質問する暇あったら自分で調べろ!死ね!!
0157あぼーんNGNG
あぼーん
0158あぼーんNGNG
あぼーん
0159あぼーんNGNG
あぼーん
0160nobodyさん03/08/17 14:37ID:???
>>151 は例の荒しているヴァカだろ?
0161nobodyさん03/08/17 15:07ID:???
>>160
そうみたいだな
0162nobodyさん03/08/17 15:22ID:???
レス削除で削除人からコピペで依頼してくれってあったから、
運用情報のほうへ回そう
荒らしとしてアク禁しますっていうことなんじゃないか?
0163nobodyさん03/08/17 15:43ID:???
>>160
なんでアレは削除依頼に入れてくれないんだろう。
0164nobodyさん03/08/17 17:34ID:FkUVLAYO
#! /usr/local/bin/perl

while(<STDIN>) {
    print;
}

のようなフィルター(そのまま出力するだけですが(;´Д`))を作った後、
DOSの場合、どうやって実行するんですか?

すごい初歩的な質問でスイマセン
0165nobodyさん03/08/17 17:36ID:???
Perlでバイナリファイルに保存したいんだけど、なにかあります?
0166nobodyさん03/08/17 18:11ID:???
>>164
perlにパスが通っており、
それがtest.plというファイルなら、
test.plのあるフォルダにcdコマンドで移動し、
perl test.pl
と打ってEnterを押す。

とか、普通に答えてみる。

コーディングの質問じゃねー。
0167nobodyさん03/08/17 18:16ID:???
>>165
binmode( FILE );
print FILE $buff;
0168nobodyさん03/08/17 18:23ID:FkUVLAYO
>>166
出来ました。ありがとうございます。
というかスレ違いでしたか、スイマセン。今から気をつけます。
0169nobodyさん03/08/17 18:24ID:???
>>165
>Perlでバイナリファイルに保存したいんだけど、なにか(いいバイナリファイル)あります?
画像ファイルがバイナリファイルだろうね。
0170あぼーんNGNG
あぼーん
0171nobodyさん03/08/17 18:44ID:ycQ+dswy
アクセス解析のCGI作ったんですけど、
フレームを使っている性で全部リファラがindexになってしまいます。
使っている鯖はSSIは使えませんし、.htaccessも使えません。

どうすればリファラが取れるんですか?教えてください。御願いします。

すれ違いだったらすいません。
0172nobodyさん03/08/17 18:53ID:???
>171
CGIスレ向き。
0173あぼーんNGNG
あぼーん
017413903/08/17 19:29ID:???
>>140
説明不足ですみません。
要はモジュールを使わずにpop接続を行いたいのです。
0175あぼーんNGNG
あぼーん
017614903/08/17 19:40ID:8iaOJK9H
>>151
ありがとうございました。
ちょっとうまくいかないんですが(TT)
なんか根本的に判ってないかもしれないので出直します。
splitの勉強を・・・
0177nobodyさん03/08/17 19:41ID:???
>>174
一旦モジュールを使って望みの動作をするスクリプトを組み、
コードを全てインライン展開する。
0178nobodyさん03/08/17 19:57ID:???
>>176
>>151は荒氏だから参考しるな!
病気がうつるぞ〜。
splitの勉強汁〜。
0179nobodyさん03/08/17 20:35ID:???
荒クンを解析してみたよ。
・17歳童貞
・高校生だが、成績が追いつかず、学校でも苛められて現在引き篭もり中。近々退学予定。
・自己管理が出来ず、体系は肥満気味。お風呂に入らないので臭い。
・家族構成は共働き両親2人とペットのハムスター20匹(名前付き)
・起きている間は、ほぼインターネットを利用している。
・最近KENT-WEBからASKAを借りてきて、初めてPerlを知った。
・日ごろから、書き込む度に叩かれている某掲示板には恨みを抱いているようだ。
・もう2ヶ月ほど家族意外と顔を合わせた事は無い。
0180nobodyさん03/08/17 20:42ID:???
>>174ソケット使ってやるしかないですナァ…。
0181nobodyさん03/08/17 20:53ID:???
>>174
http://x68000.startshop.co.jp/~68user/net/
ここのサンプルはSocketモジュールを使ってるけど、
「サンプルがperl5専用なワケ」を読めば、すぐperl4対応
(->モジュール不使用)にできるはず。

しかし、なんでモジュールを使わずに?
■ このスレッドは過去ログ倉庫に格納されています