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

Perlコーディング初心者質問スレ Part 50

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2006/06/26(月) 00:46:38ID:???
Perlのコーディングで困ってる人のスレです。

【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
「コマンドの意味がわかんない」とかはマニュアル見ましょう。
回答者さんは何でも屋じゃありません。

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

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

過去ログやお勧めサイトは >>2-10
0715nobodyさん2006/07/19(水) 02:04:47ID:???
>>713
$mon は "11月" じゃなくて "11ヶ月目" なんだろ? +1する必要なんてない。
まあ $day を -1 してる (らしい) のはよかったと思うよw
07167062006/07/19(水) 02:12:29ID:aJ2dkknB
>>714
なんかおかしいな〜と思ってずっとカレンダー見てました
ようやく謎が解けましたw
ありがとうございます

ただ>>711のようにすると100年を超えると解がヌルになるようです

$a = 31536000000;
($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = gmtime($a);
$year = $year-70;
$mday = $mday-1;
print $year."年".$mon."月".$mday."日".$hour."時".$min."分".$sec."秒";

ヌルにしないためにはどうすればいいっすか?
0717nobodyさん2006/07/19(水) 02:19:09ID:WORWfBlM
CGI::Liteを使ってFormからファイルをアップロードするCGIを作っています。
この際、ファイル名にタイムスタンプがついて1153238735__photo.jpgというようになりますが、
この「__photo」の部分を取って「1153238735.jpg」にする方法は無いでしょうか?
Content-dispositionのヘッダを使えばいいらしいですが具体的な方法が解りません。
よろしくお願いします。
0718nobodyさん2006/07/19(水) 02:20:38ID:???
>>716
▽2038年問題
http://ja.wikipedia.org/wiki/2038%E5%B9%B4%E5%95%8F%E9%A1%8C

まあ、そんな気になるなら一定の年数分の時間を最初に引いておけば?
0719nobodyさん2006/07/19(水) 02:25:04ID:???
>>717
rename すればw
07207062006/07/19(水) 02:33:21ID:aJ2dkknB
>>718
わかりました
0721nobodyさん2006/07/19(水) 13:05:06ID:???
コーディングではないのですが、
SSIをmod-perlで動かすにはどうしたらいいんでしょう?
CGIからmod-perl移行時にindexページはindex.html(SSI)からindex.cgiになるように設定したんですが、
GoogleのページランクとかもあるのでSSIを使いたいんですが、、
mod-perlに移行したらSSIが全く効いていないんです(-o-;
呼び出すperlがindex.plだとしたら、それ単体では問題なく実行されるんですが。。
0722nobodyさん2006/07/19(水) 13:13:26ID:???
ぐぐれかす
http://www.google.co.jp/search?hl=ja&q=perl+SSI+mod_perl&lr=lang_ja
0723nobodyさん2006/07/19(水) 13:57:04ID:???
>>722
さんくすこ
0724nobodyさん2006/07/19(水) 19:58:46ID:???
>>716
gmtimeとかって普通に現在時刻+αぐらいを扱うためのものだから、
100ねんとか、それ以上のことやろうとしてるんだったら、
自分でなんか作ったほうがいいと思う・・・
0725nobodyさん2006/07/19(水) 20:00:25ID:???
つ DateTime::Calc
0726nobodyさん2006/07/19(水) 20:03:34ID:+wpVYCo5
perlCGIでIEとIE以外のブラウザで条件分岐をして別のHTMLを渡したいです。
$ENV{"HTTP_USER_AGENT"}
この中の文字列を正規表現とか掛ければいいのでしょうか?

$ENV{"HTTP_USER_AGENT"} =~ /internet explorer/i;

で大丈夫でしょうか?自分はIE6ですので他のバージョン確認できませんので宜しくお願いします
07277262006/07/19(水) 20:05:37ID:+wpVYCo5
まちがえました。

$ENV{"HTTP_USER_AGENT"} =~ /IE/;

これでいいのでしょうか?ちなみにOSは虫です。
0728nobodyさん2006/07/19(水) 20:17:07ID:???
>>726
自分のPCなら火狐とかモジラとかオペラとかインストールして
実験すれば?
あとは、自分のページの中で一番アクセスのあるページでユーザエージェントを記録して、
どういうブラウザのアクセスがあるか観察して判断
07295712006/07/19(水) 20:40:38ID:+wpVYCo5
>>728
この雰囲気からすると、そんな簡単なIEとそれ以外の判別方法は存在しないということでしょうか。
確かに今後IEという文字が入るIE以外のブラウザが出る可能性もありまよもんね。

なかなか制作側には不便な環境なんですね。
レスありがとうございました。
もう少しだけ粘ってみます・
0730nobodyさん2006/07/19(水) 20:47:29ID:???
"MSIE"が含まれてるならIEと判断しちゃっていいんじゃないかな
今のところ、User-Agentに"MSIE"が含まれる一般的なブラウザはIEだけ。
07315712006/07/19(水) 20:48:27ID:+wpVYCo5
http://www.futomi.com/lecture/env_var/http_user_agent.html

これで行こうと思います。
728さんもよければ参考にしてください。
それでは失礼します。
07325712006/07/19(水) 20:50:23ID:+wpVYCo5
>>730
どうやらOperaが危ないようです。

$ENV{"HTTP_USER_AGENT"} =~ /MSIE/ and $ENV{"HTTP_USER_AGENT"} !~ /Opera/;

これで90%程度はいけるのではないかと思いますが。
0733nobodyさん2006/07/19(水) 21:00:22ID:PWLYocjq
-wって使ってみました。膨大な数の

Use of uninitialized value in substitution (s///)

というエラーが出ました。例えば下記の場合、@_が問題っぽいんですが、
どのように直したらいいでしょうか。

sub reformat_date {
my %args = (date => '', @_);
my $tmp = $args{'date'};
$tmp =~ s/(\d\d\d\d)(\d\d)(\d\d)/$1-$2-$3 00:00:00/;
return $tmp;
}
0734nobodyさん2006/07/19(水) 21:04:25ID:???
宣言しただけで値が格納されていない変数に対して値を読み込もうとしたからです。
07357282006/07/19(水) 21:13:16ID:???
>>731
なるほど、参考になりました(ぉ
0736nobodyさん2006/07/19(水) 21:21:25ID:???
&reformat_date('20060719') ;
してるものと仮定して。
my %args = (date => $_[0] );

つかこれだけだったら、%args てまったくの無駄なんだけど…
で、入力は何?
0737nobodyさん2006/07/19(水) 21:22:42ID:???
入力フォームからpostで次のページにデータを渡して移行した後、
ブラウザの「戻る」を押すと、入力フォームにデータが残ってる状態です。

二重のpostを防ぐために、postした後、戻るを押すと、
「ページの期限切れ〜」みたいな表示にする方法は無いんでしょうか?

0738nobodyさん2006/07/19(水) 21:23:48ID:???
だけどサーバー側でブラウザ判断する必要があることってそんなあるのかな?
0739nobodyさん2006/07/19(水) 21:26:12ID:???
>>737
その工程は二重投稿と言わないようなw
07407332006/07/19(水) 21:34:01ID:???
どうもです!入力は736のような感じです。名前付引数に統一した関係で、
こういうシンプルなのも%argsになってます。736さんのように変更してもだめでした。

ていうか、全く同じ関数をテスト用のシンプルなコードに書いたら
エラーがでませんでした。-wは呼び出し元との兼ね合いでもエラー出すんでしょうか。
0741nobodyさん2006/07/19(水) 21:36:59ID:???
>>740
reformat_date( date => $hoge )
とかやってて、$hoge が未定義(undef) なんじゃないの?

$tmp =~ s/(\d\d\d\d)(\d\d)(\d\d)/$1-$2-$3 00:00:00/ if (defined $tmp);
とかにしてみればどうよ
07427332006/07/19(水) 21:37:48ID:???
すいません、736さんので改善されてました!失礼しました。
07437332006/07/19(水) 21:43:08ID:???
741さんのおっしゃる通りでした!
呼び出し側が場合によって未定義のときがあったのが原因でした。
てっきり、字面だけでデバッグされているのかと勘違いしてましたので
呼び出し側をチェックしてませんでした。
ありがとうございました!
0744nobodyさん2006/07/19(水) 21:45:46ID:???
>>738
なに言ってんだ?
「そんなある」「そんなない」
恐ろしくどうでもよくね?
0745nobodyさん2006/07/19(水) 22:22:19ID:???
>>737
pragma no-cacheあたりで検索

まあ、そういう仕様の板が便利かどうかは微妙な気もするけど、
むしろ、パスワードで削除機能とかの方がエレガントなような・・・?(作るのはめんどくさいけど
0746nobodyさん2006/07/19(水) 23:49:53ID:???
>>745
答えるなら最後まで答えてやれよ。
なんか見てて気持ち悪いわ。
0747nobodyさん2006/07/20(木) 00:14:49ID:???
print "content-type:text/html\n";
print "pragma:no-cache\n\n";
とかこういうこと?それともパスワード機能の実装の仕方自体語れってこと?
後者だったら拒否w
0748nobodyさん2006/07/20(木) 00:42:07ID:EXDq6RmQ
すみません、初心者の質問なんですが

sub main{
  local @tmp = ("aa","bb");
  print "$tmp[0]"."  "."$tmp[1]\n";
  &subroutine(\@tmp);
  print "$tmp[0]"."  "."$tmp[1]\n";
}

sub subroutine{
  local $tmp = @_[0];
  $tmp = ("cc","dd");####################################
  print "$tmp->[0]"."  "."$tmp->[1]\n";
}

というコードを書きました。
しかし#############の行でエラーになってしまいます。
要するにmainルーチンから@tmpのポインタを送ってサブルーチン側では@tmpに("cc","dd")を代入したいのです。

サブルーチンで
$tmp->[0] = "cc";
$tmp->[1] = "dd";
とやれば済むのですが、こうではなくて = ("cc","dd")という風に代入したいのです。(実際はsplitとかを使って代入するから)ポインタを使ってどういう風にしたらよいかわかりません。ご教授おねがいします。
0749nobodyさん2006/07/20(木) 00:48:05ID:???
sub subroutine{
 @{ $_[0] } = ("cc", "dd");
}
こういう事?

他の部分に関してはつっこんだら負けかなと思っている
07507482006/07/20(木) 00:50:00ID:EXDq6RmQ
>>749
即レスありがとうございます。
そのようにやったらできました、ありがとうございました!
0751nobodyさん2006/07/20(木) 02:46:41ID:???
>>749
超能力者か!?
0752nobodyさん2006/07/20(木) 03:30:07ID:???
>>751
お前の考えてる事も全部まるっとお見通しだ! 「セクロスシテー」「カネホシー」「ハタラキタクネー」だろ!
0753nobodyさん2006/07/20(木) 08:26:39ID:???
>>752
違うよ。
「あぁ。ねれねぇ。明日起きれるかな・・・・・」
だよん
0754nobodyさん2006/07/20(木) 09:22:01ID:???
朝っぱらから明日の心配イクナイ
0755nobodyさん2006/07/20(木) 09:42:37ID:???
while(@row){substr $_,0,-1} if $754 == 1
0756nobodyさん2006/07/20(木) 11:10:49ID:OwGfxror
test.cgiとaccess.cgiがありまして。
test.cgiが呼ばれたときにtest.cgiの中で、まず初めにaccess.cgiを起動実行させてから
test.cgiの本処理に映りたいのですがさすがに無理でしょうか?

access.cgiはgif画像を一つ返してくるだけです。
07577562006/07/20(木) 11:37:22ID:OwGfxror
# ユーザ・エージェント オブジェクトを作成
use LWP::UserAgent;
my $ua = new LWP::UserAgent;
$ua->agent('AgentName/0.1'.$ua->agent);
# リクエストを作成
my $req = new HTTP::Request(POST => 'http://hoge.com/access.cgi');
$req->content_type('application/x-www-form-urlencoded');
$req->content("id=get");
# ユーザ・エージェントにリクエストを渡し、返されたレスポンスを取得
my $res = $ua->request($req);
# print $res->is_success;

昔作ったCGIから拾ってイジッテいちおうこれで呼び出しはできたのですが、
access.cgiに自分のとは違うIPが記録されてしまうようです。

アクセス管理CGIの都合上できればIPが別のものになってほしくないんです。
また、できればネット経由でない方法で呼び出せればと思ったのですが。
cron使用の呼び出しと同じような感じができて、さらにIPが自分のものか127.0.01とかなら最高なんですが。

どうぞ玄人の方お助け宜しくお願いします。
0758nobodyさん2006/07/20(木) 11:47:34ID:???
hoge.comを勝手に使わないように。攻撃依頼で削除申請するか?
0759nobodyさん2006/07/20(木) 12:01:19ID:WCdGbBzj
linux上のperlで書いたCGIから、majordomoの設定ファイル(majordomo.cf)にアクセスさせようとしています。
ところが、openでエラーになります。

majordomoのファイルが

オーナー:mail
グループ:deamon
属性:777

なのが原因だと思うのですが、このファイルを上記条件から書き換えるようにするには、cgiのプログラム
からどのようにしたら良いでしょうか?
0760nobodyさん2006/07/20(木) 12:12:22ID:???
777で開けないなんて普通はないんだがな。openがエラーになってるとわかってるなら
$!の値も示せよ。
07617562006/07/20(木) 12:13:08ID:OwGfxror
誰もわかりませんでしょうかm(__)m
0762nobodyさん2006/07/20(木) 12:16:44ID:???
>>758
その理屈ならYAHOOは死刑になっちゃいそうな勢いだな。
あんな有名なサイトが無許可で他人のサイトのアドレスを晒しまくって。
とりあえず削除申請してこいよ。
07637562006/07/20(木) 12:24:17ID:OwGfxror
>>762
荒れるから止めて欲しいのですm(__)m
私あてのレスです。
本人である私がスルーしてるのですから、察してくださいませんか。

宜しくお願いします。
0764nobodyさん2006/07/20(木) 12:35:40ID:???
>>756
system('perl access.cgi');とか?
というか、そのaccess.cgiの返してくる画像は必要なんですか?
画像だけが、必要なら<img src="access.cgi">とか?
でも、そのくらい知ってそうっていう雰囲気ですよね・・・・・・・・
なんだろう・・・
07657562006/07/20(木) 12:46:10ID:OwGfxror
>>764
言葉足らずだったかもしれません。ごめんなさい。
access.cgiはアクセスログを取っていくcgiなんです。
test.cgiは今仮で作ってるアクセス解析cgiなんです。

test.cgiからaccess.cgiを呼びたいのは最新の情報を読みたいからなんです。
つまりaccess.cgi直後のaccess.logが一番精度が高いわけです。

秒単位で誰がどこにいるかを表示してますので意外と重要なのです。
ですからaccess.cgiからの戻り値はまるでいりません。
要はaccess.cgiに処理をさせればいいだけなんです。
それこそ最悪access.cgiの中身をtest.cgiに書いて解決です。あまりにひどい決着ですが。
返してくるgif画像自体はまるでいりません。

長文すみません。ご飯を食べてまいります。
0766nobodyさん2006/07/20(木) 13:09:01ID:???
架空のドメインを例示するときは予約されているexample.comとかexample.jpにするべきだと思うよ。
07677562006/07/20(木) 13:10:51ID:OwGfxror
>>766
exampleですね。ありがとうございます。
以後そういたします。
0768nobodyさん2006/07/20(木) 13:13:04ID:???
access.cgiの内容をモジュールにして両方から呼び出せるようにすりゃいい
その前になぜかむかつくんだがなんでだぜ?
0769nobodyさん2006/07/20(木) 13:20:02ID:???
しかもh○ge.comって実運用されてるんだからさぁ。
07707592006/07/20(木) 13:32:32ID:WCdGbBzj
$! は Permission Denied です。

権限の問題だと思うのですが・・・どうすれば処理できるでしょうか?
07717562006/07/20(木) 13:32:50ID:OwGfxror
>>768
呼び出したいがためだけにaccess.cgiに手を加えるのは避けたかったです。
他のケースのときでも全部そうなってしまうのは愚の骨頂みたいに思ってましたが
その認識が間違ってるのですかね。

ちょっとガッカリです。
0772nobodyさん2006/07/20(木) 13:37:48ID:???
requireじゃいけんの?
0773nobodyさん2006/07/20(木) 13:38:45ID:???
>>770
ファイル自体が777なのでそれは問題ないと思うから経由するディレクトリだろうな。
どういう風にパス指定しているのかは知らないが関係するディレクトリを全部確認してみ。

0774nobodyさん2006/07/20(木) 13:40:32ID:???
>>732
ちょい亀レスだがOpera10から完全にIEに偽装する機能が実装されてるよ
0775nobodyさん2006/07/20(木) 13:44:36ID:???
>>774
へぇ。Operaは何がしたいんだろう・・・・
そもそも偽装するなよって話だよな。製作者への嫌がらせとしか思えない。
製作者協会とかあればなぁ。ふざけた実装を排除していけるのに。

>>768
まあまあ。今日はなかなかすごしやすい気温なんだからおっとりしようぜ
0776nobodyさん2006/07/20(木) 13:46:18ID:???
>>775
逆にagent調べてIEじゃないってだけで門前払いなサイトもよくあるわけで、
どっちもどっちだね。
0777nobodyさん2006/07/20(木) 13:48:44ID:???
なんか俺がガッカリされたみたいだ・・・(´・ω・`)
07787562006/07/20(木) 13:55:49ID:OwGfxror
>>777
いえ、それは勘違いですよ・・・(´・ω・`)
0779nobodyさん2006/07/20(木) 13:58:35ID:???
XHTML+CSSで凝ったサイト作ろうと思ったことある奴なら
UAにIEを含んだらヤフにでも飛ばしたろとか思ったことあるはずだ
0780nobodyさん2006/07/20(木) 14:05:54ID:???
>>776
違うよ。
>>779
ん?なんか変だぞ?
そもそも「XHTML+CSSで凝ったサイト作ろうと」ってのがどうなんだろうか。
XHTMLやCSSは目的を果たすための一つの手段に過ぎないというのに、
その手段を目的としてるということは、何かを伝えたいんじゃなくて、使いたいだけという可能性もあるな。
それこそIEの挙動なんて無視すればいいじゃない。使いたいだけなんだから。

なんちゃって。人間がそれほど単純なら苦労はないよね。
やっぱり制作協会ってのがあればいいと思うんだよな。
0781nobodyさん2006/07/20(木) 14:08:55ID:???
なんか俺が勃起したみたいだ・・・(´・ω・`)
0782nobodyさん2006/07/20(木) 14:10:18ID:???
>>765
access.logの内容はIPとかUAとか時刻とかがずらずら並んだ状態ですか?
もしそうだったら、別にいつ読み込んでも、新鮮とか新鮮じゃないとか
関係ない気がしますが・・・
それとも、なんか特殊な、フォーマットのデータがaccess.logには含まれてるんでしょうか?
07837592006/07/20(木) 14:11:14ID:WCdGbBzj
アクセスしようとしているのが、

/usr/local/majordomo/lists/ なので上位全ての777にするのは気がひけます。
listsだけは 777 にしみましたが、同じエラーでした。

linuxのfs設定で何かあるのでしょうかねぇ?
07847562006/07/20(木) 14:14:40ID:OwGfxror
>>782
ありがとうございます。
ずらずら並んだ状態です。
アクセス時刻ももちろん並んでおります。アクセス時刻が一定を過ぎると削除し
リアルタイムで誰がどこにいるかをある程度特定するアクセスプログラムになっております。

ですので新鮮さは重要なのです。
でももう最悪の方法で片付けてしまいました。せっかくご親切に気に掛けていただいたのにすみませんです。
access.cgiの一部をそのままコピペしましたtest.cgiにorz
0785nobodyさん2006/07/20(木) 14:18:25ID:???
>>784
いや、まあ、それで正解だと思う・・・<貼り付け
そんな長くなさそうだし、
0786nobodyさん2006/07/20(木) 14:19:19ID:???
コピペするぐらいならその時点でカプセル化しとけ
また同じこと繰り返すことになるぞ
0787nobodyさん2006/07/20(木) 17:29:45ID:gqKAMnqO
どなたかお手すきの方いらっしゃいましたらお助けください

1)combbslog.cgiというファイルを一行読み込んで
$rl,$yl,$gl,$wl,$blにそれぞれの値を代入して
すべてが1より大きければ実行する。
プログラムを書いてみたつもりです。

ちなみにcombbslog.cgiの中身は


<>1<>3<>1<>1<>1<>

↑こんな感じです


2)open(IN,"combbslog.cgi") || &error("Open Error: combbslog.cgi");
local(@file) = <IN>;
close(IN);
local($rl,$yl,$gl,$wl,$bl) = split(/<>/);

if(($rl > 1) && ($gl >1) && ($yl > 1) && ($wl > 1)){実行したい内容;}

3)とくにエラーなどは出ないのですが条件を満たしていても実行されません。

ファイルを読み込む当たりが良くわかっていないのでそのあたりがおかしいのではないかと思っています。
どこかおかしいところがありましたら教えてください。
0788nobodyさん2006/07/20(木) 17:38:15ID:???
データファイルに*.cgiという拡張子をつけるのはおかしい。

とりあえず
print $rl,$yl,$gl,$wl,$bl;
してみろ
0789nobodyさん2006/07/20(木) 17:44:06ID:???
>>787
if文の所。
>
の演算子の意味はわかってるよね?1には反応しないよそれじゃあ。2からだな
だからファイルの中身が全部2以上なら実行されるだろうね。
0790nobodyさん2006/07/20(木) 17:48:57ID:???
>>787
$rlの値がいつも空になると思うよ。

split(/<>/) だと
$rl<>$yl<>$gl<>$wl<>$bl<> こうでしょ。

>>788
> データファイルに*.cgiという拡張子をつけるのはおかしい。
( ´_ゝ`)・・・

>>789
すべてが1より大きければ実行する。ってことだからいいんじゃないの
07917892006/07/20(木) 17:53:54ID:???
>>790
よっ!さすがだな、おまい
07927872006/07/20(木) 18:00:12ID:???
こんなにも早くレスがついてるとは思いませんでした。

とりあえず全部2以上にしてみて
あと$rl<>$yl<>$gl<>$wl<>$bl<>にしてみますね

07937872006/07/20(木) 18:13:32ID:gqKAMnqO
レス下さったかたがたありがとうございます。
上記のことをやってみましたが出来ませんでした・・・
ためしに
print $rl,$yl,$gl,$wl,$bl;
しても何も表示されなかったのでどこか他のところがおかしいのかな?

以下にプログラム全文載せますので、もしよろしかったらまたお願いします。


-selectcol.cgi-

#!/usr/bin/perl --

open(IN,"combbslog.cgi") || &error("Open Error: combbslog.cgi");
local(@file) = <IN>;
close(IN);

local($no,$dat,$nam,$eml,$sub,$com,$url,$hos,$pw,$tim,$rl,$yl,$gl,$wl,$bl) = split(/<>/);

print $rl,$yl,$gl,$wl,$bl;

__END__

-combbslog.cgi-

1<>2006/07/20(Thu) 00:06<>blackh.gif<><><>北朝鮮がミサイルを発射することで国際社会からより疎外されている<><>127.0.0.1<><>1153321603<>2<>2<>2<>2<>2<>

0794nobodyさん2006/07/20(木) 18:17:11ID:???
>>788
  .r‐――'i   / > _         ,ノ~';;.    .....,,、 l´゙|゛           |´゙l゙        ,,,,,,,...... --、,
  . ̄ ゙̄} |  / ./ .;;./ '、         / ,./      ,! ./____| |__________、  ,,............-! !ー'''"゙.l     .ヽ --‐= /
  .r‐―" |'l゙_,,, ̄'i --、'ッ    / /      ./ ...........、 ,,................,!   ゙‐'ー''''''''''、 '.l゙´_,,,, 、      /./
  l |゙゙゙゙"'".._.... ! .|........ニ   / /       / /   ||       .l'''''''''''''''''''_.゛,,.... --′   ./ .イ-―ー 、
  ! .―--ィ .! .r‐''i .r‐‐i !  ..l ヽ.       ゙'/l'''''''''''''′゙'''''''''''''''i   `゙゙゙゙゙゙´゙_,゙,゙,,,,゙;;..\,    ./ ,..-''''^゙゙゙゙゙''''、 ヽ
  .゙‐'"^゙| ! .| .゙‐'''" !―" |    \ .\.       `゙゙゙゙゙゙゙゙゙| .!゙゙゙゙゙゙゙゙゙´    ,r'",, ---- ..,,/   < /        .| |
     .| ! .゙‐'゙゙゙゙゙! .!゙゙.l゙'│     .\. ゙'-,            ,! !        ! l゙              ゛       ._./ ./
  .,,,,,,,ノ !.r‐―ー" ゙''二、ヽ      .\ .゙>  .!^^^^^^^^^゛ `^^^^^^^^.!  .\`'''''''''''''''''''''>       'l'''''''''^゙゙_,,..-'゛
  .ゝ--‐゛ ゙‐''"゙ ̄´゛  `'´        `   . ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄゛    `゙゙''''''''''''''''"         ̄ ̄゛
0795nobodyさん2006/07/20(木) 18:19:15ID:???
この場合
local(@file) = <IN>;
ぢゃなくて
@_ = <IN>;
なら動くんで内科医?
0796nobodyさん2006/07/20(木) 18:19:15ID:???
良い悪いは別にしてデータファイルに*.cgiという拡張子をつけるのはおかしいだろw
あえてソコだったんだがただのかわいそうな人になってしまったw
0797nobodyさん2006/07/20(木) 18:20:27ID:???
>>796
おかしくないよ
他人に見せないためにも*.cgiにしたほうがいいと思うよ。
07987872006/07/20(木) 18:25:43ID:gqKAMnqO
またしても即答ありがとうございます。
>>795さんのいうとおりにしたら
error500

CGIエラー-Content-Typeヘッダが正しくありません。

とでてしまいました。これはどういうことでしょうか?
0799nobodyさん2006/07/20(木) 18:25:51ID:???
>データファイルに*.cgiという拡張子を付けることがおかしいだろw
おかしいと思う理由が知りたいんだが
0800nobodyさん2006/07/20(木) 18:27:34ID:???
combbslog.cgiのパーミッションは適切か確認汁
0801nobodyさん2006/07/20(木) 18:29:28ID:???
CommonGatewayInterfaceなファイルではないからおかしいという理論
っつーかもう触れないでくれw
どおりで俺の冗談には誰も笑わないわけだ
0802nobodyさん2006/07/20(木) 18:32:24ID:???
>>801
冗談にして逃げるわけねw
0803nobodyさん2006/07/20(木) 18:32:45ID:???
> local(@file) = <IN>;
> close(IN);

> local($no,$dat,$nam,$eml,$sub,$com,$url,$hos,$pw,$tim,$rl,$yl,$gl,$wl,$bl) = split(/<>/);

$_ に何入ってんだよwww

foreach (@file) {
local($no,$dat,$nam,$eml,$sub,$com,$url,$hos,$pw,$tim,$rl,$yl,$gl,$wl,$bl) = split(/<>/);
・・・
}

こうしたいんじゃねえのかい?
0804nobodyさん2006/07/20(木) 18:33:56ID:???
ああん更新し忘れた(ノ∀`)ペチ
0805nobodyさん2006/07/20(木) 18:34:18ID:???
>>798
print "Content-type: text/html\n\n";
を出力の前に入れないと駄目でしょ。

それと>>793が全文だとすると、sub error はいずこへ
0806nobodyさん2006/07/20(木) 18:35:10ID:???
>>802
逃げさせてくださいw
0807nobodyさん2006/07/20(木) 18:35:31ID:???
>>798
ブラウザでやってんの?

なら
つ【print "Content-type: text/html;\n\n"】
0808nobodyさんNGNG
突っ込み所が多すぎて
08097872006/07/20(木) 18:41:17ID:gqKAMnqO
はい、ブラウザでやってます。AN HTTPD というソフトでローカルチェックしてるところですから
パーミッションの設定はまだ関係ないですよね。
08107872006/07/20(木) 18:44:23ID:gqKAMnqO
突っ込みどころ多くて申し訳ないです。

>>803さんや>>805さんのとおりにしてみたらエラーは出なくなりました。
ただ何も出力されてきません。
0811nobodyさん2006/07/20(木) 18:48:34ID:???
デバック方法は自分で考えなよw

とりあえず
open(IN,"combbslog.cgi") || &error("Open Error: combbslog.cgi");
print <IN>;
close(IN);

とかからやってみたら。
あと無意味に local 使ってるのが kentくさくてイヤ。
08127872006/07/20(木) 18:51:54ID:???
>>811さん
  はい、デバックは自分で頑張ってみますね。
Kentさんのところをすごく参考にしていたのでそうなってしまいました。
08137872006/07/20(木) 18:55:45ID:gqKAMnqO
はやくもまた質問で申し訳ないのですが
ファイルを読み込むとき
最初の一行だけを読み込むとか出来ますか?
08147892006/07/20(木) 18:57:06ID:???
今日はみんな親切だな。
まあ雨がひどいからな。

■ このスレッドは過去ログ倉庫に格納されています