トップページ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
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対応
(->モジュール不使用)にできるはず。

しかし、なんでモジュールを使わずに?
0182nobodyさん03/08/17 20:58ID:qWovZd+9
>>179
まぁまぁ、そう自己紹介しなさんな。
0183nobodyさん03/08/17 21:17ID:???
>>128
ネタはマジレスの前にしましょう。
0184nobodyさん03/08/17 23:06ID:???
#!/usr/local/bin/perl
require './cgi-lib.pl';


%form = &read_input('euc');
$name = $form{'name'};

print "Content-type: text/html\n\n";
print "<html><head><title>結果</title></head><body>\n";
print "<p>名前:$name</p>\n";
print "</body></html>\n";

↑のようなスクリプト作ってANHTTPDを起動し、
実行しようとしても「サーバーがみつかりません」が表示されます。
何がいけないんでしょうか?
0185nobodyさん03/08/17 23:06ID:???
IO::File の使い方教えてください
日本語で解説してある際とがぜんぜんないもんで。

use IO::File;
my $fh = new IO::File('log.dat','r'); #読み込み
my $fh = new IO::File('log.dat','w'); #書き込み
my $fh = new IO::File('log.dat','r+w'); #両方

などでオープンできるとこまではわかったんだが、
このファイルから全部読み込む場合にはどうしたらいい?

my @array = $fh->read;   ← こんな感じでよいのかい?

あと、書き込むときは

$fh->print('文字列');

で、可能みたいなんだが、英語が四面からわからん。
0186nobodyさん03/08/17 23:18ID:???
>>184
perlコーディングとは「全く」関係無いですね。そのエラーから「推測」すると、
あなたのクライアントからサーバーが見れていないようです
0187nobodyさん03/08/17 23:20ID:???
> で、可能みたいなんだが、英語が四面からわからん。

こんな事言う様じゃ解答する気になれないな。
これを機会に読めるように辞書片手に必死こいて読んで見たら?

解答者の中にはそうやってスキルとか知識身につけてる人もいるんだから
0188nobodyさん03/08/17 23:32ID:???
>>184
httpdの設定を確認汁。
0189nobodyさん03/08/17 23:51ID:???
>>186,>>188
回答ありがとうございます。
でもANHTTPDは「CGIを実行する」にチェックが入ってます・・・
019013903/08/18 00:10ID:???
>>181
仕事でパッケージ化するかもしれないといわれたので、
完全オリジナルでなかったら何かと問題が出るかと思い、
質問させていただきました。
もともとは趣味で作ってたものなので。

標準モジュールは使っても問題ないのでしょうかねぇ、、、
0191nobodyさん03/08/18 00:34ID:???
>>189
どっちにしてもさっきのソースとは関係なし
ANHTTPDがちゃんと動くことを確認してから質問せよ
0192nobodyさん03/08/18 00:47ID:???
>>189
そもそもCGI以外はどうなのか。閲覧可能なのか。
0193nobodyさん03/08/18 01:29ID:???
>>189
板違いだ!ヴォケ!!二度と質問するな!クソ坊主!!
0194nobodyさん03/08/18 01:32ID:???
>>139
できねーっていってんだろ!馬鹿!!
おまえみたいなよく読まない奴は、うざいからさ。とっととどっか行ってくれない?
まじに迷惑なの、わかんない??
0195あぼーんNGNG
あぼーん
0196あぼーんNGNG
あぼーん
0197あぼーんNGNG
あぼーん
0198あぼーんNGNG
あぼーん
0199あぼーんNGNG
あぼーん
0200あぼーんNGNG
あぼーん
0201あぼーんNGNG
あぼーん
0202あぼーんNGNG
あぼーん
0203nobodyさん03/08/18 05:32ID:???
>>174
getprotobyname
gethostbyname
socket
bind
connect
これらを使えばOK
0204nobodyさん03/08/18 05:42ID:???
bindはいらないと思う。
0205nobodyさん03/08/18 06:19ID:???
Date::Simple という、
日付のチェックを行う便利なライブラリがあったので
インストールしたんですが、なぜか使えません。

my $date = new Date::Simple(1999,12,31);

を実行すると

Undefined subroutine

というエラーが出ます。new関数が定義されてないとか言われ増す。ためしに

print $Date::Simple::VERSION;

とやってみたら、ただしく 1.03 と表示されたので、
ライブラリのパスが間違っているとかそういうことはないと思うんですが、
どうやったら使えます?
0206nobodyさん03/08/18 09:22ID:???
>>204
理由は?それに、「思う」とか不確実な表現されても理由も書かないんじゃ全然説得力無い
0207nobodyさん03/08/18 09:38ID:???
>>206
TCPクライアントなら必要なし。
http://www.kt.rim.or.jp/~ksk/sock-faq/unix-socket-faq-ja-3.html#ss3.6
http://www.kt.rim.or.jp/%7ekbk/perl5.005/perlipc.html#Internet_TCP_Clients_and_Servers
0208nobodyさん03/08/18 11:11ID:rz7xuT5a

if($ran==6)
だと6の時という事ですが、
6以外と指定するのはどう書くんですか?
0209nobodyさん03/08/18 11:12ID:???
>>208
http://www5a.biglobe.ne.jp/~n_rieko/perl/5.htm
0210nobodyさん03/08/18 11:31ID:???
>>205
エラーの原因はそれだけでは分からんが、
Date::Simple の最新版は 2.04 だね。
http://search.cpan.org/author/JTOBEY/Date-Simple-2.04/
0211nobodyさん03/08/18 12:12ID:WxMQyRS0
設置が超簡単で商用OKのスクリプトを開発中

スクリプト1個でblogを作るスレ
http://s37.1000gex.net/test/read.php/pc/1061132998/

・2chブラウザはこちら

スクリプト1個でblogを作るスレ
http://s37.1000gex.net/test/read.cgi?bbs=pc&key=1061132998

0212nobodyさん03/08/18 12:48ID:???
>>211ブラクラ
0213nobodyさん03/08/18 12:48ID:???
>>211
1000gex って糞7じゃねーか
0214nobodyさん03/08/18 13:06ID:???
うちの2chブラウザだと、
http://s37.ポン既知/test/read.php/pc/1061132998/ と表示されますが何か?
0215nobodyさん03/08/18 13:19ID:???
>>206
ワラタ 死ねや厨房
0216nobodyさん03/08/18 13:31ID:???
>>215↑糞7?
0217nobodyさん03/08/18 14:27ID:PgjPpzIP
>>206
普通にキモイと思います。多分伊達眼鏡とかかけてる人。
0218nobodyさん03/08/18 14:35ID:???
>>205
useしてる?

・・・してないわけないか。
0219nobodyさん03/08/18 14:48ID:OsKLKOac
ちょうド素人でスマソ
重いPerl製CGIをサーバーに置こうと思ってるんですが、
少しでも動作を軽くしようと思っています。
そこでききたいのですが、Perlのコメント部分を全て消して余分な部分を少しでも減らしたら少しでも軽くなるでしょうか?
コメントを消したりしたら軽くなる、ってはなし聞いたことないんですが、実際のところはどうなんですか?
一応、少しだけでも軽くなれば目標達成なので。
0220nobodyさん03/08/18 14:50ID:WxMQyRS0
2行目にexit;って入れたら最速になるぞ
0221nobodyさん03/08/18 14:56ID:???
>219
ナノ秒やピコ秒単位でなら早くなるかもね。
0222nobodyさん03/08/18 16:47ID:???
>>217糞7?
0223nobodyさん03/08/18 18:35ID:???
perlでファイルを新規作成するにはどうしたらいいのでしょうか?
書き込み時にファイルが存在しないとファイルが作成されるのは知ってるのですが、

unless (-e $datafile){
    <unlinkの逆> $datafile;
};

をやりたいのですが。。。
0224nobodyさん03/08/18 18:44ID:P7pot7R5
>>223
touch ちんこ
0225nobodyさん03/08/18 18:47ID:???
乱数の生成は分かるのですが、
パスワードの生成(しかも、使える文字は[a-z0-9]で大文字はなし)が
どうすればいいのでしょうか?
022622303/08/18 18:49ID:???
>>224
すいません。perlからunixのコマンド起動できないんです。。。
0227nobodyさん03/08/18 18:54ID:???
>>219

まず、ファイルを削除します。それから、ファイルの復旧を行って
オプションを、コメントなしに設定すると軽くなります。
■ このスレッドは過去ログ倉庫に格納されています