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

CGIだけどなんか質問ある Pert 5.01

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん02/03/03 12:49ID:673UxTI5
print"くだらない質問はここにかけや!";

0554nobodyさん02/03/25 00:23ID:???
それにしても548はスキルも無い癖に
口の利き方が悪いな。
0555nobodyさん02/03/25 00:27ID:???
>551
利口になる気のない馬鹿は一生馬鹿だよ。
馬鹿が利口になるためには利口になろうと努力しないといけない。
0556nobodyさん02/03/25 00:35ID:???
>>538-555
自作自演に3000ムネオ
0557nobodyさん02/03/25 00:42ID:oozWjwB1
クッキーに初挑戦してまして、先ほどCGIでクッキー書き込み成功したんですが、
そのクッキーファイルを削除してもう一度実行したら書き込めなくなってしまいました。
その間、ちょこっとCGI自体書き換えたんですが、
print "Set-Cookie: ore_site_id=ore; expires=Thu, 1-Jan-2030 00:00:00 GMT;\n";
print "Content-type: text/html\n\n";
こんな感じで書き出してます。perlです。
何が原因だかさっぱりわからないので、ひょっとしたらスレ違い、
板違いになるかも知れないんですが、
何か原因思い当たる方いらっしゃいませんでしょうか。
宜しくお願いします。
055855702/03/25 01:12ID:???
自己レスです。なんだか激しく板違いだったようですが、ブラウザ再起動したら書き込めました。
0559hanamogera02/03/25 16:29ID:WG0pi2qc
http://www.sgmt.local/cgi-bin/develop/develop2.cgi
↑携帯用の掲示板スクリプト作ったんですが、
ログがある程度たまるとWAP2.0端末からアクセスできなくなるんです・・・
『接続できません。しばらくたってからリトライしてください。』って出るんです。
でも、Apacheのログにはエラーはありません。
WAP2.0端末はXHTMLを読むということだったので、XHTMLで記述してます。
Another HTML-link gatewayでチェックしてみたら、95点でした。
いったい何がおかしいんでしょうか?C5001Tで動作確認してます。
0560nobodyさん02/03/25 16:47ID:???
Perlで作るCGIを解説してるページで人気のページを教えてください。
0561nobodyさん02/03/25 16:49ID:PUm89G3u
Linux、Redhatでcrontabを使ってcgiを起動させたいんですが質問です。
cgi-binの中にproc.cgiというファイルを置いて、それをcrontabで動かしたいんですが
ファイル書き込みだけが出来ないみたいです。cgiの中身は
open(SDATA, "<sdata.dat")|| die "File 'sdata' Open Error.";
@a_sdata = <SDATA>;
close(SDATA);
この間で@a_sdataの中身を編集してます。
open(WDATA, ">kdata.dat")|| die "File 'kdata' Open Error.";
print WDATA @a_sdata;
close(WDATA);
print "@a_sdata\n";
こんな感じでファイルを読み込んで、編集して、別ファイルに書き込むというcgiなのですが、
ブラウザにアドレスを打って直接アクセスで起動するとファイルの書き込みは正常に終わり、
編集したデータが表示されます。
ですがcrontabから起動すると、編集したデータはメールになって送られてくるんですが、
ファイルへの書き込みがなされません。データファイルのパーミションは600でしたが
666に変更しても試してみました。cgiのパーミションは700と755で試してみました。
いずれもcrontabからではメールは届くので動いてはいるらしいんですがデータファイルが
更新されないんです。更新日時も変わってないです。
crontabからの起動では何か対策が必要なんでしょうかね?
ちなみにcrontabの記述は*/30 * * * * perl /cgi-bin/proc.cgiです
0562質問野郎02/03/25 16:49ID:???
ちょっと質問なのですが、ある企業のサイトのホームページの制作等をうけている
のですが、フォームCGIに不適切な動きが起きていて、大元のプロバイというか
サーバー屋に問い合わせてもちょっとわからないっていう返事なのですが……。
CMでもやっている有名なところです。

その部分が
<input type="hidden" name="ML_ADDRESS" value="送信先メールアドレス">
<input type="hidden name="Subject" value="Subject(タイトル)">
<input type="hidden name="ML_FROM" value="送り元メールアドレス">
ていうことなのですが、そのサーバー屋さんに問い合わせたところ、
ML_FROMの行のvalueを送り先メールアドレスと同じにしてください。といわれたらしい
んですが(私は間接的に聞いただけ。)
あと、その仕事をうけている企業はそのフォームが自分とこにメールがきたら
それを返信しようとすると、送り先が自分とこになるっていっているのですが
もちろん送り先と送り元のメールアドレスを同じにしたらそういうことが
起きると思うのです。ML_FROMは不特定多数であって
ここは変数か何かになって、CGI側で送り元をGetか何かで取得するもんだと
思っているのですがいかがですか?そのCGIは基本的にさわらせてもらえません。というか
そのサーバー独自のCGIです。よろしくお願いします。
0563nobodyさん02/03/25 16:55ID:???
>>562
悪文過ぎて意味不明。放置。
0564nobodyさん02/03/25 17:31ID:???
>560
ttp://tohoho.wakusei.ne.jp/
とりあえずここかな?

>561
メール送信処理の前に書き込み処理を入れて試してみたら?
書き込みの時点で失敗しているならそこでdieされるよな。
そこでメールを送るなら、メールの中にエラーメッセージを入れて確認するとか。

>562
もう少しわかりやすく。
0565562です。02/03/25 17:57ID:???
すいません。書き直します。
ある企業からホームページの制作をうけているものです。
その中にフォームメールを使うページがあってメール自体は
動くのですが、メールをうけている企業さんの話によると
その受けたメールを返信しようとすると宛先には
自分のメールアドレスになるんです。
Aさんが[email protected]ていうアドレスでフォームCGIを介して
その企業さんの[email protected]に送ったら
その企業さんはAさんに返信するときに
宛先が[email protected]になるところが、[email protected]になる
ていうことなのです。

この企業がアップしているサーバーの担当者に問い合わせてもわからないとのことです。
(このCGIはサーバーで提供されているCGIです。)

フォームメールCGIのCGIに変数を渡しているかと思われる部分は
渡されたマニュアルとサーバーの担当者の説明によると
<input type="hidden" name="ML_ADDRESS" value="送信先メールアドレス">
<input type="hidden name="Subject" value="Subject(タイトル)">
<input type="hidden name="ML_FROM" value="送り元メールアドレス"> で
ML_ADDRESSの行のvalueとML_FROMの行のvalueを同じにしてください。と
言われているのですが、それでいくと宛先がその企業さんとこになると思います。


ML_ADDRESSの行の送信先メールアドレスはこれでいくとその企業さんのメールアドレスで
検証してもあってるんですが、ML_FROMのvalueの部分はたぶん変数か何かになると思われるのですがいかがでしょう?

とこのような説明でよろしいでしょうか?

間接的に聞いてるというか間にひとつ会社がはさまってて直接ん、その企業さんの話を聞いている
わけでもなくサーバーにアクセスしてもそのCGIは当然見えないわけですが……。

もしかしたらこの説明でもやはりおわかりにならないかもしれません。
よろしくお願いします。
0566nobodyさん02/03/25 18:07ID:???
>>565
それSo-Netじゃないの?
書き方間違ってない?
そんだけ。

自作させたら?
0567562-565です。02/03/25 18:11ID:fNWLtbGz
So-Netじゃないです。
たぶんML-FROMの部分の行はエラーが起こった時に使うのかなぁ?と思われるのですが…

書き方はあってます。
056856102/03/25 18:23ID:PUm89G3u
>>564 どうも。メールの送信はcronがcgiで出力されたものを送ってくるだけ
なので最後の行のprint "@a_sdata\n";の内容がそのまま送信されます。
とくにsendmailとかはcgiの中には記述してないんです。
その@a_sdataの内容はちゃんとしてるにもかかわらずファイルの書き込みが
全然されないのはcrontabからの実行の場合だけなんです。
ファイル書き込みじにdieされてるとしたらprintされないと思うんですが
出力結果のメールは届くんです。
CGI直接起動ではうまくいくのにcrontabからだとうまくいかない、というのが
理解できないんです。何か対策方法ないでしょうかね?
056956002/03/25 18:51ID:???
>>564
ありがとうございます。
作ってる人は、とほほさんですね。
行ってきます。ありがとう。
0570nobodyさん02/03/25 19:13ID:???
>568
頭を柔らかくしろ。
俺は問題の修正方法を教えてるんじゃなくて、その原因究明の方法をいってるの。
ファイルのオープンが失敗したって、@a_sdataの内容が消えるわけじゃないでしょ?
だったらそれがそのままメールで送られてくる事に不思議はない。

そんな事よりも、メールの内容に$!を入れて何が起こってるかをまず把握しろ、と。
対策方法を考えるにはまず原因究明。
デバッグの基本。

対策方法の結果聞きたいだけなら、ソース公開しな。
0571nobodyさん02/03/25 19:30ID:???
CGIさん、最近モテなくなった?
PHPとかいうやつに、彼女取られてたね。
Cくんは、相変わらずさわやかで、もててるけどね。
057256102/03/25 19:36ID:PUm89G3u
>>570 どうも。
なるほど原因がわからないのに対策とってもその場しのぎでしかないすものね。
いろいろと試してみます。
0573nobodyさん02/03/25 19:44ID:???
>>571
でもCくん、臨機応変とか変幻自在とか、そういうわけにいかない魯鈍君だよね。
0574nobodyさん02/03/25 19:47ID:???
皆さん会社の上司に怒ったりしたことあります?
0575nobodyさん02/03/25 19:47ID:???
>571
CGIとPerlの違いわかってる?
0576nobodyさん02/03/25 21:01ID:???
>575
彼にとってPHPはCGIじゃないんだよきっと・・・
0577nobodyさん02/03/25 21:19ID:???
>>576
?
PHP=CGI?
0578nobodyさん02/03/25 22:34ID:???
>>577 多分コマンドライン版のPHPで作ったCGIなんだよ。
ApacheモジュールのPHPはCGIとは言わんもんな。
0579nobodyさん02/03/25 22:45ID:???
>>578
ありがとう。ひとつ勉強になった。
0580nobodyさん02/03/25 23:25ID:???
nph な仕事を貰いました。
200 OK とか,403 Forbidden とかまでも自前で出力するですな。
そこで問題なんスけど,お客様曰く「403 を出力するなら
apache のアクセスログに残るようにして欲しい」とのこと。
ンな事は可能なんでしょうか?
0581nobodyさん02/03/25 23:29ID:???
>>580
apachのerrordocumentは?
0582nobodyさん02/03/25 23:40ID:???
http://red.tomato.nu/desperado/software/
ここのYYBBS2iってありますよね。
説明が「KENT さん作の各種掲示板と連携のとれる i-mode 用掲示板」って書いてあるんですけど、
連携が取れるってどういう意味でなんでしょうか?ログの共有って意味なんでしょうか?
FAQも掲示板もないんで、サッパリ分かりません。どなたか知ってる方お願いします。
0583nobodyさん02/03/26 00:40ID:???
>>582
板違い
0584nobodyさん02/03/26 05:29ID:7ingtp1l
検索CGI作ってまして、質問なんですが、urlに検索文字列を
〜.cgi?value=アクション
と日本語を含めると挙動がおかしくなってしまいます。
ブラウザに直接入力すると上記の例の場合ちゃんと「アクション」と認識してくれるんですが、
CGIで書き出したhtml中のアンカータグからCGIを実行すると、上記の例だと
「ン」が化けてしまいます。
cgi内部もブラウザ表示もすべてEUCでやってるんですが、
何故このようなことが起こるのでしょうか?

それから、一般的な検索エンジンだと検索結果のurlには
エンコードした文字列がくっ付いてますが、このエンコードっていったいいつやってるのでしょう??
いったん検索文字列をCGIで受け取ってエンコードして、locationで飛ばしてるんでしょうか。
わざわざそんなことするのは上記の文字化けと関係あるんでしょうか。
宜しくお願いします。
058558402/03/26 05:50ID:7ingtp1l
一般的な検索エンジンうんぬんというのは勘違いでした。
あれはフォームだから僕の状況とは関係ありませんでした。
宜しくお願いします。
058658402/03/26 06:01ID:???
解決しました。urlに引数持たせる場合には自分でエンコードしないとならないんですね。
普通に解説サイトに書いてました。どうもすみません。てか、誰も見てないか..
0587nobodyさん02/03/26 06:56ID:???
sub text_read;
open(LOG,"<$logfile");
@log=<LOG>;
close(LOG);

foreach $line (@lines) {
の、
foreach $line (@lines) {はどういう意味なんですか?
配列として読み取った奴を$lineに何をしようとしてるのでしょうか?
0588nobodyさん02/03/26 07:28ID:7ingtp1l
@lineのすべての要素に対して処理をする>foreach
その後には$lineに対する処理が続くはずだけど、
それはつまり@lineの各要素に対して処理をしてることになる。
058958002/03/26 07:58ID:???
>>581
あっ (´ー`) どうもです
ErrorDocument は HTML や CGI が本当に 403 や 404 な場合に
自前の HTML が出力できて便利っすね。
ただ今回は NPH でいわば「嘘の」403 ステータスを出力して
且つ apache のログにも書き出したいということで・・・
むむ,一筋縄ではいかなさそうです・・・
0590オラなんも知らんけど02/03/26 08:58ID:???
Apache::Logは?
0591nobodyさん02/03/26 09:15ID:???
>>580
アクセスログじゃないけど、STDERR はエラーログ
に向かってない?
0592nobodyさん02/03/26 09:46ID:z9GSG5oT
log書き込みときに\nつけてるんだけど
そのlogをOPENしたときに\nもついてきてる。

OPENのときに\nを抹殺するにはどーすればいい?
0593nobodyさん02/03/26 10:11ID:???
chomp or tr/\015\012//d
059458002/03/26 10:27ID:???
>>589
>>590
どもです (´ー`)

Apache::Log 見てみたっす。なんか核心に迫ったような気が。

STDERR って CGI の場合はてっきり捨てられてるのかと思ってたけど
なんか apache の error.log に書き込まれるらしいっすね。
ttp://www.tt.rim.or.jp/~canada/comp/cgi/faq/
これが最適解なのかな?

いろいろ試してみます。ありがとうです。
0595nobodyさん02/03/26 10:33ID:F9zkDX+C
LocationがなぜかUPするとPrintになっちゃってます。。どうしたらいい?
0596nobodyさん02/03/26 10:55ID:???
>595
Content-typeを書いて、その後に空行を入れてからLocation書いてたりしない?
059759202/03/26 11:25ID:???
>>593

できました。 THX

これで吐き出すソースが少し綺麗になった〜
059858002/03/26 12:52ID:???
わかっちゃった!!
print "Status: 403\r\n";
print "Content-type: text/html\r\n";
(以下略)
これだけでちゃんと httpd.log にステータスが記載されるですな。
それに STDERR 出力を組み合わせれば error.log にも書き出されるんで最強。
NPH としてステータス吐かなくても良かったんですね。
考えてみれば無茶苦茶基本的なことでした。失礼しましたー。。。
059900000002/03/26 13:00ID:???
CGIでsendmailを使用しauの@Mailで受け取ると9時間遅れてるのですが、これどうしたら回避できるのでしょうか。
ご存知の方些細な点でもよろしいので教えてください。
よろしくお願いします。

因みにサーバー側の時間は確認済みです。
また、複数のsendmail使用のスクリプトで同じように遅れます。
さらに、PC上で受信した場合、Outlook Expressでは「受信時刻」はちゃんと正確な時間を表しています。
0600nobodyさん02/03/26 13:12ID:???
auに文句をいうのが一番いい案か?
まー、普通にDateヘッダの部分を書き換えるんだろうが。
0601599さん、ヘッダを見せてくれよ02/03/26 13:26ID:???
Date:     Tue, 26 Mar 2002 13:17:38 +0900
0602nobodyさん02/03/26 13:41ID:???
__END__ ←これって別に書かなくてもいいんだよね?
0603<DATA>使わないなら書かなくてもいいよ02/03/26 13:44ID:???
0604ななすぅい02/03/26 15:10ID:???
ある階層にあるディレクトリの名前を全部表示させたいんですけど、
どうしたらいいの?オシエテ。
0605nobodyさん02/03/26 15:22ID:???
$d = '.';
opendir(DIR, $d);
@dir = readdir(DIR);
close(DIR);

foreach (@dir) {
print "$_\n" if -d "$d/$_";
}
0606nobodyさん02/03/26 15:22ID:???
>604
opendirしてreaddirしてその中身からディレクトリだけ表示してclosedir。
0607ななすぅい02/03/26 15:39ID:???
>>605
>>606
ありがとうございます。
-dオプションがまだうまくいきません。
if -d "$d/$_";の部分です。
0608nobodyさん02/03/26 15:59ID:???
Jぽん位置情報扱えるcgiないですか?
0609ななすぅい02/03/26 16:44ID:???
うまくいきました。さすがです。
あとひとつおしえてください。
シンボリックリンクかどうかアレですが、「.」と「..」が入ってしまいます。
これを取り除きたいのですが、どうすればいいの?
0610nobodyさん02/03/26 16:54ID:???
>609
if
0611ななすぅい 02/03/26 17:18ID:???
if?
0612ななすぅい02/03/26 17:25ID:???
パターンマッチで解決しました。どうもでした。
061358702/03/26 20:43ID:???
>>588
ありがとうございました。
0614nobodyさん02/03/27 00:34ID:???
perlで掲示板スクリプトを作っています。
HTMLヘッダはsub headというルーチンをつくり

print "Content-type: text/html\n\n";
print <<EOM;
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=Shift_JIS">
<title>$main_title</title>
</head>
EOM

という中身です。
メイン画面、書き込み画面、エラー画面などHTML出力をするたびにこのヘッダを呼び出しています。
IEでは問題なく閲覧できるのですが、NN4.73がプレーンテキストとして出力を解釈しやがるのです。
すべてプレーンで解釈しやがるならContent-typeの指定ミスなのですが、メイン画面はHTMLとして、エラー画面はテキストとして読みやがります。

兄貴。NNの野郎にHTMLを叩きつけるにはどのような点を修正してスクリプティングすればいいのでしょうか。
0615nobodyさん02/03/27 00:43ID:???
>614
ttp://pc.2ch.net/test/read.cgi/php/1014556702/953-962n
0616nobodyさん02/03/27 00:49ID:???
>614
オマエのその価値のないソースを見ないとなんともいえないダロ!!
さっさとソースを見せろこのボケ!!
061761402/03/27 00:54ID:???
>>615
兄貴! さすがっす!
おとこ惚れっす! 穴貸すから思う存分使って欲しいっす!
0618nobodyさん02/03/27 03:51ID:???
>616
いつもその口調だねー
0619名無しさん02/03/27 05:40ID:J486qV1r
スレ違いならスマソ

現在、レンタルサーバーにhns-liteを入れようと格闘中。
/root
|
+--/htdocs <--- URI : http://www.****/
|
+--/cgi-bin <--- URI : http://www.****/cgi-bin/
|
+--/diary
|
+--/hns-lite
|
+--/lib
|

hns-lite/index.cgi
を実行するとエラーが出る

Can't locate CGI/QueryString.pm in @INC
(@INC contains: lib /usr/local/lib/perl5/i386-bsdos/5.00403
/usr/local/lib/perl5 /usr/local/lib/perl5/site_perl/i386-bsdos
/usr/local/lib/perl5/site_perl .)
at /usr/local/etc/httpd/vhosts/********/cgi-bin/hns-lite/index.cgi line 31.

つづく・・・
062061902/03/27 05:40ID:J486qV1r
続き

で、index.cgiのline31付近はこんな感じ

#!/usr/bin/perl
(中略)
use strict;
use lib qw(lib);
use CGI::QueryString; <-- line 31
use DateTime::Format;
use SimpleDB::Scalar;
....

で、肝腎のモジュールは全て
hns-lite/lib
以下に存在しているので、@INCにそれが入っていないと考えられたのだが・・・・

use lib qw(./lib)
use lib qw(./lib ./lib/CGI)
use lib qw(/usr/local/etc/httpd/vhosts/********/cgi-bin/hns-lite/lib/)
と色々変えてみたが変化無く、
push(@INC, )
unshift(@INC, )
もダメだった。

結局
require "./lib/CGI/QueryString.pm";
とするしかなかった。
でもこれだとHNS全体をこうする必要があり不可能。

いったいなにがわるいのでせうか?
062161902/03/27 05:44ID:J486qV1r
あんぎゃあ、ゾヌで書き込んだせいか、ツリー構造が崩れている(ToT

えっと、書きたかったのは、/cgi-bin 以下に diary と hns-lite があって、
hns-lite の中に lib があるということです。
062273602/03/27 10:17ID:???
qmailでDateの設定しない場合の仕様でした。
CGIスクリプトレベルでのよくわからないのであきらめます。
すいませんでした。
0623nobodyさん02/03/27 11:24ID:vf3Wej2o
なる。
0624nobodyさん02/03/27 12:24ID:W6jS6K5R
悩んでおります。
英語版のサイトを作ろうと思い、もともと日本語版サイトで使っていたプロバイダ
さん提供のアンケートフォーム用CGIをサーバーからもってきて、日本語で
表示が出る部分だけ英語に書き換えました。
(書き換えの時はDreamweaverで。シンプルテキストだと文字化けしたので)
それをftpでアップして、アンケートフォームとリンクさせたところ、正常に
可動しません。
そもそも、もとのCGIをそのまま別名保存してもういちどアップしてもうまくいきません。
CGIは何か特別なソフトで開いたほうがいいのでしょうか・・・。
それともMACの環境だからでしょうか...。
0625nobodyさん02/03/27 12:26ID:???
文字コード
0626nobodyさん02/03/27 12:33ID:W6jS6K5R
文字コードは、アンケートそのものはISOの英語コードにしています。
CGIのほうはもとがJcodeだったのでそのままです。
その不一致?

でも、英語アンケートフォームと今までの日本語版CGIを両方
使った場合、送信メールを受け取ることはできたんです。
(ただし送信確認画面で、日本語表記がでちゃう。送信ボタンなども
「送信」とでてしまうので、海外からだと正常に読めない)
0627nobodyさん02/03/27 12:35ID:GD/Jk18+
にょろ。
0628nobodyさん02/03/27 12:37ID:W6jS6K5R
そもそも、CGIってみなさん何で書いてるのでしょうか?
0629nobodyさん02/03/27 13:56ID:???
CGIを書く?コモンゲートウェイインターフェイスの仕様書?
そりゃテキストエディタじゃねーの?知らんけど。
0630nobodyさん02/03/27 14:21ID:???
Perlで。
という返答で正しいのか?
0631nobodyさん02/03/27 15:24ID:???
そもそもJcodeって何?
0632nobodyさん02/03/27 15:56ID:DnWVHvAA
数百件の検索にindexで検索するとスピードが遅くなるんでしょうか?
パターンマッチ使ったほうが良い?
0633nobodyさん02/03/27 16:00ID:Uk2UqleO
すみません。質問です。参考書に載っていたサンプルです。
年齢別リストを作るコードです。

@list = ( 20,25,24,32,28,20,28,24,20 );

foreach $fld ( @list ) {
$syukei{$fld}++;  #年齢をキーとして集計していく
}

print "<table border=1>\n";
print "<tr><th>年齢</th><th>人数</th></tr>\n";

foreach $key (reverse( sort( keys(%syukei) ) ) ) {
$cnt = $syukei{$key};
print "<tr><th>${key}才</th><th>${cnt}人</th></tr>\n";
}

上の3行目、$syukei{$fld}++; は、
$syukei{$fld} = $syukei{$fld} + 1 ですよね。この場合、
右辺の$syukei{$fld}には何が入っているのでしょうか。

お願いします。
0634nobodyさん02/03/27 16:15ID:???
>>632
perldoc Benchmark を見よ。

>633
質問の意味がわからん。
063563302/03/27 16:34ID:Uk2UqleO
すいません。ええとですね、
これはハッシュの勉強のところなんです。
値のグループ化というもので、社員の年齢ごとの
人数を集計するプログラムです。で3行目ですが、
$syukei{20} = $syukei{20} + 1 ですよね。
20をキーとしてそれに対応する値が右辺だということは
わかるのですが、右辺の$syukei{20}がわかりません。
これは何になるのでしょう。
0636nobodyさん02/03/27 17:00ID:???
print $syukei{20};
で表示されたものが何かを考えればぁ?(゚Д゚)
063763302/03/27 17:35ID:Uk2UqleO
すみません。何回も。
サンプルなので、$syukei{20}が3で、$syukei{25}が1というのは
わかっているのですが、それだと一番最初の右辺$syukei{20}が0で
ないといけないですよね。つまり、
$syukei{20} = 0 + 1 ですよね。これで20のvalueが1になりました。
二回目からは$syukei{20} = 1 + 1 というのも分かります。
で最終的に$syukei = 2 + 1 で3になります。
僕が分らないのは、最初の右辺$syukei{20}が0というのが腑に落ちない
のです。うまくいえないですけど助けてください。
0638nobodyさん02/03/27 17:49ID:???
$syukei{20} がはじめて出てきたときに 0 を勝手に入れてくれるんだよ。perlって便利だね。

と言うことでいかが?
# ほんとはちょっと違うけど。
0639nobodyさん02/03/27 17:55ID:???
>637
Perlでは初期化されてない変数は空文字になる。
数式で使うと0として扱われる。
064063302/03/27 18:28ID:Uk2UqleO
みなさん、ありがとうございます。
自分も変数の初期値が0というのは知っているのですが、
こに場合はハッシュだから、どうなのかなと思っていました。
いわゆるハッシュ変数という奴なのですね。オライリーの
初めてのPERLを読んで何となくわかりました。これは今読んでる
初級本をクリアしてから読もうと思っていたのですが、けっこう
いいですね。
0641nobodyさん02/03/28 02:54ID:9oC7jnq/
すみませんがご教授下さい。
rand関数がありますが、
たとえば $x = rand(6); $y = rand(6);
とした場合に僕の希望としては
それぞれに異なる結果を出したいのですが、
実際には $x,$y 共に同じ値になってしまって困っています。
サイコロで言えば二つを何度振っても
同じ数字が出続けるような物です。
何卒アドバイスを宜しくお願いします
0642>>64102/03/28 03:05ID:???
同じになりませんが何か?
0643>>64102/03/28 03:21ID:???
srandを複数回呼び出すような馬鹿なことはしてないだろうねぇ。
0644Dream ★02/03/28 05:23ID:???
>>643
じゃなくて、srand必要なバージョンのPerlなのに呼んでいないんじゃないの?
0645nobodyさん02/03/28 10:10ID:KXdiu3Az
パーミッション設定
666−606 755−705とかで何か変わりますか?
以上にスレッドが重たいので困っております。何か良い方法ないでしょうか?
0646nobodyさん02/03/28 10:13ID:???
>>645
あなたと同じグループの人が読めなくなる書けなくなる実行できなくなる。
0647nobodyさん02/03/28 10:30ID:KXdiu3Az
>>646
ありがとうございます。CGIのスレッド設置したのですが
凄く重たいのですが何か良い方法ないのですかね。
改善できることはしたいのですか・・
0648nobodyさん02/03/28 10:47ID:???
>>647
意味のわからんことをさっきから。
Web制作にCGI設置用のスレがある。ここはお前のようなコンシューマーの来るところではない。帰れ。
0649nobodyさん02/03/28 13:11ID:???
>>647
そんな事もわからないスキルの人間に
教えた所でできないんじゃない?
0650nobodyさん02/03/30 22:08ID:???
>>647
ソースの中に nph- という文字列があれば、ファイル名の先頭に
nph- と付け加えてみる、というか、サーバーを替えたらどうですか?

それか、同じ団体のアカでも新しくもう一つ取れば、もしかすると
空いてるホストにあたるかも知れません・・・が、余りオススメしませんね。
しかし、軽い CGI に替えるのが一番効果的でしょう。
0651nobodyさん02/03/30 22:18ID:???
>647
共用サーバーは重いです。
専用サーバーを借りましょう。
ちゃんと保守までしてくれるところを。
そうすれば軽くなります。
0652nobodyさん02/03/31 07:56ID:???
権限がnobodyのファイルやフォルダを、一覧で選択して消せる
スクリプトを配布してるサイトがあれば教えて頂けませんか。
0653nobodyさん02/03/31 08:51ID:???
>>652
作れば?
0654厨房ですよ02/04/01 00:33ID:???
大変厨房な質問申し訳ありません
ActivPerl+win2kで-cwチェックに通ったPerlのCGIをサーバーにあげたところ500エラーが出ました。

何が問題なのかと、hKCatchをつかってみると
[hogehoge.cgi:2:die] (eval 1) has too many errors. > use KCatch qw( source execdata );__DATA__
という箇所でdieしていました。他はwarnだけでdaiはありません。

has too many errorsをgoogleってみたところ2chの別スレで「perl4じゃ?」という発言を見つけました。しかしuseを使えているということはperl4ではないはず。
何が問題なのでしょうか。
■ このスレッドは過去ログ倉庫に格納されています