Perlコーディング初心者質問スレ Part 49
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2006/05/31(水) 04:32:28ID:???【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
「コマンドの意味がわかんない」とかはマニュアル見ましょう。
回答者さんは何でも屋じゃありません。
1: 自分はこういう事がしたい。
2: それでこんな風にやってみたが・・・
3: こんなエラーが出て上手く行かなかった。
最低でも1と3が無いと誰も答えられないよ。
ソース貼る時は、全角スペースでインデント忘れずに。
良い回答は良い質問から。一緒に勉強しましょう。
過去ログやお勧めサイトは >>2-10
0261nobodyさん
2006/06/07(水) 02:07:38ID:???0262nobodyさん
2006/06/07(水) 02:11:01ID:???まあおめでとう!w 何が悪かったのやらw
てか自分のPCに perl 入れて、コマンドプロンプトとかから perl 実行すること覚えようぜ。エラーメッセージでて便利よ。
0263nobodyさん
2006/06/07(水) 02:14:36ID:???無限 fork するようなもの書いたときにおかしくなるから嫌。
0264nobodyさん
2006/06/07(水) 02:14:53ID:???うい。perlは入れた(はず)ですが、実行の仕方(設定の仕方?)が分からんとです。
これから覚えます。
ちなみに、もともと作ってた方のページも直しましたが、
読み込み元ファイルの内容が表示されんとです。
まだまだ道は長いとです。
ありがとうございました。
0265nobodyさん
2006/06/07(水) 02:19:08ID:???えぇw
>>264
そのフォルダからcmd開いて、 「perl hoge.cgi」 とか打つだけだす。
あと、$/ 変えて読み終わったあとは、変な挙動起こさないように、
$/ = "\n"; って設定しなおしていくといいかも。
0266nobodyさん
2006/06/07(水) 02:23:00ID:???> そのフォルダからcmd開いて
いきなり意味分かんないんで、このスレのログ保存しておきました。
もうちょっと頭が良くなってから読み返します。
こんな夜中までありがとうございます。
0268nobodyさん
2006/06/07(水) 02:37:25ID:???確かに、意味不明ですね。
0269nobodyさん
2006/06/07(水) 03:07:49ID:???0270nobodyさん
2006/06/07(水) 03:08:00ID:???↓こういうのをやるとか、
http://arena.nikkeibp.co.jp/tec/winxp/20050309/111687/
どっかのフォルダの ツール → フォルダオプション → ファイルの種類 → CGI ファイル → 詳細設定 で、
新規 → アクション 「cmd」 → アクションを実行するアプリケーション 「cmd.exe "cd %l"」
ってやると、「そのフォルダからcmd開いて」 な感覚になるんだけど・・・普通そう言わないのかな・・・(´・ω・`)
0271nobodyさん
2006/06/07(水) 04:27:27ID:???cd "c:\perlスクリプトがあるディレクトリ"
perl スクリプト名.pl
が親切では?
0272nobodyさん
2006/06/07(水) 05:24:07ID:???うん、そうなんだけど、
ファイルのディレクトリが D:ドライブだとまた違うし、
何度も使うなら、cd 〜フォルダ名 とか打つの省略できる方が楽だと思って。
0273nobodyさん
2006/06/07(水) 05:51:48ID:???今日から perl 勉強します yo! ってひとが、そんな設定やると思う?
コマンドプロンプト開いた時点で、その人のホームディレクトリにいるから
誘導するのはそれほど難しくないよね。
0274nobodyさん
2006/06/07(水) 08:11:05ID:???エクスプローラのフォルダから DOS 窓を開けるようになる。
そうすれば一々 CD しなくてもいいし、perl への PATH が通ってれば perl ってだけで
起動できる。
ちなみに cmd とか commasnd とかから起動すると速攻で窓閉じるから駄目よw
0275nobodyさん
2006/06/07(水) 10:29:37ID:???@{$a}{@$b}
これってどういう意味なんでしょう?
そんなに難しいことじゃないと思うんですが、
perlは慣れていないので苦労しています。
宜しくお願いします。
0276nobodyさん
2006/06/07(水) 10:44:11ID:???例えば、
$a = 'hash';
$b = ['a', 'b']; # 配列のリファレンス
とすると、
@{$a}{@$b} → @hash{'a', 'b'} → ($hash{'a'}, $hash{'b'})
のこと。
0278nobodyさん
2006/06/07(水) 13:05:38ID:???左は日付です
--20060101--aaaa----
--20060423--bbbb----
--20060514--cccc----
なんてのが書いてあるファイルを読み込み @dataとします
まず@dataを表示させてみると2行目からの頭に半角のスペースが入ります
これはなんでしょうか?
さらに
foreach(@data){
if( /(--(\d*)--\w*----)/){
$list {"$2"}=$_;
}}
foreach $key (sort keys %list){
push @htm ,$list{$key};}
とし、これをもう一度展開して表示させてみると、同じ日付がある場合に
誤動作して読み込まれません
改善するにはどうしたらいいでしょうか?
0279nobodyさん
2006/06/07(水) 13:14:37ID:???行と改行コードに関する質問です
読み込み
もう一度展開
なんてのが書かれている質問を読み込みます
これはなんでしょうか?
> 頭に半角のスペースが入ります
> これはなんでしょうか?
自分で書いているとおり半角のスペースなのではないでしょうか。
さらに
誤動作して読み込まれません
と書いてあるので考えてみると、コードは動いているのに質問する場合なので
解釈がうまくできません
改善するにはどうしたらいいでしょうか?
0280278
2006/06/07(水) 13:20:29ID:???0281nobodyさん
2006/06/07(水) 13:28:36ID:???> 半角スペース
定番FAQ
print "@data";とやってるだろ。
配列を文字列内に入れようとすると$"(デフォルトで半角スペース)で連結されるからこうなる。
むやみにダブルクォーテーションで囲むのは止めましょう。
ちなみにprint @data;の場合は$,で連結される。これはデフォルトで空文字列。
> 同じ日付
%listの中に配列を作って複数の値を記録できるようにすれば良い。
foreach (@data) {
push @{$list{$1}}, $_ if /--(\d*)--\w*----/;
}
foreach my $key (sort keys %list){
push @htm, @{$list{$key}};
}
0282nobodyさん
2006/06/07(水) 13:29:56ID:???@dataはファイルから丸ごと読み込み
@data = <FH>;
で、@dataを表示する時に
print "@data";
とかやってるんじゃないの?
だったら頭にスペース入るだろうね。
2つめは当たり前でしょう。
同じ日付があれば、データが上書きされるので。
ハッシュの先を配列にするとかしないと。
0283nobodyさん
2006/06/07(水) 14:35:06ID:CY60cgj5そういったモジュールってありますでしょうか?
CPANでwikiで検索したら数があまりに多すぎて。。。。。
0284278
2006/06/07(水) 14:55:55ID:???有り難うございます
push @{$list{$1}}, $_ if /--(\d*)--\w*----/;
この部分がエラーを発生します
もうちょっと勉強してみます
0285278
2006/06/07(水) 14:57:52ID:???0286nobodyさん
2006/06/07(水) 16:04:17ID:???0287nobodyさん
2006/06/07(水) 16:08:10ID:???最初に空のデータとして宣言しとかないと何か不具合起こすことってあるの?
0288nobodyさん
2006/06/07(水) 16:22:34ID:???Cみたいに初期化しないと変な値が書き込まれてるって事は無い。
ただし、配列かどうか分からない所にいきなりpushしたりするとエラーになる。
my %hash;
my %data = ('a' => 1, 'b' => 2, 'c' => 3);
while (my($key, $val) = each %data) {
push($hash{$key}, $val); # Error(配列に初期化してないから)
}
0289nobodyさん
2006/06/07(水) 16:25:30ID:4ldG4rWrperl5.8.8
ウェブ上で使ってるプログラムをローカルに持ってきたらエラーがでました。
ウェブのperlは5.8.1です。
そこで質問です。
use strictしてるプログラムをperl -cに掛けてエラーが出ないのにapacheのログに
[Wed Jun 07 16:06:23 2006] [error] [client 127.0.0.1] Premature end of script headers: c:/program files/apache group/apache/htdocs/public_2/system/system.cgi
[Wed Jun 07 16:06:23 2006] [error] [client 127.0.0.1] Can't use an undefined value as a HASH reference at c:\\PROGRA~1\\APACHE~1\\apache\\htdocs\\public_2\\system\\system.cgi line 427.\n
と出て、strictを外すと
[Wed Jun 07 15:47:53 2006] [error] [client 127.0.0.1] Premature end of script headers: c:/program files/apache group/apache/htdocs/public_2/system/system.cgi
[Wed Jun 07 15:47:53 2006] [error] [client 127.0.0.1] substr outside of string at c:\\PROGRA~1\\APACHE~1\\apache\\htdocs\\public_2\\system\\system.cgi line 445.\n
とエラー内容が変わるのはなんですかね。
ウェブ上ではなんのエラーもなく動作してる時点でコードに問題はないと思うのですが。
0292nobodyさん
2006/06/07(水) 16:30:26ID:???use strict; してるかどうかによって警告が出る位置が違ってる。
それから、エラー読もうよ…。
substr が文字列境界超えてるって。
多分、見えないだけで、webサーバ側のログには延々とそれが書き込まれてる。
0293289
2006/06/07(水) 16:40:43ID:4ldG4rWrすみません。先ほどのapacheのエラーログです。
>>292
文字列境界越えてるって使い方がおかしいってことですかね。<strong>${\substr($db_all_field_html{ordertime},0,4)}年${\substr($db_all_field_html{ordertime},4,2)}月${\substr($db_all_field_html{ordertime},6,2)}日
こういうことはしてます。でもウェブの方ではエラーログには何も残らず、ちゃんと表示される。
自宅では表示もできないし、ログにも
残る。
それにしても構文レベルのエラーならperl -cでひっかかると思ったのですが、
構文はあっているけど、実際に処理をしたら無理だった。とかあるんですかね?
それでウェブの方では実際にやっても大丈夫だったけど、自宅の法では実際に無理だったみたいな誤差ですかね。
strictを外すとエラーの行が変わるのは気づいてたのですが、どうも構文チェックがokでてる以上
何をすればいいかわからなくて。
0294nobodyさん
2006/06/07(水) 16:41:02ID:???僕の個人的かつ大胆な推測によると、
仮に $hash{$key} の値を配列リファレンスで初期化していたとしてもエラーが出ると思うのだ。
それ、デリファレンスしてねえからな。
0295294
2006/06/07(水) 16:48:28ID:???未初期化なナニをデリファレンスすると、perl はその時点から「そのように」扱ってくれる。
だから >>288 のようなケースでは個別の初期化は不要。いや、してもいいけどさ。
0297nobodyさん
2006/06/07(水) 17:10:08ID:???何か値が入るとあなたが仮定している変数が、どこかで undef ってると思われます。
それぞれのタイミングで各変数の値が期待通りになっているかチェックしましょう。。
-c スイッチの syntax OK は 「perl によって曖昧さなくパースできますよ。一応ね」 という意味なので、セマンティクス上のバグは見つけてくれません。
代わりに -wc を使うようにすると警告も併せて示してくれます。
0298nobodyさん
2006/06/07(水) 17:15:43ID:???0299289
2006/06/07(水) 17:20:02ID:4ldG4rWrありがとうございます。
-wcやってみます。
とりあえずsubstrのあの記述を抜いて、strictを外すと表示ができるようになりました。
今はstrictでない部分を探してます。
ところでもしかして、5.8.1と5.8.8では何か違うんですかね。そう思えてならないです。
5.8.1が手に入ればわかりやすいですが。
0300nobodyさん
2006/06/07(水) 17:48:23ID:???$text =~ s/\r\n\w//g;
とかだと、直後の1文字も消えてしまうし・・・ヒント下さい。
0301nobodyさん
2006/06/07(水) 17:52:35ID:???perl58[2-8]delta に変更点が書いてある。
http://search.cpan.org/~nwclark/perl-5.8.8/
>>300
s/\n(?!$)//g;
ついでに http://www.din.or.jp/~ohzaki/perl.htm#CRLF_Unify
0302300
2006/06/07(水) 18:01:42ID:???ありがとうございます!
$が末尾、!$が末尾じゃない、ってことで?が条件文として働いてるってことですかね。
改行コードって実は結構複雑だったんですね。参考にします。
みなさんデータの読み込みのときに毎回コードの変換して・・・
って、書き込みの段階で変換してれば読み込みのときには必要ないのか・・・。
0304nobodyさん
2006/06/07(水) 18:26:26ID:???http://www.kt.rim.or.jp/~kbk/perl-5.8/perlretut.html#looking_ahead_and_looking_behind
0305nobodyさん
2006/06/07(水) 18:30:05ID:???[例]
@number = (1,2,3,4,5,6,7,8,9,10);
を
@number = (1,2,3,5,6,7,8,9,10);4番目の要素を削除
としたり、
@number = (1,2,A,3,4,5,6,7,8,9,10);3番目に要素を追加
としたり。
0306nobodyさん
2006/06/07(水) 18:35:35ID:???ぐぐれって・・・
0308nobodyさん
2006/06/07(水) 21:34:12ID:???ここの最後の疑問を読んで、確かにそうだなぁと思ったので、こちらで質問させてください。
grepやmapの第一引数にEXPRを指定すると、何度も評価されますよね?
でも、普通に考えたらgrepやmapが実行される前に評価されてしまうのではないでしょうか。
この遅延評価はgrepやmapだけ特別なんでしょうか。
BLOCKを渡すと遅延評価される、というのは納得できますが…。
同じような事がforやwhileなどにも言えますけど、あちらは構文ですよね。
0309nobodyさん
2006/06/07(水) 22:43:06ID:???/e$/ は $_ =~ /e$/の略で、普通は
my @e_fruits = grep $_ =~ /e$/, @fruits;
ではなく
my @e_fruits = grep /e$/, @fruits;
って書くと思う。これ関係ない?
ちなみにgrepもmapもforのような書き方もできるぞ。
0310nobodyさん
2006/06/07(水) 22:55:49ID:???grep は最初の引数(あるいは間接オブジェクトスロット)にコードリファレンスを取る。
それは後続の引数をリスト展開して得られた最初の要素から順に $_ にセットして繰返し呼び出される。
ユーザサブルーチンのプロトタイプで言うと (&@) ね。完全に同一じゃないけれど。
>>309
grep や map を連結できるのは、それぞれが返した値を前の関数に引数として渡しているから。だから両者は全く別物。
for(each), while, if などの修飾子は引数として渡されているわけではなく、スコープを生じるブロックを持たないだけでそれぞれが元来の制御構造であることに変わりがないので。
0311308
2006/06/07(水) 23:03:22ID:???わかりづらくてすいません。
例えば
$_ = 10;
my @r = map $_ * 2, (1..5);
print "@r";
と書いた時に、@r の中身は (10, 10, 10, 10, 10) じゃなくて (2, 4, 6, 8, 10) とできるのは
なぜなんでしょう?
0312308
2006/06/07(水) 23:06:03ID:???>>310
ありがとうございます。スッキリしました。プロトタイプの仕業でしたか。
てことは、EXPRの場合もBLOCKの場合も、結局コードリファレンスとして渡されるわけですね。
0313nobodyさん
2006/06/07(水) 23:42:47ID:???使う分にはそこまでわからなくても問題ないけど。
0315nobodyさん
2006/06/08(木) 00:16:48ID:???やっぱり組み込み関数なのでズルしてると思ったほうがいいね。
0316308
2006/06/08(木) 00:33:23ID:???そうみたいですね…。試しに map を (&@) で実装してみました。
やはり式やブロックだけでは渡せず、無名関数を作ってコードリファレンスを渡さなきゃダメみたいです。
先ほどのブログにコメント付けてきちゃいましたorz 訂正してこなきゃ・・・
sub mymap(&@) {
my $code_ref = shift;
my @new_list = ();
for(@_) { push @new_list, $code_ref->(); }
return @new_list;
}
$_ = 5;
# @r = mymap $_ * 2, (1..5); # NG
# @r = mymap { $_ * 2 }, (1..5); # NG
@r = mymap sub { $_ * 2 }, (1..5); # OK
print "@r";
0317nobodyさん
2006/06/08(木) 00:40:21ID:???> やはり式やブロックだけでは渡せず、無名関数を作ってコードリファレンスを渡さなきゃダメみたいです。
おいおい。呼び出し方が間違ってるだけだよ。
× @r = mymap { $_ * 2 }, (1..5); # NG
○ @r = mymap { $_ * 2 } (1..5); # OK
0318308
2006/06/08(木) 00:44:04ID:???という事は、式の場合だけは裏でトリックが使われてる、て事でいいのでしょうか…
0319nobodyさん
2006/06/08(木) 01:04:38ID:???別に難しく考えなくても、変数のスコープが違うだけじゃん。
$_ = 10;
print map $_ * 2, (1..5);
print $_ * 2 for(1..5);
print $_;
0320308
2006/06/08(木) 01:20:55ID:???「スコープが違う」というのはわかるのですが、
「なぜgrepやmapの引数に書いた時だけスコープが違うのか」がわかりませんでした。
特別な構文もなしに書いた「$_ * 2」が、mapを呼び出す時点でなぜ「20」と評価されずに
「$_ * 2」という式そのものとして渡せるのかが不思議でした。
紛らわしい書き方ですいません。質問するのは難しいですね……。
長くなってしまいました。皆様お答え頂きありがとうございました。
0321nobodyさん
2006/06/08(木) 01:29:33ID:???0322239
2006/06/08(木) 01:58:38ID:???あの後も、動作確認ができたプログラムを自分の作ったページに組み込んでみるとやっぱり動かない。
試行錯誤の末、サブルーチン名に予約語を使っていたことが分かりました。
で、ようやくさっき、思い通りのページが作れました。
ということで、とことん勉強不足を痛感したわけですが、
ここでのアドバイスがあってなんとかなったもので、一言だけお礼を言いに。
特に>>251氏。ありがとうございました。
他の皆さんも参考になりました。ありがとうです。
またトラブったら泣きつきにくるかもしれませんが、その時はその時でまたよろしくです。
0323nobodyさん
NGNG思っているのですが、eval使うぐらいしか方法はないでしょうか?
0324nobodyさん
2006/06/08(木) 07:39:13ID:???書き込んだり削除したりした後に、掲示板表示画面に戻ってきた際に
キャッシュされた以前の状態の画面が表示されてしまいます。
ブラウザに更新を知らせるにはどのようにするのがよいのでしょうか?
0325nobodyさん
2006/06/08(木) 08:28:37ID:???my $func = $obj->can($val) and $obj->$func();
いきなり$obj->$val()で動かなかったっけ?
0326nobodyさん
2006/06/08(木) 15:06:05ID:iBH9Xn1Capache1.3.35 activeperl5.8.8 mysql4.0.26
DBIを使うのにppmでモジュールをインストールしました。
DBIとDBD-mysqlです。
そうしたらどうも
$sth->fetchrow_hashrefがstrict環境下ではエラーになってしまいます。
ハッシュリファレンスの値がありませんとのこと。
以前デスクトップで作ってた環境をノートパソコンに写したのですが、
モジュールのインストールが十分か不安ですが、思い出せません。
確かdata-dumperとdbiとmsql-mysql-moduluesという3つが欲しかったのですが、
ppmで見つからなかったので他のサイトで薦められてたDBD-mysqlとDBIにした覚えが
あります。というあやふやな記憶で今回もその二つを入れたのですが、
どうも動作がしませんので間違っていたかもしれません。
この二つの入れる順番などありましたでしょうか?
それとも前者の3つのモジュールを決められた順番でいれないとfetchrowが使えませんでしょうか。
アドバイス宜しくお願いします。
0327326
2006/06/08(木) 15:08:17ID:iBH9Xn1C失礼しました。
0328nobodyさん
2006/06/08(木) 15:20:30ID:???0329nobodyさん
2006/06/08(木) 15:21:25ID:???というのも、以前Encodeモジュールでエラーがあり調べてたらWinとLinux環境とでバージョンの違いが酷かったので・・・
0330326
2006/06/08(木) 15:33:20ID:iBH9Xn1Chttp://www.rfs.jp/server/mysql/01/07.html
ここを見てperlを勉強していて、(結構前の話ですが)それでDBIもここで勉強しました。
Data-Dumper-Simpleというモジュールは過去に入れた覚えがないのですよね。
過去作っていた環境なら問題なく動いたコードなんです。
fetchrow_heshref以外は問題なく動作してるのでDBIのモジュールのインストール自体は
できてると思うんです。
さっき試しに一旦ppm unsitallしてから先にDBD-Mysqlを入れたら自動でDBIを
先にインストールされました。
モジュールのバージョンがかわってfetchrow_hashrefがダメになったのですかね。
なんでしょうか。とりあえずData-Dumper-Simpleも入れてみますね。
あ、それとstirctを外すと何故かfetchrow_hashrefは動作します。
なんですかねこの症状。
>>329
そうでしたか。
でも過去動作していたコードと考えると逆にバージョンがアップしたせいなのかもしれませんが。
0331nobodyさん
2006/06/08(木) 15:41:28ID:???たとえば
<input type="text" name="test[0]">
<input type="text" name="test[2]">
<input type="text" name="test[3]">
というフォームデータを以下のように受け取ろうと考えて
いますが上手く行きません。
use CGI;
$query = new CGI;
@test = $query->param('test');
どなたかご教授お願い致します。
0332326
2006/06/08(木) 15:43:30ID:iBH9Xn1C特にかわりありません。
やはりstrict環境下では$sth->fetchrow_hashrefが不正扱いされるようです。
0333326
2006/06/08(木) 15:45:36ID:iBH9Xn1Cそれはできません。あくまでHTMLとPERLは違う言語でHTMLには配列という概念がありません。
0334nobodyさん
2006/06/08(木) 15:46:14ID:???inputタグ内の添え字は要らない。(PHPはできたかも)
あとは@test = $query->param('test'); で読めるんじゃなかったかな?
0335nobodyさん
2006/06/08(木) 16:24:15ID:???そうですか・・・
input type=textを、type=checkboxのようにに同一要素名で
送信する事は出来ないのでしょうか?
・・・とおもったら
>inputタグ内の添え字は要らない。
こちらで解決しました!!
添え字無しできちんと配列データとして送られていました。
ありがとうございます。
0336nobodyさん
2006/06/08(木) 16:29:01ID:???同じnameで配列の様に受け取りたいならcgi-libのReadParseを使ってみてください
たしか\0を区切り文字として渡してくるので
@array = split(/\0/, $in{'param'});
で配列にできたかと
0338326
2006/06/08(木) 17:00:06ID:iBH9Xn1Cmy $dbh = DBI->connect(@$dbipass{qw/source user pass/});
my $sth = $dbh->prepare(qq|select * from order_table order by ordertime desc limit $_,1;|);
$sth->execute();
my %db_all_field = %{$sth->fetchrow_hashref};
$sth->finish;
print $_,"<br>";
}
上記を試して確認中にやっとのことで原因わかりました。
データーベースにレコードが10以下の時の対処が記述してなかったが故のkとでした。
面目ありません。
0339nobodyさん
2006/06/08(木) 18:11:03ID:iBH9Xn1Cたまにチャットとかで
只今の閲覧者5人 参加者1人
っていう表示を見かけます。
あれはどうやって実現するのでしょうか。
例えばHTMLのmetaでrefleshを使って30秒毎に相手のIPを確認して
閲覧人数を割り出すのでしょうか?
相手がCGIにアクセスしてきたらIPを取って、取得時間をデータベースに入れておく。
で、1分毎にそのデータベース内のレコードを確認して取得から1分以上になっていたら
削除する。
でもイマイチな仕様ですね。これじゃ。ああ。もっといい方法があると思うのですが。
0340nobodyさん
2006/06/08(木) 18:11:51ID:MZDW6IYK残った数値に1を足したいんですがうまくいきません
$line="hoge100";
$line =~ s/hoge//;
$line=$line+1;
print $line; 何も表示されない
どこが悪いんでしょうか、お願いします。
0342nobodyさん
NGNG0343nobodyさん
2006/06/08(木) 18:43:37ID:???とりあえず
$line='101';
print $line;
で表示されるかどうか確かめることをお勧めする。
0344nobodyさん
2006/06/08(木) 19:00:59ID:???セミコロンの後ろにある全角空白を削除すれば動く
0345nobodyさん
2006/06/08(木) 19:43:03ID:iBH9Xn1Cここ閲覧者数がでますが、これをperlCGIで実現する方法はわかる方いますでしょうか?
0346nobodyさん
2006/06/08(木) 19:52:07ID:???ただこれだけですよ
0347nobodyさん
NGNG0348345
2006/06/08(木) 20:02:06ID:iBH9Xn1Cそれで1分たったらどうするんですか?
cronとかで1分毎に削除CGIを動かすとかですか?
例えば今自分のサイトのどこに何人いるかを確認できるようにするには、
CSV形式で
1.IPアドレス
2.パスインフォ?でしたっけ
3.リクエスト時刻(秒単位)
でやって毎回誰かがアクセスしてきたらそのCSVのIPで正規表現、重複しないように更新をやって、
削除はcronで別CGIを動かして3のリクエスト時刻が既定タイムを超えてたら
削除。
1分毎にcron起動ってなんかあれですね。
訪問者が来た時に削除プログラムも動かす方がスマートですかね。
と考えてみて一応できそうですが、やり方が下手なような気もします。
指摘などありましたらお願いします
0349nobodyさん
NGNG0350345
2006/06/08(木) 20:10:23ID:iBH9Xn1Cありがとうございます。
とりあえず徹夜で作ってみます。
強制的に訪問者に話かけることができるサイトを。
0352nobodyさん
2006/06/08(木) 20:28:53ID:???0353nobodyさん
2006/06/08(木) 21:03:01ID:???print FILE, @stream;
close(FILE);
みたいにして簡単に配列の中身をtest.datに書き込みたいんですが、
エラーになってしまいます。
やっぱり配列をループ回して一行ずつ書き込んでいくしかないんでしょうか。
アドバイスよろしくおねがいします。
0354nobodyさん
NGNGコンマイラネって書いてあるだろ
0355nobodyさん
2006/06/08(木) 21:08:05ID:???回答を求めてないと思われてもしょうがないな...
0356nobodyさん
2006/06/08(木) 21:13:05ID:???ありがとうございます。
0357nobodyさん
2006/06/08(木) 21:17:23ID:???0358nobodyさん
2006/06/08(木) 23:57:04ID:???書き込み禁止の読み込み限定にしたいんですが
0360358
2006/06/09(金) 00:10:31ID:CHuIt143日本語とは?
■ このスレッドは過去ログ倉庫に格納されています