トップページ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
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

まず、ファイルを削除します。それから、ファイルの復旧を行って
オプションを、コメントなしに設定すると軽くなります。
0228nobodyさん03/08/18 18:56ID:???
>>223

板違いだから、WEB板へいけ。邪魔だ。消えろ!
0229nobodyさん03/08/18 18:57ID:???
>>226
そんなエレガントな(?)関数は無いよ。

sub touch ($) {
 local *FH;
 my $ret = open(FH, ">>$_[0]");
 close(FH);

 return $ret;
}
0230nobodyさん03/08/18 18:57ID:???
>>225
乱数を細かく設定するには、ファイルの削除で削除してから
設定します。
0231nobodyさん03/08/18 18:58ID:???
>>226

そのパソコンはできないんだよ。
初心者の質問は違うとこでやってね。迷惑。うざい!死ね!!
0232nobodyさん03/08/18 18:59ID:???
>>223
open FILE , ">$datafile" unless -e $datafile;
close FILE;

これで空ファイルつくるだろ。
0233nobodyさん03/08/18 19:03ID:???
>>228
>>231
もちっとましな物言い、できんのかよ…
自分らの書いたせりふ、声に出して言ってみ
0234nobodyさん03/08/18 19:03ID:???
>>225
なぜか面白いことがしたくなる…

@char = (0 .. 9, 'a' .. 'z', 'A' .. 'Z');
print join '' @char[ map(int rand @char, 1 .. 8) ];
0235nobodyさん03/08/18 19:04ID:???
おっと。コンマが抜けた。

print join '', @char[ map(int rand @char, 1 .. 8) ];
0236nobodyさん03/08/18 19:05ID:???
大文字は無しか…うぅ
@char = (0 .. 9, 'a' .. 'z');
0237あぼーんNGNG
あぼーん
0238あぼーんNGNG
あぼーん
0239nobodyさん03/08/18 19:09ID:???
>>225
こうだな

@char = (0 .. 9, 'a' .. 'z', 'A' .. 'Z');
print join '' @char[ while(int rand @char, ..) ];
0240あぼーんNGNG
あぼーん
0241あぼーんNGNG
あぼーん
0242あぼーんNGNG
あぼーん
0243nobodyさん03/08/18 19:28ID:???
>>205
newメソッドがないと
Can't locate object method "new" via package "Date::Simple"
とでるので、別の原因があると思われ。

Date::Simpleはpure perlだから、/Date/Simple.pmを探してみそ。
0244nobodyさん03/08/18 20:01ID:???
>233
荒らしは放置しる。
0245nobodyさん03/08/18 23:23ID:???
無知がこんどは糞7扱いか。
0246nobodyさん03/08/19 00:55ID:???
簡単なことだと思うのですが、
CGI(Perl)で、カレントディレクトリにあるHTMLを、
呼び出して、それをそのまま表示する方法が分かりません。
具具ってもなかなか見つからないので、お助け下さい。
0247nobodyさん03/08/19 01:08ID:???
>>246
(略)
if(!open(FILE,"file.html")){
print "Can't open\n";
exit(1);
}
undef $/;
$a=<FILE>;
print $a;
0248nobodyさん03/08/19 01:48ID:???
何故ぐぐっても分からないか。

・そんなことしても意味がない
・簡単すぎるから解説するまでもない
0249nobodyさん03/08/19 01:53ID:???
>>246
my $file = "hoge.html";
open(Fh, $file) or die "Could'nt open $file $!\n";
print while(<Fh>);
close(Fh);

Perlっぽく。
CGIならContent-typeとか、dieするとまずいとかあるから、注意。
0250nobodyさん03/08/19 03:43ID:???
>>249
ファイルハンドルは全て大文字で書かなくても委員会?
動作はするだろうがな
0251nobodyさん03/08/19 18:46ID:???
>>246

何故ぐぐってもわからない馬鹿が質問するか?

>>246 は生きる価値のないクズ!
>>246 は初心者で板違いの迷惑やろう
・早く死ね!

0252あぼーんNGNG
あぼーん
0253あぼーんNGNG
あぼーん
0254あぼーんNGNG
あぼーん
0255あぼーんNGNG
あぼーん
0256あぼーんNGNG
あぼーん
0257あぼーんNGNG
あぼーん
0258あぼーんNGNG
あぼーん
0259あぼーんNGNG
あぼーん
0260nobodyさん03/08/19 19:06ID:???
>>250
別に大文字じゃなけりゃいかんという決まりはなかったと思うが。
0261nobodyさん03/08/19 19:12ID:???
>>260
が、大文字でなかったために色々妙な動きをしてるやつがいたな。
意図していない動きをしているので、大文字でやっとけってことだよな。
大文字にしといたら、それがハンドルであることに気付きやすくなってちょっと幸せ。
0262nobodyさん03/08/19 21:49ID:???
大文字といっても、DATAなんかは避けといたほうがいいね。
別に使っても害はないけど、なんか気分的に。
0263nobodyさん03/08/19 22:14ID:IYLLDi9m
時差を修正するにはどうすりゃいいでつか?
ぐぐったけど、初心者なんで分からないでつ。
0264nobodyさん03/08/19 22:23ID:???

ここ大量のモロ画像とモロ動画がある!
びっくり・・・・・
http://vs2.f-t-s.com/~moemoe/index.html
0265nobodyさん03/08/19 22:26ID:???
>>262
FAIRUHANDORUとかがよろしい。
一目瞭然さ!
0266nobodyさん03/08/19 22:52ID:???
>>263
「perl タイムゾーン」
0267nobodyさん03/08/19 23:55ID:???
     ____
    /∵∴∵∴\
   /∵∴∵∴∵∴\
  /∵∴∴,(・)(・)∴|
  |∵∵/   ○ \|
  |∵ /  三 | 三 |   / ̄ ̄ ̄ ̄ ̄
  |∵ |   __|__  | < おい、誰かPerl教えろ!!
   \|   \_/ /   \_____
     \____/
0268nobodyさん03/08/19 23:55ID:???
     ____
    /∵∴∵∴\
   /∵∴∵∴∵∴\
  /∵∴∴,(・)(・)∴|
  |∵∵/   ○ \|
  |∵ /  三 | 三 |   / ̄ ̄ ̄ ̄ ̄
  |∵ |   __|__  | < パールだ!パール!真珠じゃねえぞ
   \|   \_/ /   \_____
     \____/
0269nobodyさん03/08/19 23:56ID:???
     ____
    /∵∴∵∴\
   /∵∴∵∴∵∴\
  /∵∴∴,(・)(・)∴|
  |∵∵/   ○ \|
  |∵ /  三 | 三 |   / ̄ ̄ ̄ ̄ ̄
  |∵ |   __|__  | < まずはパンチ5分の2な!
   \|   \_/ /   \_____
     \____/
0270nobodyさん03/08/19 23:57ID:???
     ____
    /∵∴∵∴\
   /∵∴∵∴∵∴\
  /∵∴∴,(・)(・)∴|
  |∵∵/   ○ \|
  |∵ /  三 | 三 |   / ̄ ̄ ̄ ̄ ̄
  |∵ |   __|__  | < おまえは5分の2、おれのケーキは5分の3な
   \|   \_/ /   \_____
     \____/
0271nobodyさん03/08/20 00:01ID:???
     ____
    /∵∴∵∴\
   /∵∴∵∴∵∴\
  /∵∴∴,(・)(・)∴|
  |∵∵/   ○ \|
  |∵ /  三 | 三 |   / ̄ ̄ ̄ ̄ ̄
  |∵ |   __|__  | < あと、イフとエルスとリリスとアダムも教えろよ!
   \|   \_/ /   \_____
     \____/
0272nobodyさん03/08/20 02:03ID:???
>>262
やっぱIN,OUTだな。ほとんど。
027320503/08/20 02:43ID:???
Date::Simpleについて質問した者だが、
実は mod_perl を使っていたんだが、
今日、mod_perl を外して、普通のCGIとして実行させたら、
Date::Simple の new メソッドが正常に動きました。

この場合、mod_perl が原因なのは明らかだが、
具体的に mod_perl のなにがおかしかったのかよくわかりません。
わかる人レスください、
0274nobodyさん03/08/20 03:55ID:LVmz2hpa
本を買ってきて見ながら勉強し始めたものです。
メモ帳に本のとおりにこのように書きました。
(長いので2回にわけます)
#!C:\Perl\bin\perl
$agent = $ENV{'HTTP_USER_AGENT'};
print "Content-type:text/html\n\n";
print "<html>\n";
print "<head>\n";
print "<title>環境変数</title>\n";
print "</head>\n";
print "<body>\n";
print "環境変数の取り出し\n";
print "<hr/>\n";
print "$agent\n";
print "</body>\n";
print "</html>\n";
exit;
0275続きです03/08/20 03:56ID:LVmz2hpa
上のものをftpソフトでアップすると、
「環境変数の取り出し」という文字はブラウザに表示されるのですが、
本に載っているような実行結果が出力されません。
(本にはMozilla/4.0(compatible〜...と載っています)
ブラウザのソースを見てみると
<html>
<head>
<title>環境変数</title>
</head>
<body>
環境変数の取り出し
<hr/>

</body>
</html>
とだけなっていて、空白のようです、
アドバイスお願いいたします、、
0276_03/08/20 04:08ID:???
http://homepage.mac.com/yamazaki8
0277nobodyさん03/08/20 04:11ID:???
#!C:\Perl\bin\perl

print "<hr/>\n";
0278_03/08/20 04:17ID:???
http://homepage.mac.com/yamazaki8/hankaku01.html
027927403/08/20 04:18ID:???
わー、書き間違えてました、
1番上は#/ur/local/bin/perlの書き間違いです
print "<hr />\n";これを取り外せばよいのでしょうか、
やってみます
0280nobodyさん03/08/20 04:41ID:???
print "<hr />\n";
これは単にタグがおかしいだけ。
028127403/08/20 05:02ID:???
FTPソフトがなぜか接続しました、のまま止まってしまって
やっとつながりました、遅くなりました、
やってみたのですがMozilla/4.0(compatible〜...と出てくれません、、
次のページのものはずらずらっと文字が表示されて成功だったのですけど、
1番最初のができないまま進めてしまってよいものなのかなぁ、、
寝て起きたらもうすこしやってみます、
>>227さん、>>280さん、お返事ありがとうございました
■ このスレッドは過去ログ倉庫に格納されています