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

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

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

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

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

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

過去ログやお勧めサイトは >>2-10
0666nobodyさん2006/07/18(火) 13:25:28ID:???
Content-type:〜\n\nSet-cookie:〜\n
となっていたに1票
0667nobodyさん2006/07/18(火) 14:04:40ID:???
>>663
ていうか、ただのハッシュとして使うだけなら
なんでオブジェクトにするのか全く不明。
それなら単純にハッシュを宣言して、読み込むだけの方が良い。
0668nobodyさん2006/07/18(火) 14:22:23ID:???
>>665
順番はどうでもいいけど検証するなら空行が何を表すのかってことを検証して下さい。
0669nobodyさん2006/07/18(火) 14:43:02ID:???
空行位置は665に書いたとおりなんで、間違ってないと思うんですよ。
それでも、やはり順序不問ってことは、どっかでケアレスミスしたかもしれません。今夜再検証してみます。
0670nobodyさん2006/07/18(火) 15:15:34ID:???
>667
外部ファイルにhashで設定を書いてrequireすると、
同じ内容の変数が2つ存在することになって無駄があるので
オブジェクトにした次第です。
0671nobodyさん2006/07/18(火) 15:24:45ID:???
>>670
その考え方が間違ってる。そんなことでオブジェクトにしちゃいけない。
だったらまだ、>>660 にある最初の書き方の方が、考えがマトモ。

同じ内容の変数が2つになるのが嫌なら、
外部ファイルの変数を別のハッシュに代入せずに、そのまま使えば良いだけの事。
0672nobodyさん2006/07/18(火) 15:28:41ID:???
ifで(unlessを使わずに)「特定の文字列にマッチしなければ」という条件式を
書くにはどうしたら良いんでしょうか?
単純に
if($data !=~ /MOJI/)
という書き方では反映されないみたいなんですが。
0673nobodyさん2006/07/18(火) 15:31:12ID:???
!~
0674nobodyさん2006/07/18(火) 15:31:47ID:S5V5gxsh
比較の質問なんですが
「○○かつ△△」を文字列で扱う方法はやはりないのでしょうか?

$type1 = 'BAKA';
$type2 = 'KASU';
if ( $type1 eq 'BAKA' and $type2 eq 'KASU')

みたいにするには数値をそれぞれ代入してからやるべきなのでしょうか?
0675nobodyさん2006/07/18(火) 15:34:06ID:???
>>670
リファレンスを使えば二重にならない。
0676nobodyさん2006/07/18(火) 15:38:45ID:???
質問の意味が分からない
06776722006/07/18(火) 15:39:57ID:???
>>673
if($data =!~ /MOJI/)
と書いてみましたがエラーが出て動かないです。
どこが間違っているんでしょうか?

>>674
単純に
if ( ( $type1 eq 'BAKA' ) && ( $type2 eq 'KASU' ) )
で良いじゃないでしょうか。
0678nobodyさん2006/07/18(火) 15:42:18ID:???
if ($data !~ /MOJI/)
06796722006/07/18(火) 15:46:52ID:???
>>678
できました。
=とか!とかはあくまでチルダに対して付いてたんですね。
ありがとうございました。
0680nobodyさん2006/07/18(火) 15:47:11ID:S5V5gxsh
>>676
数値比較では && や and を使えますが
文字列でも同じように && や and を使っていいのかどうかということです
0681nobodyさん2006/07/18(火) 15:47:29ID:???
Perlの本て、読まないのかな。
最近の質問見てるとネットだけで独学の人が多いような気がする。
0682nobodyさん2006/07/18(火) 15:48:55ID:???
>>680
and や && は比較の内容と関係ない。
だから当然使って良い。
0683nobodyさん2006/07/18(火) 15:49:31ID:S5V5gxsh
>>677
どうもです

>>682
ありがとうございます
0684nobodyさん2006/07/18(火) 16:01:37ID:???
perldocの存在を知らない気がする
0685nobodyさん2006/07/18(火) 17:42:03ID:???
>675
その都度デリファレンスするのって、見た目が余り綺麗じゃないからその案は
以前考えてるときに却下しました。
0686nobodyさん2006/07/18(火) 17:51:43ID:???
>>685
誰がデリファレンスしろと…。

>>675 が言ってるのは、
外部ファイルで %config を定義して、return ¥%config; でリファレンスを返せば
同じハッシュが2つにならないということでしょう。
使う時は $cfg->{'hoge'} みたいなので良いんだし。デリファレンス要らない。
0687nobodyさん2006/07/18(火) 18:24:24ID:???
OOP考えるならさあ、、
「とりあえず外部PL(PM)ファイルに設定をずらずらして require」 じゃなくて、
普通の(TXT)ファイルとかにCSVとかTSVみたいな感じで設定を書いて、
my $cfg1 = Config->new('config1.txt');
my $cfg2 = Config->new('config2.txt');
みたいな感じで設定取ってくるもんじゃないの?
>>655みたいに値を得たいときは my @url = $cfg1->get('url'); とかしてさ。
そうじゃないならOOPの意味もないな、って思うんだけどw
0688nobodyさん2006/07/18(火) 18:29:25ID:???
AppConfigかConfig::*の中から適当なの見繕って使うのが普通じゃないかと。
0689nobodyさん2006/07/18(火) 18:54:51ID:9xyhckKL
訪問者に強制的に話しかけるウェブサイト作ったのですが、
ページの更新をムダに頻繁にするのはいやなので30秒設定にしています。
要はチャットなのですが。

試験的に稼動してるのですが、相手にメッセージが届く前に相手が帰ってしまうようです。
そこで思ったのですが、こちらが書き込みをしたら即座に相手のブラウザに更新命令を
出すといったようなことはPerlCGIでは実現できませんでしょうか?

そんなことできたら怖すぎるかな?とも思いましたがやはりそんな危ない技術は正攻法では不可能ですかね?
ハッキング状態になっちゃいます?

アドバイスお願いします。
0690nobodyさん2006/07/18(火) 19:08:59ID:???
>>689
そういうクライアントサイドなのはJavaScript(Ajax)とかでやるんじゃねーかなー。
0691nobodyさん2006/07/18(火) 19:18:16ID:???
>>689
>こちらが書き込みをしたら即座に相手のブラウザに更新命令を
>出すといったようなことはPerlCGIでは実現できませんでしょうか?
できるわけないだろ。
そんな凶悪なセキュリティホールが空いてたらすぐに緊急のパッチが出るわ。

要は、最初のアクセスのときだけ3秒ぐらいでリロードして
その自動メッセージとやらを表示させて、
2回目以降は通常の30秒リロードにすれば良いんじゃないの?
0692nobodyさん2006/07/18(火) 19:45:12ID:???
コネクション切らずにつなぎっぱなしで垂れ流せばよい。
共有サーバでやるとヌッ殺される。
0693nobodyさん2006/07/18(火) 19:45:35ID:???
>686
あぁなるほど。
ファイルの最後で1;ってやるところで返すのはやらないほうがいいですか?
(出来るかどうか知らないけど)

>687
iniファイルのような設定ファイルは記述ミスに対するコーディングが生じるので考えてませんでした


勉強も兼ねて初めてパッケージ(もどき)を考えてみたけど、使いどころとか、使い方とか難しいですね
0694nobodyさん2006/07/18(火) 19:49:14ID:???
>>687
つーか値を得たいときは$self->{'config'}->{'value'}
もしくは$selfをconfig hashそのものにして、$self->{'value'}。
そもそも関数で値を”とってくる”という発想自体が間違ってる。(OOPなら
0695nobodyさん2006/07/18(火) 19:52:09ID:qN74jZ6A
my $count = $db->prepare("select count(*) from hoge where hogehoge = 1");
print $count;
-------------------------------
↑のような構文を打ったところ
(SQLで返される数字が出力されるようにしたつもり)
print $countが↓のように出力されてしまいます。
-------------------------------
DBI::st=HASH(1234abcd)
-------------------------------
正しく数字が返されるようにするにはどのようにしたらよいでしょうか?
0696nobodyさん2006/07/18(火) 19:55:35ID:???
まず中学に入学して prepare の意味を調べられるようになれ。
0697nobodyさん2006/07/18(火) 19:59:59ID:???
>>694
use CGI; で $Q->param('hoge') とかやるのは間違ってるってことニカ?
0698nobodyさん2006/07/18(火) 20:04:32ID:???
気付いても、生暖かく見守るのが大人の対応だ
0699nobodyさん2006/07/18(火) 20:04:40ID:???
>>697
それは”とってくる”じゃ無いと言いたいのだと思ふ。
関数じゃなくてメソッドだし。
0700nobodyさん2006/07/18(火) 20:06:25ID:???
関数とメソッドの違いも答えられないくせに偉そうだにゅ
0701nobodyさん2006/07/18(火) 20:10:22ID:???
googleで調べるの禁止な
07026952006/07/18(火) 20:11:15ID:qN74jZ6A
すいません抜けがありました。もう一度投稿ですみません。。


my $count = $db->prepare("select count(*) from hoge where hogehoge = 1");
$count->execute;
print $count;
-------------------------------
↑のような構文を打ったところ
(SQLで返される数字が出力されるようにしたつもり)
print $countが↓のように出力されてしまいます。
-------------------------------
DBI::st=HASH(1234abcd)
-------------------------------
正しく数字が返されるようにするにはどのようにしたらよいでしょうか?
0703nobodyさん2006/07/18(火) 20:13:37ID:???
DBIモジュールの説明読んで。
0704nobodyさん2006/07/18(火) 20:15:42ID:???
fetchしろ。fetchナントカってのはいっぱいあるからどれを使うかはお好みで。

07056952006/07/18(火) 20:32:22ID:qN74jZ6A
>>703-704
ありがとう
0706nobodyさん2006/07/19(水) 00:26:20ID:aJ2dkknB

$a = 31536001
に対して年$year 月$manth 日$day 時$hour 分$minute 秒$second
を求めるには地道に

$year = $a - 3153600;

とした方がいいのでしょうか?
それとももっと簡単な方法がありますか?
よろしくお願いします
0707nobodyさん2006/07/19(水) 00:32:18ID:???
誰か翻訳してくれw
07087062006/07/19(水) 00:35:08ID:aJ2dkknB
>>707
あああ、すいません
ミスってました

31536001は31536001秒ということです
秒、(繰り上がるならそれぞれ)分、時間、日、月、年を求める方法があるのかどうかです

0709nobodyさん2006/07/19(水) 00:38:52ID:???
うるう年じゃない年の一年の秒数が31536000、だな

>>708
日数までは良いとしてだ。
一月の長さは同じじゃないわけだが、そこのところどうやって計算する気よ
0710nobodyさん2006/07/19(水) 00:41:06ID:???
ああ、わかったw
$a = 31536000; # ← 3600*24*365
で、$a = 86401 なら 暦とか関係なく 1日と1秒 って経過時間だしたいってことね。

じゃあ単に
my @dates = gmtime($a);
とかやればいいんじゃねのw
07117062006/07/19(水) 01:03:53ID:aJ2dkknB
>>709
年は365、日は30にするつもりです

>>710
そうです
ちょっと
my @dates = gmtime($a);
やってみます
07127062006/07/19(水) 01:08:22ID:aJ2dkknB
>>710
51101071500

になります
07137062006/07/19(水) 01:25:12ID:aJ2dkknB
ああああ、すいません、ボケてました
ちゃんと>>711でできました

ただ気になるのがある時点での時間を求めるので
月の表示がうまくいきません

$a = 61;
の場合は1分と1秒なのでそのまま0月カウントになりおkなんですが
11月の次が12月を飛んでしまいます
かといって$mon+1;をすると$a=61;のときに1月1分1秒になっていまいます
これは仕様でしょうか?
0714nobodyさん2006/07/19(水) 01:51:28ID:???
ある時間を起点にして「11ヶ月31日59分59秒後」の1秒後は「1年0ヶ月0日0分0日後」

まず小学校まともに卒業してカレンダーと時計の見方を身につけろよ。
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画像自体はまるでいりません。

長文すみません。ご飯を食べてまいります。
■ このスレッドは過去ログ倉庫に格納されています