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

このエントリーをはてなブックマークに追加
1nobodyさん
Perlのコーディングで困ってる人のスレです。

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

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

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

過去ログやお勧めサイトは >>2-10
2nobodyさん:2006/04/26(水) 18:01:55 ID:???
関連スレ
CGI: Common Gateway Interface part 13
http://pc8.2ch.net/test/read.cgi/php/1126436361/

【Perl,CGI】参考書籍 第三版
http://pc8.2ch.net/test/read.cgi/php/1030209573/

【Perl】ファイルロック(排他処理)について語ろう
http://pc8.2ch.net/test/read.cgi/php/1024795138/

★負荷軽減対策委員会(Perl、PHP)★
http://pc8.2ch.net/test/read.cgi/php/1034645635/

Perlモジュールについて
http://pc8.2ch.net/test/read.cgi/php/997829243/

CGIに依存しないPerlの話題一般/Part2
http://pc8.2ch.net/test/read.cgi/php/1030548610/

★三 【 スクリプト改造工房 PART 9 】 ★三
http://pc8.2ch.net/test/read.cgi/php/1143834740/

【 スクリプト改造依頼スレ 】(丸投げ) part5
http://pc8.2ch.net/test/read.cgi/php/1141174205/
3nobodyさん:2006/04/26(水) 18:02:36 ID:???
4nobodyさん:2006/04/26(水) 18:03:15 ID:???
5nobodyさん:2006/04/26(水) 18:03:54 ID:???
6nobodyさん:2006/04/26(水) 18:04:25 ID:???
7nobodyさん:2006/04/26(水) 18:05:25 ID:???
8nobodyさん:2006/04/26(水) 18:05:56 ID:???
ム板Perlスレより 1 of 2

[プログラミング自体の経験が無い奴はまずココを読め]
Perlプログラミング講座: http://www.site-cooler.com/kwl/perl/

[本]
リャマ: http://www.oreilly.co.jp/books/4873111269/
駱駝: http://www.oreilly.co.jp/books/4873110963/
Effective Perl: http://www.ascii.co.jp/books/detail/4-7561/4-7561-3057-7.html
クックブック: http://www.oreilly.co.jp/books/4873112028/

[オンラインマニュアル] (追加)
最新のドキュメント: http://search.cpan.org/~nwclark/perl-5.8.7/
perl5.8.xのドキュメント(一部): http://www.kt.rim.or.jp/~kbk/perl-5.8/
perl5.005_03 のドキュメント: http://www.kt.rim.or.jp/~kbk/perl5.005/
日本語ドキュメント検索: http://www.cpan.jp/search.cgi
perldoc.jp: http://www.perldoc.jp/
Perldoc.com: http://www.perldoc.com/
9nobodyさん:2006/04/26(水) 18:07:53 ID:???
10nobodyさん:2006/04/26(水) 19:02:25 ID:???
どっかで、変数の受け渡しはリファレンスを使用すれば
メモリの節約になるって見てから、それ以降ほぼ全てのやり取りを
リファレンス経由でやってるんですが、これってどうなんでしょうか?
そこらへんの作法がよくわからなくて・・・
リファレンスを使用するのは大きなデータを読み込んだときだけにした方がいいんですか?

$str = 'aaa'
↑こういうほんのちょっとの変数でさえリファレンスで渡してたんですが、
普通に変数をコピーして渡すべきなんでしょうか?
11nobodyさん:2006/04/26(水) 19:05:38 ID:???
やりすぎ。パフォーマンスチューニングは特に気になるところだけに集中すべき。
12nobodyさん:2006/04/26(水) 20:00:46 ID:???
>>1
13nobodyさん:2006/04/26(水) 20:13:44 ID:???
スレ立て乙

>>10
その処理のためにスクリプトが10バイトくらい増えてたりしてw
データ大きい時に使うリファレンスはメモリ使用量じゃなく速度目当ての方が多いんじゃないかな。
14nobodyさん:2006/04/26(水) 20:40:59 ID:???
>>10
メモリーを節約したいならそんなもんじゃぜんぜん不十分だろ。
リファレンスが必要になる時点でおわっとる。
変数は全部グローバルにして使いまわさないと。
コピーに比べたら関数の呼び出しはめっちゃコスト高いからな。
もちろん配列をループで扱うなんてもってのほか。
似たような処理はコピーペーストで記述したほうが速いぞ。
さらにやるなら変数ひとつについてファイルをひとつ作って
必要になったときのみ読み込むようにすると信じられないくらいメモリーが節約できる。
他にもまだまだあるけどこれ以上の極意はタダじゃ教えられないなー
15nobodyさん:2006/04/26(水) 20:52:51 ID:???
とまあそのくらい Perl でのパフォーマンスチューニングというものは虚しいものなのだよ。
16nobodyさん:2006/04/26(水) 21:14:04 ID:???
Perlでパフォーマンスを上げにくいということは
逆にいえばパフォーマンスを下げにくいということ?
たまに処理がクソ重い掲示板をとか見かけるんだけど、あれは何が原因なんだろう。
もちろん同じ鯖上で他の掲示板は速かったりする。
17nobodyさん:2006/04/26(水) 22:08:45 ID:keS5Imx+
MEMORY I/OよりもDISK I/Oを選んでる時点で>14はクソ
以上


ハイ次
18nobodyさん:2006/04/26(水) 22:27:04 ID:???
「必死にメモリだけを節約してどうする?」って意味の皮肉だろ。
19nobodyさん:2006/04/26(水) 22:35:51 ID:???
perl起動しただけで結構喰ってるだろうに
スカラ変数1個のメモリなんて誤差範囲に含まれるくらい
20nobodyさん:2006/04/26(水) 22:40:24 ID:???
10みたいなやつに限ってsubの中でグローバル変数を定義してるに違いない
21nobodyさん:2006/04/26(水) 22:50:55 ID:???
>>16
掲示板で体感でわかるほどの違いになることなんかないんじゃなかろうか。
たまたま別の処理でメモリー使い切っていたとか無駄な解析で遅くなっているとか。
やたらCSSやJS、画像が多いと体感でもはっきり遅いけどね。
22nobodyさん:2006/04/27(木) 01:36:01 ID:???
前スレ消費してください
23nobodyさん:2006/04/27(木) 09:26:13 ID:???
>>16
表示する部分だけ拾えばいいところを全メッセージなめてるとかは
普通にありそうだな。
24nobodyさん:2006/04/27(木) 10:10:59 ID:???
過去ログの量に比例して (下手するとそれ以上で) 重くなるとかね。
25nobodyさん:2006/04/27(木) 11:54:18 ID:???
つーか前スレの奴ageで書き込んでるし昨日の変な奴だろ…
無視しろよ。
26nobodyさん:2006/04/28(金) 04:16:53 ID:maSTbsWh
1: 16進数で範囲演算子をするにはどうしたらいいでしょうか?
2: for ($a = 0; $a <= f; $a++)
3: ダメポ
27nobodyさん:2006/04/28(金) 04:27:40 ID:???
# 16進数
for (my $a = 0; $a <= 0xf; $a++) {
  print "$a:(゚д゚)<シメジ\n";
}

# 範囲演算子?
for (0 .. 0xf) {
  print "$_:(゚д゚)<シメジ\n";
}
2826:2006/04/28(金) 04:48:31 ID:???
>>27
thx!!
0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
じゃなくて
0,1,2,3,4,5,6,7,8,9,a,b,c,d,e
と演算させるには地道に置換しかないですか?
29nobodyさん:2006/04/28(金) 05:25:00 ID:???
pack使え
30nobodyさん:2006/04/28(金) 06:25:40 ID:???
リストを作ればいい。
for('0'..'9', 'a'..'f'){ ... }
31nobodyさん:2006/04/28(金) 08:57:45 ID:???
こんな時こそ sprintf じゃないのか?
32nobodyさん:2006/04/28(金) 09:48:18 ID:???
>>31
正解!
3326:2006/04/28(金) 16:24:53 ID:???
domo!
34nobodyさん:2006/04/28(金) 21:23:07 ID:???
>>27
シメジスレに帰れw
35nobodyさん:2006/04/29(土) 07:14:54 ID:???
$str =~ s/// と、tr/// の機能の違いがわかりません。
どっちも同じこと出来ますよね?
本にはtrの方が高速だと書いてあります。なら全部trでいいですよね?
変換と置き換えの違いがわかりません。
教えてください。
36nobodyさん:2006/04/29(土) 08:09:45 ID:???
>どっちも同じこと出来ますよね?
使い方次第。

>本にはtrの方が高速だと書いてあります。なら全部trでいいですよね?
何をしたいかによる。

試しにs/// で、変数中に含まれる小文字アルファベットを全部大文字にする
正規表現を書いてみよう。
trだと tr/a-z/A-Z/; なんだけど、違いが分かるかな?
37nobodyさん:2006/04/29(土) 08:10:16 ID:???
38nobodyさん:2006/04/29(土) 09:02:10 ID:???
tr///はパターンマッチをしていないってハッキリ書けよ。
39nobodyさん:2006/04/29(土) 12:25:23 ID:???
trはメタキャラクタ(エスケープシーケンスの一部)は通すけど、キャラクタクラスは通さない。
気をつけないと嵌る。

tr/\t\n//; # タブと改行にマッチ
tr/\d\s//; # "d"と"s"にマッチ
40nobodyさん:2006/04/29(土) 23:34:00 ID:???
<STDIN>を一度使うと以後使えなくなりますよね?
read (STDIN,$buffer,$ENV{'CONTENT_LENGTH'});
read (STDIN,$buf,$ENV{'CONTENT_LENGTH'});
$buf eq '' and die;

$buf = $buffer;
ではなくてもう一度<STDIN>に入力する方法ってありませんか?
41nobodyさん:2006/04/30(日) 00:16:51 ID:???
>>40
何故それ(STDINへの再入力)が必要なのか、やりたい事を書いて下さい。
42nobodyさん:2006/04/30(日) 01:07:11 ID:???
>>40
> <STDIN>を一度使うと

使うってどういう意味? 標準入力に出力したいのかな。

> もう一度<STDIN>に入力する方法

STDIN へ出力はできないのでは。
というより、設計を見直した方がよさそう。
43nobodyさん:2006/04/30(日) 05:58:26 ID:???
>39
処理する(考慮する)内容が少ないからtrが高速ということか
44nobodyさん:2006/04/30(日) 06:02:22 ID:???
STDINは読み進んだら、後ろは消えてなくなります
そういう仕様です

なので、STDINで読み取ったものを再利用したいのなら一度ファイルに書き戻すか、
サイズが小さいなら読み込んだものを再利用するようにコーディングすればいいです
4535:2006/04/30(日) 07:48:31 ID:???
>>36
s/[a-z]/[A-Z]/;
ですね。違いは・・・カッコ?
>>37
参考ページありがとうございます。
tr///は正規表現を使えないということでいいのでしょうか。
>>38
つまり、探すんじゃなくて見つけたモノを単純に置き換えるということでしょうか。
>>39
なるほど。タブや改行を使えると・・・。でもメタ文字は使えないということですね。

みなさん解説ありがとうごぜーました。
ようやく違いがわかりました。
重複するとこもあるけど、役割はちゃんと違うんですね。
46nobodyさん:2006/04/30(日) 09:13:52 ID:???
>>43
文字クラス展開の有無なんかより、
バックトラックする必要の無い事の方が大きいと思うよ。

>>45
tr/ab/AB/ に等価なのは
s/[ab]/ $& eq 'a' ? 'A' : $& eq 'b' ? 'B' : $& /eg
4736:2006/04/30(日) 10:54:32 ID:???
>>45
ちっがーう! ちゃんと動かして試してみた?
「g」オプションが無いんですよ。

…というのは嘘で、もし s/// で書くとしたら

s/a/A/g;
s/b/B/g;
(中略)
s/z/Z/g;

ってしないとダメなんだ。全然違うでしょ?
>>45に gつけても、出てくるのは小文字アルファベットを [A-Z]に置換した
ワケワカメな結果だけ。
[A-Z][A-Z][A-Z] [A-Z][A-Z][A-Z] [A-Z]…とか。
4836:2006/04/30(日) 10:59:21 ID:???
$bar= "i have a pen.\n";
$bar=~ s/[a-z]/[A-Z]/g;
print $bar;

結果:
[A-Z] [A-Z][A-Z][A-Z][A-Z] [A-Z] [A-Z][A-Z][A-Z].

# キャラクタクラスだのパターンマッチだのより先に言うべき事が…(;´д`)
4940:2006/04/30(日) 11:00:50 ID:???
(STDINへの再入力)が必要な理由は
自分のHPで複数の掲示板を設置しているのですがコメントスパムがひどいんです。
その対策として現在稼動しているCGIにスパム対策を記述したplファイルをrequire '….pl';と読み込ませば
今後の追加対策もplファイルひとつで対応出来ます。
本体のCGIを改造するのは複数あるので困難だし配布先がバージョンアップすると一からやり直しだし、。
という理由で対策用のplファイルで一度<STDIN>読み込んで処理し問題無ければ本体のCGIに戻る→標準入力から呼び出す処理が始まる。
という理由です。
50nobodyさん:2006/04/30(日) 11:13:20 ID:???
>>49
複数の掲示板って一体いくつあるの?
面倒がらずに改造したものを一つ一つ上書きすればいいじゃん。

'….pl'でコメントスパム対策ができるくらいのスクリプトは書けるんでしょ?
本体の頭でrequireしておいて、<STDIN>の後ろに外部サブルーチン呼び出しを
書くだけだから実質2行の追加で本体改造は終わると思うんだが。
51nobodyさん:2006/04/30(日) 11:28:56 ID:???
適当にラッパー書く手もありますがね。
52nobodyさん:2006/04/30(日) 12:03:02 ID:???
そもそもここは「お手軽に既存スクリプトを改造したい人の手助けをするスレ」じゃないよな。
改造物なら専用スレできいてほすぃ。
あくまでもPerlコーディング初心者、つまりこれから上達したい人の質問にその道の先輩が
答えるのが本道なわけだし。
53nobodyさん:2006/04/30(日) 13:42:36 ID:???
>>47-48
tr/ab/ba/ と s/a/b/g; s/b/a/g; は結果が変わるから
tr/a-z/A-Z/ を s/a/A/g …のように説明するのはどうかと思うんだ。
5447-48:2006/04/30(日) 13:58:12 ID:???
>>53
そりゃ、結果は変わるよね(変換がまとめて行われるか否かってレベルで)。
s/a/A/g; のように26回繰り返せば tr と同じ事ができるよって言いたかったんじゃなくて
s/// と tr/// の用途の違いを見せたかっただけ。

そもそも tr は 0-9 a-z A-Zのように連続している事が保証されている文字グループを
同数の別文字に変換する目的なので、その場合は数の多寡に限らず s/// は使わないのがよい。
とか追記すればよかったかな。
5547-48:2006/04/30(日) 14:09:07 ID:???
それともちろん trには文字リストを2つ並べて変換するって用途もある。
jperlやPerl5.8+UTF8で、漢字の新旧変換とか異体字変換する時に重宝する。
5640:2006/04/30(日) 14:33:27 ID:???
確かにあからさまな初心者的質問では有りませんが、
自作しているPerlのコーディングに関する内容なのでここで質問した次第です。
スレ主1の趣旨とかけ離れていると思いませんでしたし。それにここは人が多そうなので。

どうせならrequire '….pl';1行の改造だけで済ませたいです。
# GETメソッドによるチェックもあるのでCGIの2行目に記述しているから

どういうラッパーなんでしょうか?
パイプを変則的に使えば実現出来るのは知っていますが、うちのプロバイダのサーバでは
パイプが使えないようなんです。
57nobodyさん:2006/04/30(日) 15:34:27 ID:???
>>56
> 自作しているPerlのコーディングに関する内容

え、自作なの? >>49では

> 配布先がバージョンアップすると一からやり直しだし

って書いてあるけど…。
58nobodyさん:2006/04/30(日) 15:53:15 ID:???
Perlのdirty hackをなめるなっ
例えば本来のSTDINを閉じてIO::Stringにtieするモジュール。
strictじゃない環境で動かすつもりならIO/String.pmに
ttp://search.cpan.org/src/GAAS/IO-String-1.08/String.pm
を置いて、四行目以降をplファイルに突っ込めばOK。
#=======================================
package Hack::STDIN::Seekable;
use strict;
use warnings;

use IO::String;

my $stdin = join '', <STDIN>;

close STDIN;
tie *STDIN, 'IO::String', \$stdin;
1;
#=======================================
…新たに書こうとしてるならこんなのは絶対に使って欲しくないけどね
59nobodyさん:2006/05/01(月) 00:18:30 ID:kok0N6Ez
Text::ChaSenモジュールをインストールしたのですが、
プログラム中でUse::TextChaSenとしても実行されていないようです。
#!C:/cygwin/bin/perl
use Text::ChaSen;
print "hoge";
とするとエラーも何も出ずに終わってしまうのですが、どういうことなのでしょうか?
モジュールが正しくインストールされていないんですかね?
60nobodyさん:2006/05/01(月) 00:30:02 ID:???
酔っ払い中。

>>59
> プログラム中でUse::TextChaSenとしても実行されていないようです。
その宣言は間違いかもしれません。一般に、 use Text::ChaSen; かも。

> use Text::ChaSen;
> print "hoge";
> とするとエラーも何も出ずに終わってしまう
モジュールが正しく導入された、正常な状態です。
モジュールのインストールでミスってると、@INCを全部探したけどモジュールのファイルが
見つからんぞ、どないなっとんねん?というエラーメッセージが出るはずなので。

結論としては「何ら問題なくインストールできてる。use するときの書き方を再確認すると安心」
ぐらいじゃないですか?
61>>60:2006/05/01(月) 00:34:25 ID:kok0N6Ez
use Text::ChaSen;
print "hoge";
とした場合hogeは表示されると思うのですが、それすら表示されないのです。
use Text::ChaSenの行でプログラムが終了してそれ以降の行に進んでいない気がするのですが…
62nobodyさん:2006/05/01(月) 01:02:08 ID:???
>40
CGIアクセスが実行されるときは、それが投稿なのか普通にアクセスされただけなのかは判別出来てるよね?
それなら簡単じゃないかと・・・
たとえば
my($spamflag) = 0;
if($in{'exec'} eq 'postmsg'){
  require 'denypost.pl';
  $spamflag = &denypostcheck($in{'posttitle'}, $in{'posthome'}, $in{'postmail'}, $in{'postbody'});
}
のようにすりゃいいんじゃないのでしょか?
denypost.plは
sub denypostcheck{
  だらだら〜あーだこーだ
}
1;
だけ

難しく考えすぎじゃないのかな?
63nobodyさん:2006/05/01(月) 10:13:04 ID:BiGx6+8r
@rankpairs=split(/&/,$ranking);
foreach $log(@rankpairs){
    ($jikan,$name,$score)=split(/=/,$log);
 if($pair{score}>$score){
push(@newrank,"$hiduke=$pair{name}=$pair{score}");
$check=1;
     }
     if($check==1){
            if($pair{name} eq $name){next;}
     }
push(@newrank,"$jikan=$name=$score");
}

 得点ランキング用のCGIで、個人の最高得点を記録した後、
ログファイルにある$log{name}データと、フォームから送られた$pair{name]が同じ場合は、
それ以降、同じ名前の人は登録をせずにスルーしたいのですが、どうしてもうまく動いてくれません。
全てが「真」と判断されてしまうみたいで、全て「next」を通ってしまいます。

一体、どこが間違っているのでしょうか? perlの辞典も買ってきて
色々と調べているのですが本当に分かりません。
64nobodyさん:2006/05/01(月) 10:59:16 ID:???
>63
ロジックをよく見直せ。
pushした後で名前の値を比較してどーすんだよ。アフォかいな。
65nobodyさん:2006/05/01(月) 11:19:05 ID:BiGx6+8r
一回目のプッシュは登録されて構わないので、そこで$checkを1にしておいて、
それ以降のループで名前の比較をして、nextしているつもりなのですが…。
66nobodyさん:2006/05/01(月) 11:28:23 ID:???
@rankpairs=split(/&/,$ranking);
foreach $log(@rankpairs){
    ($jikan,$name,$score)=split(/=/,$log);
     if($check==1){
            if($pair{name} eq $name){next;}
     }
     if($pair{score}>$score){
            push(@newrank,"$hiduke=$pair{name}=$pair{score}");
            $check=1;
     }
push(@newrank,"$jikan=$name=$score");
}

でも、順番を変えたら成功しました。
なぜこれだとうまく行くのか、正直まだ理由が理解できていませんが、
>>64、ヒントを下さってありがとうございました。
67nobodyさん:2006/05/01(月) 12:00:35 ID:???
>66
そのソースじゃ問題ありそうな悪寒
68nobodyさん:2006/05/01(月) 12:03:06 ID:???
教えて下さい。

掲示板を作っているのですが
openで読み取りの前に読み込むログを
ロックする必要はあるのでしょうか?
69nobodyさん:2006/05/01(月) 12:11:37 ID:???
ログを飛ばしたくないならロックはした方がいい
k○ntのロックの仕方は真似しちゃ駄目よ
70nobodyさん:2006/05/01(月) 12:15:54 ID:???
>69
ありがとうございます。
71nobodyさん:2006/05/01(月) 15:50:31 ID:???
ke*tって本も出してるし、利用者多いし、優れたコード書く人じゃなかったのか。
72 ◆TWARamEjuA :2006/05/01(月) 16:04:26 ID:??? BE:4574467-#
ガクブル
73nobodyさん:2006/05/01(月) 17:07:02 ID:???
m9(^Д^) ・・・
74nobodyさん:2006/05/01(月) 17:15:00 ID:???
初心者の僕に何が悪いのか説明してください・・・
75nobodyさん:2006/05/01(月) 17:15:27 ID:???
フレームネタなんで、その辺はこちらへどうぞ。

KENT WEB 総合スレ Part2
http://pc8.2ch.net/test/read.cgi/php/1078991985/
76nobodyさん:2006/05/01(月) 17:28:20 ID:???
>>75
サンクス。
必死だということだけは理解した。
77nobodyさん:2006/05/01(月) 18:08:15 ID:???
俺が思うにKENTで配布されてる物の大半は初心者の頃に書いた奴だと思うのだが
今でもあんな書き方してるんだったら知らん^^;
78nobodyさん:2006/05/01(月) 18:09:41 ID:???
(^ω^;)……
79nobodyさん:2006/05/01(月) 19:50:42 ID:???
もう kent 話はいいじゃないか。
おまえら注目しすぎ。
80nobodyさん:2006/05/01(月) 19:53:55 ID:???
KENTさま〜
81nobodyさん:2006/05/01(月) 19:57:37 ID:???
>>69
最後の1行余計。
KENTのソースで普段から勉強してんのか?
8240:2006/05/01(月) 20:23:44 ID:???
58氏有難うございます。
動作確認しました。
個人的に使うだけなので・・・(^^;

稼動中の掲示板にはrequire一行だけしか記述せずに動作させてみたかったんです。
>>40
にもそれらしいことは書きましたが
plファイル抜ける時にreturn $buffer;としてそれを受け取るように稼動中のCGIも改造すれば
すむんですが、こだわってみたかったんです。
だからplファイルはほとんどif文ばかりです。もちろんそれがPOSTとGETなのか動作判定はしてます。
動作的に投稿時の<STDIN>を2回処理する無駄はありますが、体感出来るほどでもないですし。
83pel:2006/05/02(火) 10:15:11 ID:???
Windows2003ServerにActivePerl5.8.8,mod_perl2をインストールし、CGIを作成しているのですが、長時間かかる処理を実行したいため、ブラウザがタイムアウトを起こさないようにバックグラウンドで処理を実行したいと思っています。
例えば下記CGIを実行したとき、バックグラウンドでthre2を実行しておき、ブラウザにはすぐthre1を実行した結果としてprintを実行したいのですが、thre2の終了を待たなければ、thre1は実行されないのです。
これではブラウザがハングアップしてしまうのですが、どのようにしたらよいのでしょうか?
perlのforkやDOSのコマンドstartも試したのですが駄目でした。

***************
use v5.8.0;
use threads;

my $thread1 = threads->new(\&thre1, "1");
my $thread2 = threads->new(\&thre2, "2");

$thread1->join;
$thread2->join;

sub thre1() {
print "$_\n";
threads->yield();
}

sub thre2() {
sleep(30);
threads->yield();
}
***************

よろしくおねがいします!

※マルチポストさせていただいています。
http://www.gac.jp/article/index.php?stats=question&category=10&id=17717&command=msg
84nobodyさん:2006/05/02(火) 11:06:58 ID:???
似たような処理を一つのルーチンにまとめてモード別の細かい条件はifで判断して実行していくのと、
全体のコードが長くなっても、ifを使わないで別処理にしていくのでは、どっちがいいんでしょうか?
前者はコードは短くなりますが、頻繁にifを使うので処理が重くなりそうな気がするんですが・・・
85nobodyさん:2006/05/02(火) 11:09:23 ID:???
>>83
fork使うのなら、
CGI fork バックグラウンド
で検索すると出てくると思う。
86nobodyさん:2006/05/02(火) 11:10:02 ID:???
winでforkって使えるんだっけ
87nobodyさん:2006/05/02(火) 11:14:23 ID:???
>>84
つ 多態
8885:2006/05/02(火) 11:33:29 ID:???
あー、Windowsの場合は平行処理してくれないのか。
89pel:2006/05/02(火) 11:35:57 ID:???
85>>
86>>

UNIXサーバで動いたforkを使ったソースそのままをWindowsサーバで動かしたら、thread同様printされずです。
90nobodyさん:2006/05/02(火) 11:39:33 ID:???
でもthreadは使えるんじゃなかったっけ
91pel:2006/05/02(火) 12:09:46 ID:???
すいません、今テストしたところ、threadは使えてバックグラウンド処理は行えているようです。
(タスクマネジャ参照)
しかし、ブラウザが拘束されて、printされないことが回避できません。
方法知りませんか?
92pel:2006/05/02(火) 12:11:19 ID:???
書き直し。

すいません、今テストしたところ、threadは使えてバックグラウンド処理は行えているようです。
(タスクマネジャ参照)
しかし、ブラウザが拘束されて、sleepが終わらないとprintされないことが回避できません。
方法知りませんか?
93nobodyさん:2006/05/02(火) 12:18:06 ID:???
94pel:2006/05/02(火) 12:29:52 ID:???
>>93
joinをdetachに変えてみます!
95pel:2006/05/02(火) 15:13:58 ID:???
>>93
うまくいきました!!
ありごうとうございました。
96nobodyさん:2006/05/02(火) 15:30:13 ID:???
Net::FTPを使って

$net_ftp->rmdir('directory');

だと、空じゃないディレクトリは消えないのですが、これを

rm -rf(unix)
rd /s /q(NTのCMD)

みたいなことってできますか?
先にディレクトリの中を空にしてから、cdup()で上がって消すしかないですか?


あと、これはついでなのですが・・・
rmdir(DIR,[RECURSE])
mkdir(DIR,[RECURSE])

の中に入るRECURSEって何を入れたらいいもんなんでしょう。。
97nobodyさん:2006/05/02(火) 15:46:28 ID:???
recurseは再帰。
$net_ftp->rmdir('dir', 1);
みたいにしたらディレクトリの中身ごと消してくれる。
とNet::FTPのドキュメントに書いてある。
98nobodyさん:2006/05/02(火) 16:33:51 ID:???
>>97
そのあたりはドキュメント見ながらやったのですが、

$net_ftp->rmdir('dir', 1);

をやるとエラーが出ます。

Deep recursion on subroutine "Net::FTP::rmdir" at C:/perl/lib/Net/FTP.pm line 612.

となって、100回以上ループしてるようなんです。
1と文字列の'true'は試してみました・・・
99nobodyさん:2006/05/02(火) 17:55:48 ID:???
教えて下さい
今CGI掲示板をいじっているのですが

foreachの前に配列や変数を空にする場合
よく@xxx=(); $=0;と見るのですが
undefはあまり使わないのでしょうか?

100nobodyさん:2006/05/02(火) 19:04:32 ID:???
undefはアボーン
初期化とは意味が違います
101nobodyさん:2006/05/02(火) 19:49:10 ID:???
>>100
ありがとうございます
意味は判るのですが

どちら使うか迷ってまして
適当に使ってみます。
102nobodyさん:2006/05/02(火) 20:30:46 ID:???
#!/usr/bin/perl -W

use strict;

my($test);

$test=""; #初期化
print $test;

undef $test; #削除
print $test;

結果:Use of uninitialized value in print at a.pl line 11.

まぁお好みでいいんじゃね?
103nobodyさん:2006/05/02(火) 20:32:50 ID:???
warningsなんて使ってる奴まだ居たのか…Perlの意味ねーだろ
104nobodyさん:2006/05/02(火) 20:34:26 ID:???
>>>103そんなお前のソースは見辛い
105nobodyさん:2006/05/02(火) 20:35:43 ID:???
>>104
いや、strictなソースは素晴らしいけど、warningsはマジで要らなくないか?
空の値をprintするだけでも警告出るんだぞ?
106nobodyさん:2006/05/02(火) 20:36:41 ID:???
空の変数をprintするのが悪いだろw
107nobodyさん:2006/05/02(火) 20:37:40 ID:???
-wなんて超几帳面な奴しか使ってないよ
108nobodyさん:2006/05/02(火) 20:47:13 ID:???
ワーニングはデバックする時しか使ってね
109nobodyさん:2006/05/02(火) 20:51:56 ID:???
運用時には-Wは使ってないけど、開発中は常にそれでやってる
110nobodyさん:2006/05/02(火) 21:03:44 ID:???
そんなオプションがあるのを初めて知った。
111nobodyさん:2006/05/02(火) 21:46:19 ID:???
#!/usr/bin/perl -wc
112nobodyさん:2006/05/02(火) 21:57:52 ID:???
そのトイレオプションの詳細を
113nobodyさん:2006/05/02(火) 22:02:10 ID:???
perl --help
perldoc perl
114nobodyさん:2006/05/02(火) 22:05:57 ID:???
ネットに繋がってないので見れないです
115nobodyさん:2006/05/03(水) 01:09:48 ID:???
>>112
文法チェック
116nobodyさん:2006/05/03(水) 14:03:38 ID:???
>>105
warnings は、warnings の存在意義を理解できないプログラマに最適化されたプラグマです。
つまり、あなたのためにこそ存在しているんです。

必要だと感じる *前に* ぜひ使ってください。
117nobodyさん:2006/05/03(水) 14:44:49 ID:???
warnings厨うざいな
118nobodyさん:2006/05/03(水) 16:28:30 ID:???
warningが出るソースを配布するカスもウザいよな
119nobodyさん:2006/05/03(水) 16:59:32 ID:???
>>115
ということは、CGIとしては動かない?
120nobodyさん:2006/05/03(水) 17:07:03 ID:???
つーか perl -h しろよ
121nobodyさん:2006/05/03(水) 17:31:55 ID:???
>>119
自分で試してみればよくわかる
122nobodyさん:2006/05/03(水) 20:12:19 ID:???
-wc と strict は常識じゃなかったのか・・・
123nobodyさん:2006/05/03(水) 21:10:16 ID:???
>>122
お前の常識は世間の非常識

っていう煽りは置いといて、
常識は常識だろうけど開発が終われば外すのがいいんでねーの
124nobodyさん:2006/05/03(水) 21:18:36 ID:???
ダンは-Tw 使うこと勧めてるけど。
そんな面倒なことやってられるかと思ってたけど、
実際コーティングしていくと、必然的に全ての外部データは
チェックするのが当然だしね。
ただ、処理速度が犠牲になるのがネックか。
125nobodyさん:2006/05/03(水) 22:05:56 ID:???
> 開発が終われば外すのがいいんでねーの

はつみみです。
126nobodyさん:2006/05/03(水) 22:58:28 ID:???
教えて下さい

掲示板をいじっているのですが
(かなり頻繁にログをチェックしたり読み込んだりするタイプです。)

ソースを見ると
openでログを読み込む時に全部読み込んでいるようです
つまり@xxxx = <F>;となっています。
これは必要な部分だけ抜き出すように書き換えた方が良いのでしょうか?

書き方は調べて判ったのですが
いまいち効果があるのか無いのか判りません。
ログの最大容量はまだ決めていないのですが
最大1Mbyteくらいにしようと考えています。

使っているサーバーは共用サーバーで
mod-gzipが自動的に入っているみたいです。
127nobodyさん:2006/05/03(水) 23:10:31 ID:???
>>126
日本語でおk
128nobodyさん:2006/05/03(水) 23:14:22 ID:???
メモリの消費量を抑えたいのなら書き換えた方がいいかもね〜
まぁ一概には何とも言えんが
129nobodyさん:2006/05/03(水) 23:21:02 ID:???
>>126
何がしたいのかによる。
130nobodyさん:2006/05/03(水) 23:25:30 ID:???
>>126
ログ = 1ファイルで1MBということなら、掲示板にしてはかなりサイズが大きいかもね。
その1MBをまた別の変数へ格納してるとか。マズイ造りになっているようなら改造するのもありだけど、
そうでないなら別に気にするほど大きいわけでもないよ。
131126:2006/05/04(木) 00:00:07 ID:???
手直しする事にしました
100ヶ所くらいあるので迷ってました
>127-130
ありがとうございます。
132nobodyさん:2006/05/04(木) 00:15:21 ID:???
>>126
ファイルにデータを置くなんて馬鹿のやることでつよ。
133nobodyさん:2006/05/04(木) 00:21:22 ID:???
問答無用でDB使えるなんていい環境だな
134nobodyさん:2006/05/04(木) 02:48:36 ID:???
DB使えない環境だとブーブー文句言いそうだねw
135nobodyさん:2006/05/04(木) 04:19:37 ID:???
>>131
1から自分で作ればいいじゃん
136nobodyさん:2006/05/04(木) 04:22:02 ID:???
BerkeleyDBが使えないんですか!?
私は開発から抜けさせていただきます!

こういうことですかぁ
137nobodyさん:2006/05/04(木) 05:32:15 ID:???
えっ、ログファイルって全部読み込まなくても処理できるんですか?
掲示板のログ読み込みだと、

open(FH,'<',$path) or die "error: $!";
@data = <FH>;

って全部読み込んでから@dataに対して要素数を調べて、最大表示件数で割って・・・
ってな感じでやってたんですが、
直接FHの行数(要素数?)を調べたり、5行目から10行目を読み込むみたいな操作が出来るんでしょうか?
FHは配列と同じように扱えるのかな?
やり方教えてください。
138nobodyさん:2006/05/04(木) 05:47:04 ID:???
>>137
俺は使った事ないから分からないけど、tieを使えばできると思う。
ただテキストファイルの10MBや20MBくらい屁でもないし(Perl5.8@WinXP)
スクリプトを簡潔に書く意味でもまとめ読みがいいんじゃないかな…

すごくアクセスが多いとかログファイルが膨大とか
掲示板レンタルシステムみたいなのになったらまた話は別だけど。
139nobodyさん:2006/05/04(木) 08:40:59 ID:???
>>137
そんなに配列で扱いたいのなら、Tie::Fileでもつかうといいさ。
# 使ったことがないから、効率はシラネ。
140nobodyさん:2006/05/04(木) 10:58:56 ID:???
ログの解析とかって、それこそ RDBMS に突っ込めば楽だよね。
141nobodyさん:2006/05/04(木) 11:40:50 ID:???
特殊変数$. の使い方ってこれであってますか?
本に現在の行数を表すと書いてあったので、


while(@data = <$fh>){
if($_ =~ /^$num\t/){
$line_num = $. ;
}
}

このように組みました。
ファイルを読み込んでいって、パターンにマッチするデータがあったら
その行数を $line_numに記録しておいて、
あとから@dataにspliceで、記憶していた行にデータを挿入・・・としたいのですが
なんかうまくいきません。
142nobodyさん:2006/05/04(木) 14:10:19 ID:???
>>141
> なんかうまくいきません。
そういわれても…。まずは >>1 を読んでね。

で、>>141 のコードの 1番目の間違いは、while の条件部にリスト(ここでは配列への代入)を置いていること。
s/while/foreach/ で恐らく動作するようにはなるけれど、改良の余地はあちこちにごっそりありそうなんでがんばれ。

# もちろん 0番目の間違いは use strict と use warnings 乃至 -w スイッチを使っていないことなわけだが。
143nobodyさん:2006/05/04(木) 16:32:58 ID:???
>>142
> s/while/foreach/ で恐らく動作するようにはなるけれど、
$. が常に最後の行番号になるのは変わらんな。
144nobodyさん:2006/05/05(金) 11:18:14 ID:???
>137
複数のファイルにわけたら?
件数でわけるなり、日で分けるなり。
145142:2006/05/05(金) 15:37:32 ID:???
>>143
> $. が常に最後の行番号になるのは変わらんな。
ツッコミさんきゅ。

仮に「あとから」でなくてよいのであればこんな解法も。

push @data, /^$num\t/ ? ($insert, $_) : $_ while <$fh>;

>>141 を額面どおりに取ればこんな感じか。

while (<$fh>) {
  $line_num = $. if /^$num\t/;
  push @data, $_;
}
146nobodyさん:2006/05/05(金) 15:59:02 ID:???
-1からのインクリメントでいいじゃん
147nobodyさん:2006/05/05(金) 16:11:31 ID:???
コーディングからはずれる質問ですが…
例えば1から9まで入力させて、それぞれに対応したhtmlを表示するcgiを作るときは

・それぞれのhtmlを作る関数を作っておいて、ifで入力によって呼ぶ関数を分ける
・それぞれのhtmlを作るcgiを作って、ifで呼ぶcgiを分ける

どっちが一般的ですか?あとヒアドキュメントを使うのは好ましくない場合とかありますか?
148nobodyさん:2006/05/05(金) 16:25:37 ID:???
やろうとしてることをわざわざ小難しくしなくてもいいんじゃない?
入力者の名前とかを使いたいなら
(1)表示用HTMLをテンプレートとして用意
(2)CGIで適当なテンプレートHTMLを読む
(3)名前とか、そのほか色々を置換して表示
がいいんじゃないかな
HTMLは1つで済むし
149nobodyさん:2006/05/05(金) 16:37:56 ID:???
>>147
1〜9までのHTML名を配列に入れておき、
入力に応じてファイルとして読み込んでそのまま表示
150nobodyさん:2006/05/05(金) 16:40:07 ID:???
HTMLを表示させるだけならJavaScriptで充分かと思う
151nobodyさん:2006/05/06(土) 01:44:53 ID:???
>>147
起動スクリプトは1つの方が管理は楽

#条件処理
my $ACTION = {
1 => \&do_1,
2 => \&do_2,
3 => \&do_3,
}

MAIN:{
# 初期化処理を適当に

$ACTION->{ $cgi->param('action') }->();

# テンプレ表示処理などをする

}

sub do_1{}
sub do_2{}
sub do_3{}
152nobodyさん:2006/05/06(土) 05:52:25 ID:???
>>151
うんこな書き方でつね。
153nobodyさん:2006/05/06(土) 08:42:44 ID:???
書くならこうかしらん。

my $mode = get_mode();
my $action = [undef, \&do_1, \&do_2, \&do_3]->[$mode] or error();
$action->();

>>152
オブジェクト指向以外で、いい書き方ある?
154nobodyさん:2006/05/06(土) 09:22:34 ID:???
> オブジェクト指向以外で、いい書き方ある?

どんな書き方をオブジェクト指向としたいのか明確にしてよ。
155nobodyさん:2006/05/06(土) 09:29:06 ID:???
まぁ、なんと言うかPerl臭い書き方ですな
156nobodyさん:2006/05/06(土) 09:47:31 ID:???
> まぁ、なんと言うかPerl臭い書き方ですな

KENT 臭い書き方ということ?
157nobodyさん:2006/05/06(土) 09:52:54 ID:???
KE●Tは多分こんな感じ

if($mode eq 'write'){ &write; }
158nobodyさん:2006/05/06(土) 09:59:47 ID:???
KENTさんの方が分かりやすいな。
159nobodyさん:2006/05/06(土) 10:38:27 ID:???
その局面でわざわざ hash にする意図が分からん。

my $action = 'do_' . $cgi->param('action');
eval {
no strict 'refs';
$action->();
};
160nobodyさん:2006/05/06(土) 10:46:49 ID:???
>>154
パッケージ作って、blessした変数を使う方法全般。
Perlっぽいとしたら、こんなのとか。

my $mode = get_mode();
my $do = "do_". $mode;

my $obj = Local_table->new();
$obj->$do();
exit;

package Local_table;

sub new { return bless {}, shift }

sub do_1 {}
...

sub AUTOLOAD {
use vars qw($AUTOLOAD);
my $self = shift;
my $name = $AUTOLOAD;
$name =~ s/.*:://;
error("not implemented $name");
}

sub DESTROY {}

# 書いてたら、>>159に似てる…。
161nobodyさん:2006/05/06(土) 12:36:26 ID:???
ずっとKENT風に書いてきた・・・
渡された変数名の関数を呼べばKENT風に書かなくてもいいのか。 なるほど。
でも、存在しない関数を呼び出されそうな場合のトラップはどうすればいいだろ?
その関数が存在するか調べてたらKENT風に書くのと対して変わらんし・・
162nobodyさん:2006/05/06(土) 13:46:28 ID:???
eval と $@ で十分じゃん。
163nobodyさん:2006/05/06(土) 14:37:39 ID:???
eval と $@ で十分じゃんって言われても分からんかったので調べた・・・

evalの中で関数呼び出して、evalを抜けた直後の$@がNULLだったらエラー無しか
なるほど
これはいいかもしんない
164nobodyさん:2006/05/06(土) 15:04:02 ID:???
>>162-163
詳しく!!!
165nobodyさん:2006/05/06(土) 15:13:21 ID:???
詳しくも何も >163 のまんまじゃねーか…
166nobodyさん:2006/05/06(土) 15:40:56 ID:???
初心者スレなんだからKENT風でいいんじゃね?
リファレンスを使うのはポインタでつまずくC言語みたいだし、
evalはうっかりダブルクォートで変数を使ったりするとアレな事があるし。
167nobodyさん:2006/05/06(土) 15:44:49 ID:???
最後の変数を〜 の部分がわからない
なんか不具合でも?

携帯だから調べらんねorz
168nobodyさん:2006/05/06(土) 16:07:17 ID:???
レベルの高低ではなく、初心者が読んで勉強にならないようなレスは
このスレ的に糞レス。
上級者気取りのPerlerの腕自慢スレじゃないんだぞ☆

>>162-163
kwsk
169nobodyさん:2006/05/06(土) 16:10:27 ID:???
>>168
(´・ω・)(・ω・`)ネー
170nobodyさん:2006/05/06(土) 16:12:28 ID:???
ぐぐると一番上にでてくる物すら読めないのかよ
171nobodyさん:2006/05/06(土) 16:58:36 ID:???
@ とか $ ってぐぐれないだろ
172nobodyさん:2006/05/06(土) 17:01:22 ID:???
うん
173nobodyさん:2006/05/06(土) 17:07:20 ID:???
全くひどい話だ
174nobodyさん:2006/05/06(土) 17:15:25 ID:???
175nobodyさん:2006/05/06(土) 17:18:17 ID:???
Perlコーディング””初心者質問スレ”” Part 48
176nobodyさん:2006/05/06(土) 17:27:05 ID:???
まぁ俺だけかもしれないけど
別言語に移植しやすいように書くよう心がけてます
177nobodyさん:2006/05/06(土) 17:29:31 ID:???
"perl eval"でぐぐれば、出てくるがな。
178nobodyさん:2006/05/06(土) 17:37:48 ID:???
if ($mode eq 'test1') { &test1; }
elsif ($mode eq 'test2') { &test2; }
elsif ($mode eq 'test3') { &test3;}

&main;

test.cgiにそのままアクセスされたらサブルーチンmainを表示
test.cgi?mode=test1でアクセスされたらサブルーチンtest1を表示したいのですが

実際やってみても全てmainが表示されてしまいます、どうしたらいいんでしょうか。。。
179nobodyさん:2006/05/06(土) 17:40:22 ID:y5pDzvYJ
age忘れ
180nobodyさん:2006/05/06(土) 17:40:52 ID:qaiuXg8a
古い掲示板スクリプトで、

&jcode::sjis($value);

とかやって、外から入ってきたデータの文字コードをshiftjisにしてますが、
これを今のEncodeモジュールを使って表現するとどうなるんでしょうか?
181nobodyさん:2006/05/06(土) 18:02:24 ID:???
>>178
else{ &main; }
サブルーチン名にmainを使ってる点はあえてスルーした
182178:2006/05/06(土) 18:14:42 ID:y5pDzvYJ
>>181
if ($mode eq 'test1') { &test1; }
elsif ($mode eq 'test2') { &test2; }
elsif ($mode eq 'test3') { &test3;}
else { &main; }

にしたんですが、、やっぱりmainの内容が表示されてしまいます…
$modeの定義方法が悪いのでしょうか…

test.cgi?test1と書いたらtest1の内容がちゃんと表示されました

むー…
183nobodyさん:2006/05/06(土) 18:14:56 ID:???
>>178

>test.cgi?mode=test1

これで test1 が $modeに入るわけないけど、そこらへんの理解は大丈夫だよね?
184nobodyさん:2006/05/06(土) 18:16:28 ID:???
>>168
少し上に調べて理解できた初心者がいるのに、お前が理解できないのはただの怠慢。
185nobodyさん:2006/05/06(土) 18:23:04 ID:???
>>184
嘘を嘘と見抜けない人は(ry
186178:2006/05/06(土) 18:23:50 ID:y5pDzvYJ
>>183
はあ…確かにそうですよねえ
でもKENT氏のCGIとか見てもよくわからない…

そこらへんの理解が大丈夫そうじゃないですorz
187nobodyさん:2006/05/06(土) 18:23:54 ID:???
あーもう分かったからソース全部どっかのあげてみろや
188178:2006/05/06(土) 18:31:07 ID:y5pDzvYJ
>>187
http://read.kir.jp/file/read45847.zip
アップしました
表示分岐テスト用に作ってあるだけなので内容は短いです
189nobodyさん:2006/05/06(土) 18:33:09 ID:???
>>188
いきなり

> #$mode = $ENV{'QUERY_STRING'};
に吹いたw 何でコメントアウトしてあるんだよw
190nobodyさん:2006/05/06(土) 18:39:43 ID:???
ワロス
191178:2006/05/06(土) 18:41:01 ID:y5pDzvYJ
>>189
それを入れるとtest.cgi?test1になってしまうからですかね…

どうやったら$modeをきちんと認識させられるでしょうか...
192nobodyさん:2006/05/06(土) 18:44:54 ID:???
http://x-web.pobox.ne.jp/fcgi/fcgi_index.html

ここでも音読してなさい
あんまいいサイトとは言えないけど
193nobodyさん:2006/05/06(土) 18:46:06 ID:???
$modeには mode=test1 が入らないか?(試してないから分からんが)
そしたら = でsplitして後は好きなように料理すればいいじゃん
194nobodyさん:2006/05/06(土) 18:53:46 ID:???
use CGI qw(param);

my %mode_map = map { $_ => 1 } qw(test1 test2 test3);
my $mode = param('mode') || '';
$mode_map{$mode} ? $mode->() : main();

これでいい気がする。
195178:2006/05/06(土) 18:59:44 ID:???
>>192
ありがとうございます、参考にしますm(__)m

>>193
ありがとうございます

>>194
ためしにやってみたらできました!


みなさん本当にありがとうございました

これで目的のものを作っていけます
196nobodyさん:2006/05/06(土) 19:10:10 ID:???
>>194
あるかどうか調べるためだけにハッシュを用意するなら>>151でいいじゃん
197nobodyさん:2006/05/06(土) 22:10:22 ID:5YeEOpS5
#!/usr/local/bin/perl

$countdat = "count.dat";#カウンターログファイル
$ipdat = "ip.dat";#IPログのファイル

open (IP, "+<$ipdat");
flock(IP, LOCK_SH);

$iplog = <IP>;
$ip = $ENV{ 'REMOTE_ADDR' };

if( $ip eq $iplog ){
seek(IP, 0, 0);
print (IP $ip);
close (IP);
}
else{
open (DATA, "+<$countdat");
flock(DATA, LOCK_SH);

$count = <DATA>;
$count++;

seek (DATA, 0, 0);
print(DATA $count);
close(DATA);

print (IP $ip);
close (IP);
}
exit;
198nobodyさん:2006/05/06(土) 22:11:24 ID:5YeEOpS5
IPが重複していたらカウントしないような、カウンターを
作りたくて上記のようにうってみたのですが、エラーが出て
しまい、うまく動作しません。何が間違っているか自分では分からないので
教えてもらえたらと思います。
199 ◆TWARamEjuA :2006/05/06(土) 22:25:17 ID:??? BE:5880896-#
エラーメッセージも何も示されていないのでよく判りませんが、2行目に

use Fcntl qw(:flock);

を入れてみるとか。
200nobodyさん:2006/05/06(土) 22:51:37 ID:???
>>198
エラーってまさか「Internal Server Error」とかじゃないよね・・・?
201nobodyさん:2006/05/06(土) 22:56:46 ID:???
>>199で確かにエラーは消えるが…はてさてフフーン
202nobodyさん:2006/05/06(土) 23:01:55 ID:???
標準出力に何も吐かないCGI
203nobodyさん:2006/05/06(土) 23:11:11 ID:???
>>202
ソレダ!!
204nobodyさん:2006/05/06(土) 23:20:24 ID:5YeEOpS5
すみません。説明不足でした。
裏で処理させるだけのものってことでお願いします・・・。
>>200
Internal Server Errorなのか分からないです。
分かることだけ書いてみます。
・パーミッションは実行権限与えてます。【755】
・呼び出してはいるみたいですが、実行できていないため
ファイルも作成されていません・・・・。
205nobodyさん:2006/05/06(土) 23:30:26 ID:???
>>204
まだ説明不足です。
206nobodyさん:2006/05/06(土) 23:32:02 ID:???
> Internal Server Errorなのか分からないです。

エラーが出るのではなかったの?
CGI Wrap Errorみたいなのに過剰に優しく包まれてしまってるの?

ついでに。
http://pc8.2ch.net/test/read.cgi/php/1104624784/2
207nobodyさん:2006/05/06(土) 23:40:44 ID:???
>>205
とりあえず、自力でもっと頑張ってみます。
質問に答えてくれてありがとうです。
208nobodyさん:2006/05/07(日) 00:25:58 ID:???
なんでエラーログぐらい貼ろうとしないのよ・・・

実行できてないのが分かってるなら文法エラー
エラーログにエラーとなる原因の行が書かれてるからその1行を書く
エラーがごっそり出てる場合は、たとえばCGIにアクセスした時間が00:00:50とするなら、
エラーログで00:00:50の時間帯のエラーの最初の1文を貼り付ければいい
念のため2〜3行でもいいし

とにかくエラーログを貼らないとどうにもならないです
209nobodyさん:2006/05/07(日) 00:36:16 ID:NJ/WTSjH
1: サイト内検索の設置を目論み
2: http://siriasu.s10.xrea.com/cgi/wsrch/wwwsrch.htmのサンプルを設置してみました
3: こんな感じになりました
 ・フォームに半角カナがあると文字化けを起こして検索できない
 ・検索がきちんと行われてもヒントとして表示される文が文字化けを起こす

Shift-JISのファイルを検索したいのですがどなたかコーディング&アドバイスお願いします
210nobodyさん:2006/05/07(日) 00:47:39 ID:???
>>209
改造のお話なので、どっちかのスレに移動してください。

・ヒントをもらいながら自力でがんばる場合はこっち
★三 【 スクリプト改造工房 PART 9 】 ★三
http://pc8.2ch.net/test/read.cgi/php/1143834740/1+3

・何かとよろしくお願いしてしまう場合はこっち
【 スクリプト改造依頼スレ 】(丸投げ) part5
http://pc8.2ch.net/test/read.cgi/php/1141174205/1+3
211nobodyさん:2006/05/07(日) 00:48:45 ID:NJ/WTSjH
>>210
分かりました
212nobodyさん:2006/05/07(日) 01:02:55 ID:???
>>197
悪癖をこじらせたまま成長して欲しくないのでざっと目視添削してみます。

1. 特に理由がなければ常に -w スイッチ(あるいは可能なら use warnings)を使いましょう。
# できれば use strict も使いましょう。

2. flock() で文字列定数を使うときには...>>199

3. CGI.pm の利用を検討しましょう。大丈夫、案外怖くないです。

4. or die などを用いて open (と flock, seek)の返り値を確認しましょう。
# サンプル用に省略してたなら失礼。

5. "+<" モードでは存在しないファイルを開けません。前もってファイルを用意しておくか sysopen() を使いましょう。

6. print(FH $output) ではなく print FH ($output) と書きましょう。間接オブジェクトスロットの記法に注意しましょう。

7. サーバにアップロードする前に、最低限 -wc スイッチを用いたチェックをクリアーしましょう。

がんばれ。
213212:2006/05/07(日) 01:13:44 ID:???
s/文字列定数/定数/; # 訂正。寝ぼけてましたごめんなさい。
214nobodyさん:2006/05/07(日) 01:50:30 ID:???
こういう具体的なポイントを示してくれるのってすごくありがたい。
参考にさせてもらうよ
215nobodyさん:2006/05/07(日) 02:12:23 ID:uQfuojW8
Win32::OLEを使ってperlでWordの文書を印刷しようと考えています。
一応本(VBA)とネットの情報で、ローカルで実行して動くものはできました。
ただこれを、同じPCにApache入れてCGIとして動かすと動作が止まってしまいうまくいきません。
Apacheのエラーログには何も残らず、Wordが強制的に中断されたような状態になってしまいます。
行き詰まってしまって全く手がかりがつかめません。
どなたか、ご教授願えませんでしょうか。

# 一応Content-type書いてないとかそういうミスはないと思います。
216nobodyさん:2006/05/07(日) 02:36:06 ID:uQfuojW8
なんかデーモンをAn httpdってやつにしたら動きました。。。
すれ違いの質問っぽいので向こうで聞いてきます。。。
217nobodyさん:2006/05/07(日) 11:10:27 ID:YyQiWuCM
はじめまして。
掲示板を作りたくてperlについて学び始めた者です。
で、そのための学習書に沿って学ぼうとしてるんですけどperlのサンプルファイルがうまく起動しなくて困ってます。
ファイルを立ち上げても、一瞬ウィンドウが開いてすぐに消えてしまうからです。
原因のわかる方、対処法を教えてください。よろしくお願いします。
218nobodyさん:2006/05/07(日) 11:20:12 ID:???
>217
その説明ではエスパーでないと原因が分からないと思います。
219nobodyさん:2006/05/07(日) 11:23:26 ID:???
>>217
どのOSか知らんがコマンドラインから実行してみな
perl sample.pl
220nobodyさん:2006/05/07(日) 11:26:57 ID:???
恐らく関連付けでサンプルを実行してるかと思われ
なので219さんが言う通りにやってみるとよい
221217:2006/05/07(日) 11:35:33 ID:YyQiWuCM
コマンドラインについて調べた上でやってみたらうまくいきました。
219さん、ありがとうございますm(_ _)m
でも直接立ち上げるにはどうしたらいいかわかります?
やっぱり少し不便なんでアドバイスもらえるとありがたいです。
222nobodyさん:2006/05/07(日) 11:40:21 ID:???
1.perl で GUI を開発できる環境
2.常にコマンドプロンプトを起動しておく
3.Apache を入れる
223nobodyさん:2006/05/07(日) 11:41:57 ID:???
いずれかをどうぞ

コマンドプロンプトを起動しておいたままってのが一番簡単かな
224nobodyさん:2006/05/07(日) 11:45:26 ID:???
俺ならCopal2をすすめるけど。
練習にはコマンドプロンプト起動よりずっと良いし、CGIじゃなければそのまま使い続けられる。
UTF8のスクリプトに対応していないのが残念だが、練習レベルでは関係ないし。
225nobodyさん:2006/05/07(日) 11:50:35 ID:???
>>212
197に書かせてもらった本人です。
これを参考にもう一度見直してみます。
エラーの内容が分かったらまた書かせてもらうかもです。
ありがとうございます。
226nobodyさん:2006/05/07(日) 12:00:24 ID:???
AnHTTPdが簡単でいいんじゃないのかな?

AnHTTPd・設定
http://penguin.nakayosi.jp/windows/anhttpd.html

AnHTTPdの設定のドキュメントルート欄にsample.plの入っているパスを書く。(例えば、c:\Perl\eg)
ブラウザ(IEとか)のアドレス入力欄に”http://127.0.0.1/sample.pl”と入力してエンター。
227nobodyさん:2006/05/08(月) 12:15:35 ID:???
>>217
@echo off
perl %*
pause

とかなんかそういう内容のバッチを書いて拡張子 ".pl" に関連付けるがいい。自己責任で。w
ちなみに cmd.exe 限定。command.com な人はちょっと違ってくるので注意な。
228nobodyさん:2006/05/08(月) 15:30:46 ID:SAcZGaHh
クッキーが書き込めないよう(つд‘)
テンプレートをHTML::Templateを使用して出力しているのですが、
クッキーをヘッダに書きだすにはどうすれば。。。?

use strict;
use CGI;
use HTML::Template;

my $q = new CGI;
my $cookie = $q->cookie(-name=>'TEST', -value=>"cokkietest", -expires=>'+1h');
print $q->header( -type => 'text/html' -charset => 'EUC-JP', -cookie => $cookie);

my $tmpl = HTML::Template->new(filename => 'test.html');
$tmpl->param(TESTNAME => 'クッキー書けない');
print "content-type: text/html\n\n";
print $tmpl->output();
229nobodyさん:2006/05/08(月) 15:35:38 ID:??? BE:240570454-#
(゚Д゚)ハァ?
230nobodyさん:2006/05/08(月) 15:39:16 ID:??? BE:673596487-#
誤爆スマソー
231nobodyさん:2006/05/08(月) 15:56:32 ID:???
>print "content-type: text/html\n\n";
いらなくね?
232nobodyさん:2006/05/08(月) 15:58:49 ID:???
>>228
手元のマシンでヘッダを吐くところまで、一度実行してみるといいよ。
233nobodyさん:2006/05/08(月) 20:54:56 ID:???
>>225
原因が分かりました。
標準出力に何も表示させないとエラーが出るみたいです。
なので、
print "Content-Type: text/html\n\n";
print "$count\n";
を付け加えて、CSSでvisibility: hidden;で隠せばエラーが出ず
ファイルをうまく作成してカウントしてくれるみたいです。
最後に、質問に答えてくれてありがとうございます。
234nobodyさん:2006/05/09(火) 02:28:53 ID:sSrkJPdW
1: Shift-JISで書かれたページで文字コードをEUC-JPに変換
2: &jcode::convert(\$word, "euc");
3: ひらがなや漢字のみのケースでは変換されましたが
  半角カナのみのケースや半角カナだけのケースでは変換されませんでした
235nobodyさん:2006/05/09(火) 03:15:24 ID:???
>>234
へぇ、そうなんだ。
236nobodyさん:2006/05/09(火) 03:56:51 ID:sSrkJPdW
>>235
マジっす。
&jcode::convert(\$word, "euc");
してから再度Shift-JISに変換したら今度は文字化けします。
237210:2006/05/09(火) 04:44:28 ID:???
>>234,236

↓別の人?
http://pc8.2ch.net/test/read.cgi/php/1143834740/43 に行ったここの>>209
http://pc8.2ch.net/test/read.cgi/hp/1143690384/253 で俺を召喚してる人
238nobodyさん:2006/05/09(火) 09:06:41 ID:???
多分ここら辺だろうね。

・厳密にはShift_JISに半角カナは含まれない。
・Shift_JISで使う半角カナのコードはEUC-JPの漢字コードと被ってる。

よってノーマルのjcode.plの自動判別に半角カナは使えない。
入力する文字コードを指定するか、jcode.plを自分でカスタマイズする。
239nobodyさん:2006/05/09(火) 09:15:01 ID:???
フセチー をsjisで保存してeucとして開くと・・・
240nobodyさん:2006/05/09(火) 09:24:13 ID:???
>>239
どんな下ネタが飛び出すかとドキドキしたよw
241nobodyさん:2006/05/09(火) 12:05:05 ID:???
なんか釣られた気分いっぱいだorz
242nobodyさん:2006/05/09(火) 12:20:31 ID:???
・・テ・ユ・・・テ・ユ・・ェ。ェ
243nobodyさん:2006/05/09(火) 12:25:16 ID:???
しねばいいとおもった
244nobodyさん:2006/05/09(火) 18:03:51 ID:???
質問です

#!/usr/bin/perl
#use CGI::Carp qw/fatalsToBrowser/;
use LWP::Simple;
use XML::Simple;
$xml = XMLin(get('http://weather.livedoor.com/forecast/rss/24/42.xml'));
print 'Content-Type: text/html; charset=utf-8', "\n\n";
print $xml->{'channel'}->{'item'}->[1]->{'title'};

1.ローカルで実行した時に
  "Wide character in print at〜"と出るのを消したい

2.XREAに置いた時、エラーになって動作しない
  2行目のCGI::Carpのコメントアウトを外すと正常に動作します
  なぜでしょうか?

お願いします
245nobodyさん:2006/05/09(火) 18:16:35 ID:KHJc4thI
ちょっとは、お役に立てるかな?
http://www.yukinko-net.jp/computer/download/downloadlist.htm
246nobodyさん:2006/05/09(火) 19:28:10 ID:???
>>244
1.はSTDOUTのレイヤを適切に指定してやればいいと思われる。
utf-8で出したいようなので、例えば

binmode STDOUT, ':utf8';

をprintする前に実行。

2はオレにはよくわからん。
247nobodyさん:2006/05/09(火) 19:34:14 ID:???
2はモジュール入ってないだけじゃね?
248244:2006/05/09(火) 19:55:29 ID:???
>>246
ついさっきまでローカルで実行してた時は 1. の表示は出なかったんですよね
急に出たんです。なんででしょう。

>>247
CGI::Carpのコメントアウトを外せばちゃんと正常に表示されるので
モジュールは入ってると思います
249nobodyさん:2006/05/09(火) 23:39:05 ID:???
>>248
XREA使ってるし、 use CGI::Carp qw(fatalsToBrowser); を
使ったりコメントアウトしたりもしてるけど、それが原因でコケたことはないです。

コードがBOMつきのUTF-8で書かれてるとCGI Wrap Errorが出るかも。
hoge.cgi(例)を hoge.cgid にリネームしてアクセスしたら詳細が出ますよ。
250244:2006/05/09(火) 23:48:12 ID:??? BE:192457128-#
>>249
ありがとうございます
could not find ParserDetails.ini in /usr/local/lib/perl5/site_perl/5.8.3/XML/SAX
って出ました。別のパーサー使えば治りそうなのか…な?
スクリプトファイルの文字コードはASCII文字列だけなので、特にはありません。
バイナリエディタで確認してもBOMは付いてなかったです。

Wide〜のエラーが出るのは何なんでしょうね?
251244:2006/05/09(火) 23:56:34 ID:???
ちょっと調べてみたら
XMLパースの時点でutf8フラグが付いてますね
これ無くすオプションみたいなのないんでしょうか
252nobodyさん:2006/05/10(水) 00:09:53 ID:???
Wide〜のほうは>>246さんのレスや
ttp://www.pure.ne.jp/~learner/program/Perl_unicode.html#widechar
この辺で。

XMLパーサー方面は詳しくないのでよくわからないのですが、
自分が使ってるs73のXML::RSSは機嫌よく動いてくれてます。
253244:2006/05/10(水) 00:13:17 ID:???
>>252
ありがとうございます
そこは何度も見ています
XML::Simpleは重いとの噂もありますし、
なるべく使わない方がいいのでしょうか?
254nobodyさん:2006/05/10(水) 04:29:59 ID:???
少しは自分で判断しろや
255nobodyさん:2006/05/10(水) 13:57:23 ID:???
質問に答えられない馬鹿はレスしなくていいよw
256nobodyさん:2006/05/10(水) 14:27:15 ID:B75NkyiD
これはひどい

少しは自分で判断しろや
257nobodyさん:2006/05/10(水) 14:31:29 ID:???
ではXML::Simpleの使用は自分で判断するとして
1.のエラーが突然現れたのは何故でしょうか?
258nobodyさん:2006/05/10(水) 14:39:38 ID:???
>>257
鯖の応答が突然変化したか、お前が忘れてるだけで何かやったの
どちらか。

259nobodyさん:2006/05/10(水) 14:43:49 ID:??? BE:433026566-#
>>258
自分のレスを読めば分かると思いますが、
皆さんのおかげでXREAの問題は解決しています
ローカルで時間を置いて実行したら急に『Wide〜』の表示が出たので
自分が何かをした、と云うのは無いと思います
260nobodyさん:2006/05/10(水) 15:15:57 ID:???
Locationヘッダについて質問です。
Locationヘッダを最後に書き別のページへ移動するようにした
スクリプトをインラインフレームから実行してもフレームを抜けてくれません。
とある解説書によるとLocationヘッダは動的にアドレス欄を変更することで
どの子フレームも抜けられるはずなんですが・・・。
代替策でもいいのでアドバイスお願いします。

また、ここの掲示板に書き込みすると「書き込みました。しばらくお待ちください。」
と表示されて自動的にページが移動しますが、あれはどうやっているのでしょうか。
261nobodyさん:2006/05/10(水) 15:19:15 ID:??? BE:96228342-#
262nobodyさん:2006/05/10(水) 15:24:36 ID:???
インライン内では無理だと思う
「しばらくお待ちください」からページが変わるのはMETAタグのRefreshで
フレームを解除したいなら、そのフォームのTARGETに_top指定とかは?
263nobodyさん:2006/05/10(水) 15:31:03 ID:???
>260
答えた後でなんだが板違いですので続く質問はWeb制作の方でどぞ
Locationに関しての質問は
△▲ WebProg 初心者の質問 Part13 ▼▽
http://pc8.2ch.net/test/read.cgi/php/1139468729/
にてどうぞ
264nobodyさん:2006/05/10(水) 15:39:59 ID:??? BE:180427853-#
板違いじゃないだろう
JavaScriptで
window.open("jump_to.html", "_top");
これでうちの環境はインラインフレーム抜けたけど
265nobodyさん:2006/05/10(水) 15:54:44 ID:??? BE:240570645-#
何秒後とかやりたいのなら
setTimeout('top.location.href="jump_to.html"',"3000");
とか
266nobodyさん:2006/05/10(水) 16:10:36 ID:???
>>260-265 みなさ〜ん
ここはPerlコーディングスレですよ
267nobodyさん:2006/05/10(水) 16:13:29 ID:???
>>264は池沼だからしょがない
残念な人だから優しくヌルーしてあげるのがやさしさだ
268nobodyさん:2006/05/10(水) 16:15:28 ID:??? BE:144342443-#
少なくとも質問者はLocationヘッダ云々言ってるんだからスレ違いじゃないでしょ。
回答者が何を答えようと勝手でしょ
そんな事も分からないのかな…
269nobodyさん:2006/05/10(水) 16:24:56 ID:???
HTTPヘッダがいつperl特有のものになったんだよチンカス
270nobodyさん:2006/05/10(水) 16:26:27 ID:??? BE:180427853-#
それも一種のコーディングでしょ。
271nobodyさん:2006/05/10(水) 16:27:21 ID:???
解答者が何を答えようが勝手とか、どこまで残念な脳味噌してるんですか・・・
残念将軍だな
272nobodyさん:2006/05/10(水) 16:27:58 ID:??? BE:324770639-#
>代替策でもいいのでアドバイスお願いします。

って書いてあるでしょ
日本語読めるの?
273nobodyさん:2006/05/10(水) 16:30:15 ID:???
ロケーションヘッダ送信後の動作はクライアントの問題であり、Perlコーディングの問題では無い。
ここまで丁寧に書かないと駄目ですか・・・
274nobodyさん:2006/05/10(水) 16:30:41 ID:???
264と268は、267の「残念な人」を「Perl=CGIだと勘違いしている人」と
読み替えてみるところから始めるといいと思うよ。
275nobodyさん:2006/05/10(水) 16:32:13 ID:??? BE:144342634-#
print 'Location: http://example.com/', "\n";

こんなコードでも一種のコーディングでしょ
何言ってるんだか
276nobodyさん:2006/05/10(水) 17:05:20 ID:???
ここwebprogだし、HTMLとかも含めての質問じゃないの?
277nobodyさん:2006/05/10(水) 17:31:05 ID:??? BE:240570645-#
(´・∀・`)ヘー
もうどうでもいいや
278nobodyさん:2006/05/10(水) 17:43:37 ID:???
Perlのflockの事で、「OSによっては致命的エラーになる可能性がある」という記事を読んだのですが、
ここで言うOSとは鯖のOSの事なんですか?
flockchという検査用の配布スクリプトを実行してみたところ正常に動作しましたが、
flockの動作がクライアント側のOSに依存するのであればmkdir方式に変更しようかと考えてます。
良い方法を教えてください
279nobodyさん:2006/05/10(水) 17:48:33 ID:???
板とスレはきちっと区別しましょう
PHPスレでPerlの質問はスレ違い
だからPerlスレでHTML・Perlはスレ違い

ある質問に対して最初の回答ならまだしも、それ以上の回答はスレ違いだからと誘導があるのにしつこい>>277が悪いな
280nobodyさん:2006/05/10(水) 17:48:37 ID:??? BE:324770639-#
Win98とかじゃないの
281nobodyさん:2006/05/10(水) 17:49:15 ID:??? BE:433027049-#
>>279
お前も十分しつこいわw
282nobodyさん:2006/05/10(水) 17:50:33 ID:??? BE:541282695-#
だから〜回答者が何を言おうと自由なの。
ここは君のスレでも君の板でもないの。
283nobodyさん:2006/05/10(水) 18:23:56 ID:dkGjsQPO
なんだろ
かわいそうな固定って何処の板にも居るもんですね
284nobodyさん:2006/05/10(水) 18:25:04 ID:??? BE:144342926-#
もうコテやめたしー
285nobodyさん:2006/05/10(水) 18:28:07 ID:dkGjsQPO
beで書いておいて固定じゃないとか(((;゚д゚)))
286nobodyさん:2006/05/10(水) 18:28:07 ID:??? BE:180427853-#
で、さ。
悪口は別にいいんだけど、
>>246,248
の答え分かる人居ないのかな?
287nobodyさん:2006/05/10(水) 18:28:47 ID:??? BE:866052689-#
Beはニュー速の規制回避の為に常時付けてるだけだよ
外すのもめんどいし
288nobodyさん:2006/05/10(水) 18:30:31 ID:???
雑談は他でやれ
289nobodyさん:2006/05/10(水) 19:15:35 ID:???
test
290nobodyさん:2006/05/10(水) 19:20:53 ID:???
265より上の人たちよ!!

おいおい、君らほんとに2ちゃんねる使ってるの?
2ちゃんねるではJavaScriptを切っても、書き込み後に自動的に移動するぞ。
確認もせずにまあぬけぬけとJavaScript談義を抜かして何やってんだかorz
だから、perlでどうやって自動的にページを移動するかというのが問題。
だふんperlのalert関数を使ってるんじゃない?
この関数はフリー鯖では使えないけど。
291nobodyさん:2006/05/10(水) 19:22:04 ID:??? BE:541282695-#
292nobodyさん:2006/05/10(水) 19:36:09 ID:???
何だこの流れ('A`)
293278:2006/05/10(水) 19:37:49 ID:???
>>278アドバイスお願いします
294nobodyさん:2006/05/10(水) 19:38:42 ID:???
>flockの動作がクライアント側のOS
C/Sを理解してるか?
295nobodyさん:2006/05/10(水) 19:42:43 ID:??? BE:144342162-#
むしろどうやったらクライアントに影響が出るのか小一時間
296278:2006/05/10(水) 19:43:31 ID:???
>>294
>C/S
まったく分かりませんorz
一度flockが動作したら、その後も同じ鯖であればクライアントの環境に影響せずに動作するんでしょうか?
297278:2006/05/10(水) 19:45:48 ID:???
>>295
そう言われるとそうですね。
クライアント側がサポートしていなければevalでトラップするのかと思ってました
298nobodyさん:2006/05/10(水) 19:47:17 ID:???
perlがどこで動いてると思ってるんだ
299278:2006/05/10(水) 20:10:49 ID:???
おかげで理解しました。
ありがとうございました
300nobodyさん:2006/05/10(水) 20:36:05 ID:???
 早     /::::l:::l::、:::::、:::::ヽ::、::::::::::::\:::\::::::::ヽヽ::::::ヽ   駄
 .く      /:::!::::i:::!:::ヽ:::ヽ::::::ヽ::ヽ、::::::::::\:::ヽ:::::::ヽヽ::::::',   目 
 な.     /:l::::!::::ヽ!::ヽ:::::::ヽ:::::::\:::ヽ、::::::::ヽ:::ヽ::::::::!::i:::::::!  だ 
 ん   ハ:::l:::::、::::ヽ::::\:::::\:::::::\:::`ヽ、:::ヽ::ヽ:::::!:::!:::::l
 と   /:::::::l::::::!ヽ:ヽ::::、:::::ヽ:::、:\::::: \::::::\::::!::::ヽ:!:::i:::l:l  こ
 か  !:/!:::::!::::::!::ヽ:ヽ{:::\:::ヽ::::\:::\::ヽ:::::::ヽ!:::::::}!::::l::li|   い
 し  j/:::l:::::!:、:::!::ト、:、:ヽ:::::`ヽ{、::::::\::::\{、::::::::::::::::i::!::l:l !   つ
 な    l:i:l::::i::i:、:l::lテ=-、:ヽ、_、::\_,≧ェュ、_、\:::::::::i::li::!::リ   :
 い   !ハト:{:!:i:トN{、ヒ_ラヘ、{ >、{ 'イ ヒ_ラ 》\::l::!:ト!!:l::l!     :
 と     ヽ i、ヽ:ト{、ヾ ̄"´ l!\   `" ̄"´  |::!:l::! j:ll:!
  :      !::、::::i      l             u |:::/lj/l:!リ
  :        ヾト、:!u                 j!/ j|:::リ
          ヾ!    ヽ  ‐       u /イ´lハ/
            }ト.、  -、ー-- 、__      /' !:://
             リl::l゛、  `二¨´    /  |/:/
         rー''"´ト!::i{\       /  / !:/
        / ^ヽ  ヾ!  ヽ _,,、'´    /  j/
301nobodyさん:2006/05/10(水) 21:59:13 ID:???
PerlのCGIで定期的に処理をさせたいのですが、そのようなことは不可能でしょうか?
具体的には、30分ごとに指定されたURLをGETリクエストするという処理です。
完全にサーバー側で処理させて、クライアントからのアクセス無しに定期的に処理したいのですがやはり不可能でしょうか?
302nobodyさん:2006/05/10(水) 22:14:24 ID:??? BE:168400027-#
cron使えよ
303nobodyさん:2006/05/10(水) 22:15:15 ID:???
>>301
可能。cron 使うべし。
304301:2006/05/10(水) 22:27:12 ID:???
>>302-303
すいません、書き忘れていましたがcronは使いたくないのです。
cronを使わずに一定間隔ごとにクライアントからの要求無しに処理をするのは不可能でしょうか?
305nobodyさん:2006/05/10(水) 22:29:43 ID:??? BE:144342162-#
at
306nobodyさん:2006/05/10(水) 22:30:18 ID:???
perlに関係無いことと環境がかかれてないことに気付いてくれ・・・

なんだ、今日は「スレ違い祭」なのか?
307nobodyさん:2006/05/10(水) 22:35:10 ID:???
>>304
鯖の管理人に頼む
308nobodyさん:2006/05/10(水) 22:40:05 ID:???
>>307
やはりできませんか…おとなしくcron使います。ありがとうございました。
309301:2006/05/10(水) 22:41:13 ID:???
すいません>>308>>301です。cronのほかにやり方があるならぜひ教えてください。お願いします。
310nobodyさん:2006/05/10(水) 22:44:38 ID:??? BE:288684083-#
つーか具体的にどう云うスクリプトを書きたいのか書けば
もう少し的確なアドバイスが出来るかも
311301:2006/05/10(水) 22:51:09 ID:???
>>310
>>301に書いたように一定間隔で指定されたURLをGETリクエストして保存するスクリプトです。
ほかにどのように詳しく書けばいいのかよくわかりませんのでとりあえずこれだけできればいいんでこれだけ書きます。
312nobodyさん:2006/05/10(水) 22:57:30 ID:???
>>311
っ【無限ループ】

元々CGIともPerlのコーディングとも関係ないけど
cronが使えるのに使いたくない理由が知りたい。
313301:2006/05/10(水) 23:05:02 ID:???
>>312
無限ループをどのように使ったらいいのでしょうか?1回アクセスしたら無限ループにすることはできますがブラウザを閉じてしまったら
その要求は破棄されてそのスクリプト(CGI)はとまってしまうのでは無いのですか?
>cronが使えるのに使いたくない理由が知りたい。
自鯖だけで動かす予定じゃなかったんで、cronが使えない鯖でも動いたらいいなってことです。
314nobodyさん:2006/05/10(水) 23:16:19 ID:???
CGIとして動作させないもんだと思ってたら

> ブラウザを閉じてしまったらその要求は破棄されてそのスクリプト(CGI)はとまってしまう

こうなってるし、よくわかんないので酒飲んで寝ます。
無限ループは忘れてくだちい。
315nobodyさん:2006/05/11(木) 00:51:08 ID:???
さすがWebprog板
316nobodyさん:2006/05/11(木) 00:54:46 ID:???
素直にクライアントからCGIを動かすURLを叩いてればいいかと
317nobodyさん:2006/05/11(木) 01:06:51 ID:???
だね。クライアントでcron動かして叩き続ける
318nobodyさん:2006/05/11(木) 01:19:25 ID:???
>>261はこの事態を想定してこのURLを出したんだよ!
これはすなわち延々とRefreshし続けろということなんだよ!
319nobodyさん:2006/05/11(木) 08:45:22 ID:???
CGIで動く以上、サーバのタイムアウトがあるだろうから無限ループは無理だけどね。
320nobodyさん:2006/05/11(木) 12:33:49 ID:???
よろしくおねがいします
下記の文字列を正規表現を使い$a$、$b$、$c$と
それぞれ置き換えるのにはどうしらたらいいのでしょうか、いまのままだとうまく置き換えられません
$a$$b$$c$
321320:2006/05/11(木) 12:36:50 ID:O4GQ7qfs
>>320 ちなみに
$a$-$b$-$c$などと文字を挟むと置き換えられます
322nobodyさん:2006/05/11(木) 13:16:35 ID:???
>>321
s/¥$¥$/¥$、¥$/g;
323320:2006/05/11(木) 13:43:30 ID:O4GQ7qfs
レス有難うございます
しかし下記のような場合はどうしたらいいのでしょうか

$tmpl='$a$$b$$c$';
$tmpl =~ s/\$$_\$/$in{$_}/g;
324nobodyさん:2006/05/11(木) 13:50:43 ID:???
>>323
$_にa,b,cが入ってて、foreachで回すならそれで動くんじゃないの?
じゃないなら(何したいかよく分からんけど)
$tmpl =~ s/¥$(.)¥$/$in{$1}/g;
325nobodyさん:2006/05/11(木) 13:57:18 ID:mIPF1ZNx
・@dataにテキストファイルの中身が収められている
・@dataは空っぽの場合もあれば、数千行の場合もある
・@dataの「空行ではない最終行」を$lineに取得したい

これらの条件の場合、Perlらしい素敵な記述はどのようになりますでしょうか?
ちなみに下記はショボい例。

@data = reverse @data;
foreach (@data) {
  if ($_) {
    $line = $_;
    last;
  }
}
326320:2006/05/11(木) 14:14:43 ID:O4GQ7qfs
説明が下手で申し訳ない
こんな感じなのですが、連続しているとマッチして置き換えられないんです
仮に$str='$a$-$b$-$c$'といった違う文字が挟んである場合は大丈夫です。;
$str='$a$$b$$c$';
foreach (%in) {
$str =~ s/\$$_\$/$in{$_}/g;
}
327nobodyさん:2006/05/11(木) 14:35:32 ID:??? BE:180428235-#
>>325
我ながら酷いコードだけど
until (($line = pop @data) ne "") {}
328nobodyさん:2006/05/11(木) 14:45:48 ID:mIPF1ZNx
>>327
ありがとうございます。なるほど、pop使えばreverseは要りませんね。
ワンライナーでキレイではないでしょうか?
ちょっと後でベンチマーク取って試してみようと思います。
329325:2006/05/11(木) 15:14:29 ID:mIPF1ZNx
小さいファイルだと4倍以上untilの方が速い事もありましたが、

Benchmark: timing 1000 iterations of foreach, until...
foreach: 1 wallclock secs ( 0.86 usr + 0.08 sys = 0.94 CPU) @ 1067.24/s (n=1000)
until: 1 wallclock secs ( 0.64 usr + 0.06 sys = 0.70 CPU) @ 1422.48/s (n=1000)

70KBくらいのファイルで試してみたところ差が縮まりました。
330nobodyさん:2006/05/11(木) 17:11:40 ID:???
ループ内は配列演算だけにして、最後に$lineへ代入したら速くなる?

for($i=$#data; !$data[$i]; $i--){}
$line = $data[$i];
331nobodyさん:2006/05/11(木) 17:12:26 ID:???
>>325
$_ and $line = $_ for @data;
332nobodyさん:2006/05/11(木) 17:14:10 ID:???
$_ ne '' and $line = $_ for @data;
初歩的間違い >> 331
333325:2006/05/11(木) 17:33:07 ID:mIPF1ZNx
>>330さん、>>332さん、ありがとうございます。
イテレーションを5000回に増やして試してみました。
なお、>>332さんの方はreverseが必要になると思うので、追加しています。

Benchmark: timing 5000 iterations of No.330, No.332, foreach, until...
No.330: 3 wallclock secs ( 3.31 usr + 0.39 sys = 3.70 CPU) @ 1350.26/s (n=5000)
No.332: 5 wallclock secs ( 3.94 usr + 0.23 sys = 4.17 CPU) @ 1198.75/s (n=5000)
foreach: 4 wallclock secs ( 3.89 usr + 0.19 sys = 4.08 CPU) @ 1226.09/s (n=5000)
until: 3 wallclock secs ( 3.42 usr + 0.14 sys = 3.56 CPU) @ 1403.31/s (n=5000)
334325:2006/05/11(木) 17:35:50 ID:mIPF1ZNx
すみません、ちょっとミスしたところがあるので計り直しです。

Benchmark: timing 5000 iterations of No.330, No.332, foreach, until...
No.330: 4 wallclock secs ( 3.30 usr + 0.36 sys = 3.65 CPU) @ 1367.99/s (n=5000)
No.332: 4 wallclock secs ( 3.42 usr + 0.28 sys = 3.70 CPU) @ 1350.26/s (n=5000)
foreach: 4 wallclock secs ( 3.83 usr + 0.28 sys = 4.11 CPU) @ 1216.84/s (n=5000)
until: 4 wallclock secs ( 3.23 usr + 0.38 sys = 3.61 CPU) @ 1385.04/s (n=5000)
335nobodyさん:2006/05/11(木) 17:38:31 ID:??? BE:577368768-#
あんまどれも変わらんね
読みやすいコードでいいんじゃないかな?
336nobodyさん:2006/05/11(木) 17:38:51 ID:???
要するにどうでもいいと、そういうことですか?
337nobodyさん:2006/05/11(木) 17:40:42 ID:???
>>333
>>332の方式は、先頭から空行でなければ$lineへ代入を末尾まで行う方式のためreverseすると間違いです。
@dataがオンメモリという前提だとあまり効率的でないかも?ですが、
ファイルからの読み込み時にそのまま適応できる、ということですね。
338325:2006/05/11(木) 17:40:59 ID:mIPF1ZNx
ごめんなさい、泣きの一回です。これで帰ります。みなさんありがとうございました。

>>325に書いたスクリプト、reverseの位置を変えただけで処理速度がかなり上がります。

foreach (reverse @data) {
if ($_) {
$line = $_;
last;
}
}

結果:
Benchmark: timing 5000 iterations of No.330, No.332, foreach, until...
No.330: 4 wallclock secs ( 3.42 usr + 0.33 sys = 3.75 CPU) @ 1333.69/s (n=5000)
No.332: 3 wallclock secs ( 3.47 usr + 0.30 sys = 3.77 CPU) @ 1328.02/s (n=5000)
foreach: 4 wallclock secs ( 3.25 usr + 0.34 sys = 3.59 CPU) @ 1391.21/s (n=5000)
until: 4 wallclock secs ( 3.27 usr + 0.39 sys = 3.66 CPU) @ 1367.24/s (n=5000)

ここまで来ると誤差の範囲ですね…。ではまた。
339nobodyさん:2006/05/11(木) 17:46:37 ID:???
最下行からループしたほうが早いんでない?
340nobodyさん:2006/05/11(木) 17:56:23 ID:???
$_ ne '' and $line = $_ for 0..$#data;
こうか。
341nobodyさん:2006/05/11(木) 17:57:32 ID:???
ちがう、全然違う!無視してくれ
342325:2006/05/11(木) 17:58:35 ID:???
>>337
なるほど、勘違いして失礼しました。
結果は貼りませんが、reverseを追加しなければ僅差でNo.332が最速でした。
まあどれもほとんど同じ、お好みでって事になりますね。

>>339
No.332以外は最下行からループするアルゴリズムになっていると思います。
ただNo.332は上から全部見て行っても遅くありませんでした。
343nobodyさん:2006/05/11(木) 18:07:20 ID:???
reverseにかかる時間とforでloopする時間とに違いがあるかどうかだな。
添え字付けアクセスは結構遅いということか。
344nobodyさん:2006/05/11(木) 18:23:21 ID:???
初心者の自分としては、こう書いてもらいたい。

do {
$line = pop @data;
} while($line eq "");
345nobodyさん:2006/05/11(木) 19:19:12 ID:???
>>332 をもう少し早くしたいなら

$_ ne '' and $line = $_, last for @data;

until で書くと

1 until ($line = pop @data) ne '';
346nobodyさん:2006/05/11(木) 19:20:50 ID:???
あ、reverse が必要か。

$_ ne '' and $line = $_, last for reverse @data;

短いのは until のやつかな。
347nobodyさん:2006/05/11(木) 20:50:54 ID:V8lYCtov
#!/usr/local/bin/perl

$maximum = 99999;#カウンターの最大値(最大値を超えると0に戻ります。)
$value = "%05d";#カウンターの桁数( %04d, %05d, %06d ←このように桁数を変更して下さい。)
$countfile = "count.txt";#ログファイル(カウンター)
$ipfile = "ip.txt";#ログファイル(IP)

open (COUNT, "<$countfile");
flock(COUNT, LOCK_SH);

chomp($count = <COUNT>);
$iplog = <COUNT>;

close(COUNT);

$ip = $ENV{ 'REMOTE_ADDR' };
$maximum = sprintf("$value", $maximum);

if( $ip ne $iplog ){ $count++; }
if( $maximum < $count){ $count = 0; }

open (IP, ">$countfile");
flock(IP, LOCK_EX);

print IP ($count."\n");
print IP ($ip);

close(IP);

348nobodyさん:2006/05/11(木) 20:53:04 ID:V8lYCtov
#時間取得
($sec, $min, $hour, $day, $mon, $year) = localtime(time);
$year = $year + 1900;
$mon++;
$sec = sprintf("%02d", $sec);

open (LOG, ">>$ipfile");
flock(LOG, LOCK_EX);

print LOG ($ip."\n");
print LOG ($year."/".$mon."/".$day."\t".$hour.":".$min.":".$sec."\t".$ENV{ 'HTTP_USER_AGENT' }."\n\n");

close(LOG);

$count = sprintf("$value", $count);

print "Content-Type: text/html\n\n";
print "document.write('$count')";

exit;
349nobodyさん:2006/05/11(木) 20:55:54 ID:???
上記スレ二つに書いたコードなんですが、
これをもっと高速化するにはどうしたらいいですか?

SSIのexecとincludeが使用できないので、Javascriptで
呼び出しています。
他にもっといい呼び出し方などあったら是非教えてください。
350nobodyさん:2006/05/11(木) 20:57:21 ID:??? BE:589397077-#
特にないんじゃない?
突っ込みどころは沢山あるけど
351nobodyさん:2006/05/11(木) 20:58:34 ID:V8lYCtov
>>350
その突込みをお願いします。
352nobodyさん:2006/05/11(木) 20:58:55 ID:???
$count = sprintf("$value", $count);
この行必要?
353nobodyさん:2006/05/11(木) 21:11:01 ID:???
>>347
・ファイルのオープンには絶対エラーチェックを入れる
・ファイルを二回にわけてオープンしてたら、ロックの意味が無い

最低この二点を勉強して。
354nobodyさん:2006/05/11(木) 21:12:04 ID:???
突っ込みどころ多すぎて、全部突っ込めと言われたら完全に書き直しになるが、
あえて一つ突っ込むなら、$countfileを一旦閉じて開きなおしてるのはいかん。
これじゃアクセスが重なると空回りするぞ
+<モードで開いておいて、読み終わったら頭にseekして書き込み、
そして閉じる前にtruncateするのが最適解かと。
355nobodyさん:2006/05/11(木) 21:22:32 ID:???
my $line = $_ while( pop @data );
でいいと思う。
行にゼロは無いと仮定しているレスばかりだが、いいのか?
356nobodyさん:2006/05/11(木) 21:44:25 ID:???
>>355
definedは厳密に言えば付けた方が良いですが、まあ一般に要らないと思います。
357nobodyさん:2006/05/11(木) 21:56:16 ID:???
変数のスコープって何で大事なの?グローバル変数だけのプログラムは何故だめなの?引数なしの関数は何故悪いの?
358nobodyさん:2006/05/11(木) 22:06:26 ID:??? BE:144342926-#
汎用的でない、読みにくい等…
359nobodyさん:2006/05/11(木) 22:13:02 ID:???
>変数のスコープって何で大事なの?
スコープの範囲によって変数の値が変わる場合があるから。
グローバル変数にするとスコープの範囲がグローバルになるから、範囲を気にする必要なくなる。

>グローバル変数だけのプログラムは何故だめなの?
規模が大きくなると破綻するらしいけど、自分で管理できるならグローバル変数でOKなんじゃない?

>引数なしの関数は何故悪いの?
暗黙のうちにグローバル変数を使うことになるから。
360nobodyさん:2006/05/11(木) 22:22:38 ID:???
スコープ内で使用する変数全てをローカル変数に一気に宣言してしまう方法はないでしょうか?
my()宣言するのがとても大変です。
またグローバルで使う場合もある処理の場合、そのままコピペできればと思うのですが

よろしくお願いします
361nobodyさん:2006/05/11(木) 22:26:41 ID:???
>>325
今更だけど
if($data[-1]){
 $line=$data[-1];
}
これじゃ駄目なの?
362nobodyさん:2006/05/11(木) 22:38:48 ID:???
>354
+<でopen
read
seek
truncateで0バイト化
print
って手順てこと?
truncateで0バイト化するならseekは要らない気もするけどどうなんでしょ?

言葉が足りなくて上げ足取りみたいな感じたらスマソ

それとも桁が減った場合を考えてのtruncateを使用ってことでしょうか?
363nobodyさん:2006/05/11(木) 22:40:33 ID:???
>>355
$lineが拾えないのですが…。(undefになっているようです)

>>361
ファイルの最終行が空行かも知れません。
その前の行も空行かも知れません。
364nobodyさん:2006/05/11(木) 22:46:51 ID:???
>325
my($linecnt) = $#data;
my($lastline);
if($linecnt){ $lastline = @data[$linecnt]; }

365nobodyさん:2006/05/11(木) 22:50:23 ID:???
>>364
-wでwarningが出て、さらに最終行に空行が入っていると中身を取得出来ないようです。
366nobodyさん:2006/05/11(木) 22:53:24 ID:???
>363
そうゆうことがあるなら・・・
$linecnt = $#data;
for $i ($linecnt..0){
 $lastline = chomp($data[$i]);
 if($lastline){
  last;
 }
}
もしループを抜けて$lastlineが空なら、@dataは空か、改行だけしかないデータとなる
367nobodyさん:2006/05/11(木) 22:58:30 ID:???
>>362
スマソ、少し説明が足りなかった。桁が減った場合を考えて、だね。
truncateとprintが逆で、書き込んだ後に、tellしてその長さにそろえるの。
read
seek
print
truncateで現在位置(tell)まで切り詰め

truncateは位置が頭に戻ることを保障されてないから、その場合でもseekを消すとまずいかも。
susv3のftruncate仕様より
> The value of the seek pointer shall not be modified by a call to ftruncate().
368nobodyさん:2006/05/11(木) 23:13:43 ID:???
あっ、なるほど
書き込み後のファイル位置まで削るってことか。

書き込み後のファイル位置は気にしたこと無かったから想像できなかったわ
369nobodyさん:2006/05/11(木) 23:16:04 ID:???
>>357
本物のプログラマはローカル変数を使わない
・本物のプログラマは全てのグローバル変数を混乱せずに管理出来る。
・本物のプログラマはサブルーチンを作るときに引数を使わない。
・本物のプログラマは不要になった変数空間が解法されずに残ることを恐れない。

本物のプログラマなら誰でも知っている通り、有用な変数のスコープはグローバル変数しかないのだ。
さまざまな関数の一時変数や再帰、さらにはクロージャの変数管理はすべてグローバル変数で実装可能であり、わざわざ複雑な構造を取り入れてプログラミング言語をごちゃごちゃにせずとも、ただの特殊な場合として扱うことが可能なのである。
このような手の込んだ構造の最悪な点は、それらを使うときにいちいち宣言しなければならないと言うことにある。
370nobodyさん:2006/05/11(木) 23:22:13 ID:???
初心者が勘違いするからやめなよ…
371nobodyさん:2006/05/11(木) 23:27:17 ID:???
>>370
ああごめん、初質スレだったな…せめて最後に一言加えるべきだったか
372nobodyさん:2006/05/12(金) 00:21:46 ID:???
ここじゃ釣れないぞ
373nobodyさん:2006/05/12(金) 00:40:59 ID:???
ちょと質問です

$data = "\0\0\0\x0a";
$data =~ s/([\x00-\xff]{$n})$/ func($1) /e;

データ末尾 nバイトを置き換えようとしてるんですが
なぜか 0x0A にマッチしてくれません。
これは一体どうゆうことでしょうか?
そしてこれはどう書くべきなのでしょうか?
お願いします
374nobodyさん:2006/05/12(金) 00:55:45 ID:???
>>373
s/(.{$n})\z/ func($1) /se
ttp://www.kt.rim.or.jp/~kbk/perl5.005/perlre.html
| s 文字列を単一行(single line)として扱います。つまり、``.''が通常はマ ッチしないような改行を含めた、全てのキャラクターにマッチするようにします。
| $ 行の終端(もしくは行末の改行の直前)にマッチします
| \z 文字列の終端にのみマッチします
375nobodyさん:2006/05/12(金) 01:07:50 ID:???
>374
ありがとです。
スッキリしました。
376nobodyさん:2006/05/12(金) 01:36:29 ID:???
>>325
$_が項で主張してるとPerlっぽくない。
というかもし、最終行以外捨てるならそこが一番重いところになる。
$line = grep /./, @data;
377nobodyさん:2006/05/12(金) 02:33:59 ID:???
>>376
$line = (grep /./, @data)[-1];

それもよさそうだね。
>>377 >>345 >>346あたりが最小限の走査ですむように
工夫されてるのでよさそう。
378nobodyさん:2006/05/12(金) 02:36:06 ID:???
>>375
もっとすっきりするには・・・

s/(.{$n})\z/ func($1) /sex;
379nobodyさん:2006/05/12(金) 03:55:19 ID:???
悔しいけどちょっとウケた。
380nobodyさん:2006/05/12(金) 04:06:26 ID:???
>>378
typoじゃね?
s/(.{$n})\z/ fuck($1) /sex;
381325:2006/05/12(金) 09:22:53 ID:???
おはようございます。昨晩はいろいろありがとうございました。

Benchmark: timing 50000 iterations of No.330, No.332, No.344, No.345, No.346, No.366, foreach(338), grep(377), until(327)...
No.330: 3 wallclock secs ( 2.98 usr + 0.06 sys = 3.05 CPU) @ 16409.58/s (n=50000)
No.332: 4 wallclock secs ( 4.06 usr + 0.08 sys = 4.14 CPU) @ 12074.38/s (n=50000)
No.344: 3 wallclock secs ( 2.92 usr + 0.02 sys = 2.94 CPU) @ 17018.38/s (n=50000)
No.345: 3 wallclock secs ( 2.91 usr + 0.00 sys = 2.91 CPU) @ 17205.78/s (n=50000)
No.346: 3 wallclock secs ( 2.88 usr + 0.13 sys = 3.00 CPU) @ 16666.67/s (n=50000)
No.366: 3 wallclock secs ( 2.75 usr + 0.03 sys = 2.78 CPU) @ 17979.14/s (n=50000)
foreach(338): 3 wallclock secs ( 2.73 usr + 0.03 sys = 2.77 CPU) @ 18076.64/s (n=50000)
grep(377): 3 wallclock secs ( 3.08 usr + 0.05 sys = 3.12 CPU) @ 16005.12/s (n=50000)
until(327): 3 wallclock secs ( 2.84 usr + 0.03 sys = 2.87 CPU) @ 17391.30/s (n=50000)

個人的には>>376-377さんのgrepを使ったアルゴリズムが好きです。

注)
@dataが壊れる(壊れても構わないのですが)場合、結果がおかしくなるので
公平を期すため、全てのテストルーチンには@data = @backup;を入れています。
それが不要なアルゴリズムは、省けばさらに速くなります。
(昨日出したベンチマーク結果は毎回ファイル開いて読んでました…無駄すぎですね)

また、@dataにはchompが掛かっているので>>366さんからはそれを省いています。
382nobodyさん:2006/05/12(金) 09:54:06 ID:???
>>381
@data=@backupだけのも測定して欲しい。そうすれば引き算して比べられる。
383325:2006/05/12(金) 10:03:29 ID:???
>>382
backup: 3 wallclock secs ( 2.72 usr + 0.02 sys = 2.74 CPU) @ 18281.54/s (n=50000)


謎です、これじゃ引き算出来ません。
benchmarkの測り方を間違えていたなんていう強力なオチがありそうで怖いですが…。
どこかにスクリプト自体をアップした方が良いですかね?
384325:2006/05/12(金) 10:16:16 ID:???
http://read.kir.jp/file/read46406.zip
何となくパス付き:perl

テストデータは同梱していません。
そこそこ大きいテキスト+末尾に4〜5空行を入れてtest.datとして保存して下さい。
385nobodyさん:2006/05/12(金) 10:21:57 ID:???
まとめると、こんな感じ?

>>327 >>344 >>345
popで配列の後ろから取り出して調べる

>>330 >>366
配列の後ろから添え字アクセスで調べる

>>338 >>346
配列を一旦reverseして、先頭から調べる

>>332
配列の先頭から調べる

>>377
grepで空要素を排除してから、最後の要素を取り出す
386nobodyさん:2006/05/12(金) 10:43:29 ID:???
>>383
もちろんそのまま引き算できるわけでなく、たとえば 回数/s の逆数をとって一回あたりの
秒数をだして引き算するわけよ。
387325:2006/05/12(金) 11:03:32 ID:???
>>385
まとめ、大変分かりやすいです。どうもありがとうございます。

>>386
なるほど、あの結果はあれでおかしくはないんですね。
とりあえずスクリプトは>>384でアップしましたので、お好きな方にカスタマイズは
お任せするつもりです。
388nobodyさん:2006/05/12(金) 12:32:30 ID:??? BE:192455982-#
いい加減うざいんだけど
389nobodyさん:2006/05/12(金) 13:08:04 ID:???
>388
それは自分への言葉ですか?
分かってるなら消えろよカスwww
390nobodyさん:2006/05/12(金) 13:19:22 ID:??? BE:541283459-#
( ^ω^)やだお
391nobodyさん:2006/05/12(金) 14:15:44 ID:DNrRJ4oV
aboneで読めないな。。
392nobodyさん:2006/05/12(金) 14:25:09 ID:??? BE:252599437-#
どうやってあぼーんしてるか気になるなぁ
Be全体をあぼーんでもしてるのだろうか(笑)
393nobodyさん:2006/05/12(金) 14:35:17 ID:???
abone設定完了。簡単。
394nobodyさん:2006/05/12(金) 14:36:21 ID:??? BE:288685038-#
(;^ω^)
395nobodyさん:2006/05/12(金) 14:48:47 ID:HUYCFakY BE:207328853-
目的
ファイル掲示板のcgiで、ファイルのDLカウンターを付けたい

編集対象個所
<a href=\"$i_Url/$ico\" target=_blank>
$i_Url ファイルの置き場所のパス
$ico ファイル名

置換したいcgi呼び出し
./downcon.cgi?down=http://ohayou.com/test.zip&name=test.zipファイル&hp=http://ohayou.com

私の書き換えたコード
./downcon.cgi?down=$i_Url/$ico&name=$icoファイル&hp=hp=http://ohayou.com

結果
CGI呼び出しエラーのページが表示されてしまう


何がいけないのでしょうか?
教えてくださいませ。
396nobodyさん:2006/05/12(金) 14:52:12 ID:??? BE:420998257-#
訳分からん
改造スレ池
397395:2006/05/12(金) 16:07:29 ID:??? BE:82932023-
出来ました^^
めげずに頑張ってみるものですね!
398nobodyさん:2006/05/12(金) 17:25:50 ID:???
まんこがかゆい
399 ◆TWARamEjuA :2006/05/12(金) 20:30:05 ID:??? BE:871542-#
>>398
煮沸消毒しる!
400nobodyさん:2006/05/13(土) 00:50:41 ID:RdM+BVxR
#!/usr/bin/perl
print "Content-type: text/html\n\n";
print "こんにちは!\n";

↑これだとInternalServerErrorが出るんですが、
#!/usr/bin/perl -w
に書き換えると正常に『こんにちは!』と表示されるのですが、どうしてでしょうか?
-wはエラーがあったら表示、みたいに思いこんでたんですが…
401nobodyさん:2006/05/13(土) 00:57:56 ID:???
>>400
-wはwarningオプションなのでエラーとはまた違います。
(こういう書き方はイカンとか、間違ってるかも知れないとかの警告)

それで、ぱっと見た感じ間違いは無さそう。
正常に表示されるスクリプトから、「 -w」の3バイトを丁寧に削ってまた試してみては?
402nobodyさん:2006/05/13(土) 01:04:20 ID:RdM+BVxR
>>401さん
なるほど、Warningの略だったんですね。
アドバイス通りに『 -w』を削ってみました。
1バイトあたり1分ぐらいかけて慎重に削り、パーミッションも744にしたのですが、
やはり『 -w』が無いと動かないようです。

というか、MovableTypeを見ていて『-w』と書いてあるのを見てマネしたら動いちゃった、
って感じなのですが、『-w』をつけないと動かないってことはあり得るんでしょうか?
403nobodyさん:2006/05/13(土) 01:04:56 ID:???
>>400
既にFAQだなこりゃ
FTPで上げるときにBinaryモードで上げてるだろ。Asciiモードでやって見れ
404nobodyさん:2006/05/13(土) 01:12:21 ID:RdM+BVxR
>>403さん
なるほど、それが原因なんですか…

これも既出もいいとこかもしれませんが、仕事中なのでコッソリ教えてもらえるとうれしいです。
IEでFTP接続しているんですが、AsciiモードやBinaryモードを切り替えることはできるのでしょうか?
よろしくお願いします。
405nobodyさん:2006/05/13(土) 01:14:24 ID:???
何でもいいからIE以外のFTPクライアントを使うことを勧める・・・
406nobodyさん:2006/05/13(土) 01:29:23 ID:RdM+BVxR
>>405さん
普段はFFFTPを使ってるんですが、今使ってるサーバーはFFFTPだと
ファイル一覧が取得できないんですよね…
しかし、MovableTypeはIEでアップロードして動いたのに、不思議なものです…
スレ違いになってしまったので、このあたりで失礼します。
親切にありがとうございました。
407nobodyさん:2006/05/13(土) 01:41:49 ID:???
>>406
スレ違いで難だけど一応ここまで聞いちゃったら…
ホストの設定の"NLST -Rを使って高速に再帰取得"を切ってみれ。
それで駄目なら"LISTコマンドでファイル一覧を取得"にチェックを入れてみれ。

#!/usr/bin/perl[CR][LF] だとOSは"/usr/bin/perl[CR]"というコマンドを起動しようとする。
よってそんなインタプリタは見つからないのでエラー。
#!/usr/bin/perl -w[CR][LF] だとOSは"/usr/bin/perl"に"-w[CR]"を渡そうとする。
perlはCRを無視して無事起動。そういや、どこかの入門サイトでエラーになることがあるから、
shebang行には#!/usr/bin/perl -と書けと言っている迷サイトもあったと聞いたな。
408nobodyさん:2006/05/13(土) 01:56:30 ID:RdM+BVxR
>>407さん
ありがとうございます。
おかげさまでFFFTPでファイル一覧が取得できてしまいました。
今までの苦労は何だったんだ、と怒りに震えるほど感謝しています。
今までの23年間の人生で初めて涙を流して感謝しました。
409nobodyさん:2006/05/13(土) 10:11:20 ID:???
shebang行の最後にスイッチを終了させる「 --」をつけても解決できると思うよ。
410nobodyさん:2006/05/13(土) 19:48:15 ID:???
my の使い方で質問です。例えば
foreach $line (@list_hoge) {
my ($key, $value) = split ":", $line;
$hash_ref_hoge->{$key} = $value;
で、my がループ毎に実行されるのが気分的によくないです。
繰り返しブロック中の一時的な変数って、ブロックの中/外、どちらで
宣言するのが一般的なんでしょうか?中で宣言するとループ毎に別変数に
なってしまう(と思う)し、外で宣言すると my の意味が無い気がする。
411nobodyさん:2006/05/13(土) 20:55:01 ID:???
何で気分が良くないのか和漢ね
{ my $hoge;
for(@fuga) {

}
}
412nobodyさん:2006/05/13(土) 20:56:24 ID:???
ありゃあ途中で送信しちゃったけどループの外のブロックで宣言すれば?
そういう事じゃなかったらごめん
413nobodyさん:2006/05/13(土) 21:28:32 ID:???
だいたい$lineをmyしてないヤシが(ry
414nobodyさん:2006/05/13(土) 21:49:46 ID:???
よほど繰り返し回数の多いループとかじゃなければ見易さ優先でいいと思うのだが。
415nobodyさん:2006/05/13(土) 21:56:02 ID:vvOrsJnf
perlスクリプト内の'chop'は全て'chomp'に置き換えても問題ないですか?
#ちなみに、'chop'と'chomp'が混在してるスクリプトの場合です
416nobodyさん:2006/05/13(土) 22:04:22 ID:???
>>415
chopとchompは意味が違うので、無条件に置き換えられるかどうかは不明
わざわざ混在してるとなると、置き換えられないかも
作者に聞いてくれ
417nobodyさん:2006/05/13(土) 22:05:08 ID:???
>>416
はーい
レスありあとうございます
418nobodyさん:2006/05/13(土) 22:15:50 ID:???
>>410
それでいいんだよ。
その1周分のループの中でしか使わないし、その明言でもある。
違和感あると言うけど、ひょっとして「my付けろって言われたからつけてる」って程度の認識だったりしない?
419nobodyさん:2006/05/13(土) 22:28:39 ID:???
>>410
変数の寿命は短ければ短い方がいいという教えに従えば内側で宣言する。
別に外で宣言してもいいけどね。
420410:2006/05/13(土) 22:33:22 ID:???
>>411-414 ありがとう($lineのmy抜けはtypoということで。)
自分は >>414 と同じ考え方で質問に書いた書き方をしてるんだけど
「普通こう書くだろう」っていうのがあれば、と思い質問した次第です
(412 が「普通こう書く」なのかな?)
#あまり気にしないことにします。
421410:2006/05/13(土) 22:52:39 ID:???
あ、書いてる間にレスが・・
>>418 違和感は、
自分は「$key、$value はこの foreach ブロック(!=ループ)でワーク変数として使う」
つもりで宣言しているのに、ループ毎に別変数が生成されると、何か
変数入れるメモリがもったいないんじゃない?とか思ってしまう
からなわけです(貧乏性)。もしかしてループ毎に前のループの変数は
開放されるのかな? であれば問題ないな。
422nobodyさん:2006/05/13(土) 22:58:00 ID:???
( ^ω^) ・・・
423nobodyさん:2006/05/13(土) 22:58:15 ID:???
my宣言された変数はそのブロックの最後で消滅してるので
ループ中のmy宣言されてるものはその都度新しく生まれ変わってる別物です
424nobodyさん:2006/05/13(土) 23:02:54 ID:???
生成と破棄が嫌ならループの外に出せば良い。
その場合は、同じ変数を使い回す事になる。
split後の$key, $valueの文字列長が、ループ内でだいたい同じ程度なら
Cレベルでのreallocもあまり気にしなくて良くなる。

一方、ループ内に入れた場合は、変数のメモリはループ毎にヒープに返される。
最適化がどうなってるか分からないけど、
もしかしたら同じスカラを使い回しているかも知れない。

微妙な違い。多分、ループ外に置いた方が速い。
425nobodyさん:2006/05/14(日) 01:28:41 ID:???
>>421
内側が基本。
外側で宣言しちゃったら値の局所化、名前の局所化どちらも意味なくなっちゃうじゃん。
このPart48スレで何回か話題なったから読み返してみ。
もちろん、ループの進行と共に変化していく系の変数なら外のスコープで宣言するしかない。
426nobodyさん:2006/05/14(日) 02:15:49 ID:EM3+kg+P
BBSスクリプトの一部なんですが、↓のような記述があります。

$message =~ s/<a href="\.\.\/test\/read\.cgi\/$FORM{'bbs'}\/$FORM{'key'}\/n?\d+-?\d*" target="_blank">(>>\d+-?\d*)<\/a>/$1/g;
$message =~ s/<r>>>(\d+)-(\d+)<\/r>/<a href="..\/test\/read.cgi\/$FORM{'bbs'}\/$FORM{'key'}\/n$1-$2" target="_blank">>>$1-$2<\/a>/g;
$message =~ s/<r>>>(\d+)-<\/r>/<a href="..\/test\/read.cgi\/$FORM{'bbs'}\/$FORM{'key'}\/n$1-" target="_blank">>>$1-<\/a>/g;
$message =~ s/<r>>>(\d+)<\/r>/<a href="..\/test\/read.cgi\/$FORM{'bbs'}\/$FORM{'key'}\/n$1" target="_blank">>>$1<\/a>/g;

これの一部分から“n”を抜いても問題はないですか?
具体的には、次の部分を右のように変更しました。

一行目:n?\d+-?\d → \d+-?\d
二行目:n$1-$2 → n$1-$2
三行目:n$1- → $1-
四行目:n$1 → $1

これで動作異常とか出ることないですか?
427nobodyさん:2006/05/14(日) 02:24:08 ID:???
read.cgiっつーと、nがあるか無いかは>>1を表示するかしないかのただのオプションじゃないか?
428nobodyさん:2006/05/14(日) 02:26:46 ID:???
>>426
抜いて問題があるかないかと言えば、抜いたら問題があるから入っているんでしょうとしか言えないです。

そもそも、何でnを抜きたいのでしょう?
見た限り、パラメータとして掲示板の投稿No.をn1〜n10みたいに示すためのnのようですが、
受ける側の処理もそれに合わせて書き直せばnを抜こうが何だろうが大概動きますよ。
429nobodyさん:2006/05/14(日) 02:31:02 ID:???
>>426
おれたちはデバッガーかよ・・・
430nobodyさん:2006/05/14(日) 02:31:40 ID:???
レスどんもです。

>>427
なぜかn抜いても1見えますです。

>>428
抜かなかったら、ソース見たとき変な現象がおきるです。
たとえばこんな感じに。
<a href="../test/read.cgi/php/1146042050/n2-10" target="_blank"><a href="../test/read.cgi/php/1146042050/2-10" target="_blank">>>2-10</a>
<a href="..">が二個連続で表示されて、その片方にnを含むのが出ますです。
ちなみに、n消したら二個連続の表示ではなくなりますた。
431nobodyさん:2006/05/14(日) 02:32:26 ID:???
>>429
お手数おかけしますです。
432nobodyさん:2006/05/14(日) 02:37:29 ID:??? BE:48114522-#
エロゲーしてオナニーして寝よっと
433nobodyさん:2006/05/14(日) 02:38:33 ID:???
>>431
>>429はそういう言葉を期待してるわけじゃないと思うが
434nobodyさん:2006/05/14(日) 02:48:47 ID:???
$message =~ s|<a href="\.\./test/read\.cgi/$FORM{'bbs'}/$FORM{'key'}/n?\d+-?\d*" target="_blank">(>>\d+-?\d*)</a>|$1|g;
$message =~ s|<r>>>(\d+)-(\d+)</r>|<a href="\.\./test/read.cgi/$FORM{'bbs'}/$FORM{'key'}/n$1-$2" target="_blank">>>$1-$2</a>|g;
$message =~ s|<r>>>(\d+)-</r>|<a href="\.\./test/read.cgi/$FORM{'bbs'}/$FORM{'key'}/n$1-" target="_blank">>>$1-</a>|g;
$message =~ s|<r>>>(\d+)</r>|<a href="\.\./test/read.cgi/$FORM{'bbs'}/$FORM{'key'}/n$1" target="_blank">>>$1</a>|g;

nは関係ないけど2行目以降はピリオドの前に\が付いていなかったのでとりあえずエスケープしてみました。
435nobodyさん:2006/05/14(日) 02:51:43 ID:???
失礼。エスケープし忘れの箇所がありました。(read\.cgi)

$message =~ s|<a href="\.\./test/read\.cgi/$FORM{'bbs'}/$FORM{'key'}/n?\d+-?\d*" target="_blank">(>>\d+-?\d*)</a>|$1|g;
$message =~ s|<r>>>(\d+)-(\d+)</r>|<a href="\.\./test/read\.cgi/$FORM{'bbs'}/$FORM{'key'}/n$1-$2" target="_blank">>>$1-$2</a>|g;
$message =~ s|<r>>>(\d+)-</r>|<a href="\.\./test/read\.cgi/$FORM{'bbs'}/$FORM{'key'}/n$1-" target="_blank">>>$1-</a>|g;
$message =~ s|<r>>>(\d+)</r>|<a href="\.\./test/read\.cgi/$FORM{'bbs'}/$FORM{'key'}/n$1" target="_blank">>>$1</a>|g;

まあ、追加で直した部分も関係ないでしょうけど。
436nobodyさん:2006/05/14(日) 04:09:54 ID:???
次の質問どうぞ
437nobodyさん:2006/05/14(日) 12:36:02 ID:AA1LZHii
すんません宜しく。
ブラウザのオートコンプリート機能を一時的にOFFにするか、オートコンプリートのデータから特定のキャッシュを削除する事って
できるんでしょうか?

HTTPヘッダー・・では無いと思うんですが。

438nobodyさん:2006/05/14(日) 12:52:19 ID:???
ここは「Perlコーディング初心者質問スレ」です
439nobodyさん:2006/05/14(日) 13:12:35 ID:???
>>437
オートコンプリートをONにしているバカだから
マルチポストがどれだけ嫌われているかもわかんないみたいだな
しかも、糞IE専用機能でセキュリティもOFFにしていないと
危ういとの話なのに
サーバサイドでは無く、クライアントサイドしかもIEに特化
もうね、バカかとアホかと。もう白雉はネットに繋ぐべきではないとか。

| <input/form autocomplete="off">
`──────────┐ ┌───
           , '´l,  ..| ./
       , -─-'- 、i_  |/
    __, '´       ヽ、
   ',ー-- ●       ヽ、
    `"'ゝ、_          ',
      〈`'ー;==ヽ、〈ー- 、 !
       `ー´    ヽi`ヽ iノ
                ! /
              r'´、ヽ
              `´ヽノ
440nobodyさん:2006/05/14(日) 14:15:59 ID:???
PerlのCGIで定期的に処理をさせたいのですが、そのようなことは不可能でしょうか?
具体的には、30分ごとに指定されたURLをGETリクエストするという処理です。
完全にサーバー側で処理させて、クライアントからのアクセス無しに定期的に処理したいのですがやはり不可能でしょうか?
441nobodyさん:2006/05/14(日) 14:17:40 ID:??? BE:649539869-#
442nobodyさん:2006/05/14(日) 14:18:12 ID:???
GW終わってもこの有り様か
443nobodyさん:2006/05/14(日) 14:21:02 ID:???
>440
定期かよ・・・
cron or タスク(Winならだけど) or 定期的にURLアクセスするクライアントソフト

ハイ次
444nobodyさん:2006/05/14(日) 14:23:58 ID:???
むしろ同じ質問が定期的に…
445nobodyさん:2006/05/14(日) 14:24:32 ID:???
>>440
レン鯖ではまず不可能。cron使えないなら諦めれ。
446nobodyさん:2006/05/14(日) 14:28:44 ID:???
すいません、書き忘れていましたがcronは使いたくないのです。
cronを使わずに一定間隔ごとにクライアントからの要求無しに処理をするのは不可能でしょうか?
447nobodyさん:2006/05/14(日) 14:30:28 ID:???
448nobodyさん:2006/05/14(日) 14:44:03 ID:??? BE:216513836-#
輪廻
449nobodyさん:2006/05/14(日) 14:48:52 ID:???
>>446
鯖の管理人に頼む
450nobodyさん:2006/05/14(日) 14:56:04 ID:???
無限ループって(ry
451nobodyさん:2006/05/14(日) 15:20:16 ID:???
while (1) {
    print ">>440";
}
452nobodyさん:2006/05/14(日) 15:34:40 ID:???
>>434-435
ありがとうございます。
参考させていただきますです。
453nobodyさん:2006/05/14(日) 15:46:38 ID:???
複数の配列を項目ごとにソートしたいんですけど調べてもうまくヒットしません。

例をあげるとこんな感じです。

http://sports.livedoor.com/baseball/pro/players?o=d&p=b&q=1&s=3&t=1

打率や安打数などでそれぞれソート出来るようになっています。
方法があれば教えてください。
454nobodyさん:2006/05/14(日) 15:57:03 ID:???
激しくうろ覚えでテキトーに書いてみる
@sorted = sort{ $a[3] <=> $b[3]} split(/\t/, $data);

・・・おそらく間違ってるだろうな(;´Д`)
455nobodyさん:2006/05/14(日) 16:25:40 ID:???
>>453
「Perl シュワルツ変換」辺りでぐぐる
456違うスレからきました:2006/05/14(日) 21:38:49 ID:n3OZH3Uz
#!/usr/local/bin/perl
$greeting = "こんばんは";
$name = "三島";
&prt_message2($greeting,$name);

sub prt_message2{
print "$_[0]、$_[1]さん","\n";
}

はコマンドプロンプトがでてきません
違いはフォルダが違うだけなんですが
どう対処したらいいでしょうか??

ダブルクリックで起動させようとしました
いつもperl command line interpreterで開いてます

物凄い速さでウィンドウが とじることまではわかりました

それをとめる方法はどうしたらいいでしょうか??
調べたらプロパティをいじくると書いてあったんですが
みても書いてありませんでした
CMDですよね??

よろしくおねがいします
457456:2006/05/14(日) 21:40:34 ID:VsACWTan
OSはXPです
458nobodyさん:2006/05/14(日) 21:45:03 ID:???
459 ◆TWARamEjuA :2006/05/14(日) 21:46:12 ID:??? BE:4574276-#
マルチみたいですね(哀)
460458:2006/05/14(日) 21:47:02 ID:???
すまん。

>>456
>>227か、初めからウィンドウ開いておく。
461nobodyさん:2006/05/14(日) 21:54:05 ID:VsACWTan
サンクス
バッチがわからないけど調べるよ
462458:2006/05/14(日) 21:54:53 ID:???
書きかけでPOSTしてあたふたする前にリロードすればよかった。

Perlについての質問箱 24箱目
http://pc8.2ch.net/test/read.cgi/tech/1146022352/346
463nobodyさん:2006/05/14(日) 22:00:05 ID:VsACWTan
違うスレで聞きますって書いたんだけど
それでもマルチになるの?
それならごめん
464nobodyさん:2006/05/14(日) 22:01:20 ID:VsACWTan
>>460初めからウィンドウ開いておくとはどういう事でしょうか?
465nobodyさん:2006/05/14(日) 22:58:28 ID:???
ウィンドウ開いた瞬間にpause押せば止められるよ
466nobodyさん:2006/05/14(日) 23:05:40 ID:???
初心者なんですが、plaggerのやりかた教えてください。
467nobodyさん:2006/05/14(日) 23:09:50 ID:VsACWTan
pauseがわからないです
一応ぐぐったんですが
よろしくお願いします
468nobodyさん:2006/05/14(日) 23:10:56 ID:VsACWTan
PAUSE BREAKは押しても無理でした
あの速さでは…
469nobodyさん:2006/05/15(月) 00:05:56 ID:??? BE:589397077-#
もうね…
470nobodyさん:2006/05/15(月) 00:23:12 ID:???
>>454
どうもです。

>>455
さっそくぐぐってみます。
ありがとう。
471nobodyさん:2006/05/15(月) 02:44:34 ID:???
>ID:VsACWTan
コマンドプロンプトは開きっぱなしにしれ
でなきゃ実行結果を表示してくれるIDE(統合環境)を導入してください
472nobodyさん:2006/05/15(月) 02:49:43 ID:???
IDEとは何でしょうか?
HDDはSerial ATAなどではなくてIDE接続ですが、このことでしょうか?
473nobodyさん:2006/05/15(月) 02:53:19 ID:???
こりゃ傑作だ(´∇`)ケラケラ
474nobodyさん:2006/05/15(月) 03:30:43 ID:lq2mogk+
>>459
俺の掲示板に組み込みたいんで、Rock54のスクリプト記述教えてくださいよ。
焼き部隊に所属してるあなたなら知ってますよね?
475nobodyさん:2006/05/15(月) 03:31:40 ID:???
×焼き部隊
○石焼き部隊
476nobodyさん:2006/05/15(月) 03:36:55 ID:???
※の中の人も大変だな
477nobodyさん:2006/05/15(月) 04:08:20 ID:???
※未承認広告
478nobodyさん:2006/05/15(月) 11:03:36 ID:???
>>471
http://e-words.jp/w/IDE-2.html

Perlに関係ないからね。
479nobodyさん:2006/05/15(月) 20:18:06 ID:???
>>475
> ×焼き部隊
> ○石焼き部隊

○焼き部隊
○石焼き部隊
480nobodyさん:2006/05/15(月) 23:27:09 ID:FBQXjrwN
1: cgiからcgiのソースを書き込む
2: それで↓こんな風にやってみたが・・・

if ($ENV{REQUEST_METHOD} ne 'POST'
|| read(STDIN, $post, $ENV{CONTENT_LENGTH}) != $ENV{CONTENT_LENGTH})
{ $postdata = $ENV{QUERY_STRING};}
 ・
 ・
のようなソースを別ファイルに書き込もうと(拡張子はcgiもしくはpl)、

$file = "$urltrip\x5F$mon$mday$hour$min$sec.cgi";
open OUT,">$file";
print OUT "#!/usr/local/bin/perl\n\n# トリップテスト\n\n";
print OUT "if ($ENV{REQUEST_METHOD} ne 'POST'\n || read(STDIN, $post, $ENV{CONTENT_LENGTH})\n";

↑こうやったら
3: $ENV{REQUEST_METHOD}などが書き込み元の値に代入されてしまう・・・。


ご教授おねがいします
481nobodyさん:2006/05/15(月) 23:30:50 ID:???
'頭が激しく足りないことをやっているようだけど。'
482nobodyさん:2006/05/15(月) 23:31:41 ID:???
>>480
print文中の$を、バックスラッシュでクォートする
483nobodyさん:2006/05/15(月) 23:39:28 ID:???
シングルクォートのヒアドキュメントでいいじゃん。
484nobodyさん:2006/05/15(月) 23:47:07 ID:???
print << 'KENTWEB';
KENT レベルのスクリプトっていいかげん消えてくれないかなぁ。
KENTWEB
485nobodyさん:2006/05/15(月) 23:49:04 ID:???
と、妬み丸出しの>>484なのであった
486480:2006/05/15(月) 23:51:56 ID:FBQXjrwN

print OUT 'if ($ENV{REQUEST_METHOD} ne 'POST'\n || read(STDIN, $post, $ENV{CONTENT_LENGTH})\n';

↑これでもダメですけど?


487nobodyさん:2006/05/15(月) 23:54:51 ID:???
print OUT 'if ($ENV{REQUEST_METHOD} ne "POST"\n || read(STDIN, $post, $ENV{CONTENT_LENGTH})\n';

で、何のためにうんこコードを保存してるの?
488nobodyさん:2006/05/15(月) 23:55:17 ID:???
だめだ、ばかばっか
489480:2006/05/15(月) 23:56:32 ID:FBQXjrwN
>>488
すんません、ちょっとだけバカなんです
でも体育と社会は得意なんです
490nobodyさん:2006/05/16(火) 00:26:08 ID:??? BE:159192836-#
マ板のスレ荒らしてるのもお前等だろw
491nobodyさん:2006/05/16(火) 00:29:36 ID:???
GW終わってるっつーの
492483:2006/05/16(火) 00:29:55 ID:???
>>480
人の話をキケー!

print OUT <<'EOF';
if ($ENV{REQUEST_METHOD} ne 'POST'
|| read(STDIN, $post, $ENV{CONTENT_LENGTH}) != $ENV{CONTENT_LENGTH})
{ $postdata = $ENV{QUERY_STRING};}
EOF

# もう来ないでね。
493nobodyさん:2006/05/16(火) 00:36:08 ID:???
>>492
インデント汁。
で、インデントはタブかスペースかで3スレくらい費して議論汁。
494480:2006/05/16(火) 00:39:36 ID:Neqg1YJy
>>492
'EOF'でオッケーなんですね!
たとえば $baka という元ファイルの変数を別ファイルに代入させたい場合は

print OUT <<'EOF';
if ($ENV{REQUEST_METHOD} ne 'POST'
|| read(STDIN, $post, $ENV{CONTENT_LENGTH}) != $ENV{CONTENT_LENGTH})
{ $postdata = $ENV{QUERY_STRING};}
<りゃく>
$aho = $1;
EOF
print OUT "$baka";

print OUT <<'EOF';
$unko = $chinko;
EOF

# { とかってやればいいっすか?; }
495nobodyさん:2006/05/16(火) 00:45:42 ID:???
知っているがお前の態度が気に入らない。
496480:2006/05/16(火) 03:11:36 ID:Neqg1YJy
>>492
うーん、、、途中までいい漢字だったんですけどなぜか途中から上手くいきません
print が絡んでるところで、

$manko = "まんこ";
<略>
print "$manko"; ←これを$manko=まんこのまま新しいファイルに持ち越すのは

print OUT <<'AHAN';
print "$manko";
AHAN
じゃだめですよね

それでこの部分だけ
print OUT \"print \"$manko\";
にしてもだめでした><;
えーん><;
497nobodyさん:2006/05/16(火) 05:41:07 ID:???
うわー、答えたくねーw
498nobodyさん:2006/05/16(火) 06:08:14 ID:???
シュワルツ変換でぐぐれと教えてもらった者です。
たいへん参考になりました。
感謝とともにご報告申し上げます。
499nobodyさん:2006/05/16(火) 11:32:02 ID:???
>>484=KENTWEBファン

いちいち固有名詞だすなクソやろう
500nobodyさん:2006/05/16(火) 12:59:36 ID:???
掲示板で英語だけのSPAMが多すぎるので
英語だけの投稿はエラーにしたいのですが

・全部半角英数字
または
・全角文字が1文字でも入っている

でマッチさせるには、どう記述すれば良いでしょうか?

よろしくお願いします。
501500:2006/05/16(火) 13:01:43 ID:???
すみません、紛らわしい書き方しました。

「または」ってのは OR でって事じゃないです。
どっちかの記述の方法が分かれば、判断できるかな
という意味で書きました。
502nobodyさん:2006/05/16(火) 13:06:44 ID:??? BE:192457128-#
前者は"."とか入ってたら拒絶されるし
後者の方がええんとちゃう
文字コードによって違うから詳しくは
http://www.kanzaki.com/docs/jcode.html
http://euc.jp/i18n/charcode.ja.html
ここら辺見いや
503nobodyさん:2006/05/16(火) 13:12:50 ID:???
>>500-501
アンタみたいな奴らばかりが集まるネ申KENTサポで無限ループされているから覗いてみろ
504nobodyさん:2006/05/16(火) 13:34:13 ID:???
ディスクの空き容量を知るにはどうすればいいですか?
505nobodyさん:2006/05/16(火) 13:37:40 ID:???
`df`
506nobodyさん:2006/05/16(火) 13:55:34 ID:???
>>505
当方 Windows で CGI書いてますので、よろしく。
507nobodyさん:2006/05/16(火) 14:04:03 ID:???
KENTサイキョウ!(^^)
508nobodyさん:2006/05/16(火) 14:05:07 ID:??? BE:589397077-#
それが質問者の態度か
Win32-DriveInfoでも使ってろアホ
509nobodyさん:2006/05/16(火) 14:05:50 ID:???
当方モジュール入れるなんてマンドクサイことやってられないので、
もっと簡単な方法をよろしく。
510nobodyさん:2006/05/16(火) 14:07:33 ID:??? BE:420997875-#
絶対教えてやんねー(#^ω^)ビキビキ…
511nobodyさん:2006/05/16(火) 14:10:21 ID:???
はい次の質問者どうぞ
512nobodyさん:2006/05/16(火) 14:45:55 ID:???
>>506
マイコンピュータをダブルクリックすれば残り容量が出るぞ
513nobodyさん:2006/05/16(火) 14:51:19 ID:??? BE:649539869-#
お前優しいな!
514nobodyさん:2006/05/16(火) 15:07:09 ID:???
ttp://compact.s56.xrea.com/id/
笑いすぎて腹が痛くなった
515nobodyさん:2006/05/16(火) 17:14:03 ID:???
まんこやちんこでも表示される件について
516nobodyさん:2006/05/16(火) 19:06:53 ID:???
どんなコード書いてるんだよ
超わろたw
517nobodyさん:2006/05/16(火) 19:20:36 ID:???
>>500
『鬼畜米英』
『妥当チャーチル』
『欲しがりません勝つまでは』

この3つをスローガンに掲げて掲示板トップに掲載しとく。
効果てきめん。
518500:2006/05/16(火) 19:37:15 ID:???
>>517
そんなので効果あるわけねーよ、バーカ
519nobodyさん:2006/05/16(火) 19:45:50 ID:??? BE:288684364-#
偽者うぜぇ
520500:2006/05/16(火) 19:52:21 ID:???
偽者じゃありません、本当のことをおしえてください
521nobodyさん:2006/05/16(火) 20:11:23 ID:??? BE:48114522-#
Shift_JISの全角だけだったらこんな感じじゃねーの

if($comment =~ /[\x81-\x9f\xe0-\xfc][\x40-\x7e\x80-\xfc]/s){ print "Japanese"; }
else{ print "Not Japanese"; }
522nobodyさん:2006/05/16(火) 20:11:57 ID:???
>514
その計算機によると、うちは東京なのにアクセスポイントは愛知らしいwww
すごいな、うちって専用線だったんだ(*´д`)
523nobodyさん:2006/05/16(火) 20:17:41 ID:???
>>522
あの計算機はデタラメ吐くよwwwwwwwプロバすらもでたらめwwww
本当なのはIPだけwwww
524nobodyさん:2006/05/16(火) 20:32:02 ID:???
でもIPさえ分かれば、後は自分で調べられるな。
525nobodyさん:2006/05/16(火) 20:54:29 ID:???
>>524
残念”自分”のIPしか表示できません
526nobodyさん:2006/05/16(火) 20:54:37 ID:???
>>500
>・全部半角英数字
$comment =~ /^[ -~]+$/s; # 全部半角英数字と記号
$comment =~ /[^ -~]/s; # 半角英数字以外がある(日本語かも)
527nobodyさん:2006/05/17(水) 02:57:00 ID:???
いまの2chのIDってまだcrypt使ってんの?
528500:2006/05/17(水) 05:49:51 ID:???
>>526
ありがとうございます
でもこれよりも>>521さんのほうがよさそうなのでけっこうです
529nobodyさん:2006/05/17(水) 06:50:54 ID:???
>>528
ありがとうございますと言いながら、それ全然お礼じゃないよな。
慇懃無礼な物言いを直さないと、今後誰もあなたの質問に答えてくれなくなるかもよ。
530nobodyさん:2006/05/17(水) 07:39:40 ID:???
m9
531nobodyさん:2006/05/17(水) 07:57:53 ID:???
>>527
じゃあなんで1日ごとにかわるんだよ
532nobodyさん:2006/05/17(水) 08:26:42 ID:???
>>531
その理屈はおかしい
533nobodyさん:2006/05/17(水) 09:42:06 ID:???
>>531
一日ごとに/dev/randomを読み直してるからだと思う。
というか、md5じゃなかったけか。
534nobodyさん:2006/05/17(水) 12:38:53 ID:??? BE:144342443-#
>>528
>>526の方が高速だし文字コードに依存しないからいいと思うよ
535nobodyさん:2006/05/17(水) 12:47:45 ID:???
crypt(DES)…トリップ
MD5…ID
536nobodyさん:2006/05/17(水) 15:38:06 ID:???
>>535
へー…
537nobodyさん:2006/05/17(水) 17:02:26 ID:YyZihD9s
cat /etc/passwd を編集した結果をWEBブラウザに表示させるプログラムを作成しようと考えているのですが、
cat /etc/passwdの結果をperlのプログラムに取り込むにはどのようにしたらよいでしょうか?

どなたか教えてください。
538nobodyさん:2006/05/17(水) 17:20:26 ID:???
>>537
ファイルの内容が見たいのなら普通にopenして読み込めばいいんじゃないの
539nobodyさん:2006/05/17(水) 17:34:45 ID:???
>>537
Perlはrootから実行されるからopenでOKだお
540nobodyさん:2006/05/17(水) 18:01:01 ID:???
>539
なんだそのへたれ回答は・・・
541nobodyさん:2006/05/17(水) 19:33:26 ID:???
Perlって危険なんですね
542nobodyさん:2006/05/17(水) 20:00:51 ID:???
真に受けるなカス
543nobodyさん:2006/05/18(木) 01:16:03 ID:fJu7t3bW
ファイル送信の質問です・・・

htmlからPOSTでデータを送信すると、
$ENV{'REQUEST_METHOD'} の中には POSTが入るでしょ?
んで、
htmlからGETでデータを送信すると、
$ENV{'REQUEST_METHOD'} の中には GETが入るでしょ?
それじゃ、
htmlからデータを送信しなかった場合(cgiを呼び出しただけ)は何が入るのですか??
544nobodyさん:2006/05/18(木) 01:17:38 ID:???
実際に試してみればよいのでは?
545nobodyさん:2006/05/18(木) 01:21:45 ID:???
>>542
死ね
546nobodyさん:2006/05/18(木) 01:45:58 ID:???
>>545
だが断る
547nobodyさん:2006/05/18(木) 09:37:43 ID:???
>>543
クライアントがGETでリクエストすればGETだし、
POSTをリクエストすればPOST。

HTTPを学んでください。
548nobodyさん:2006/05/18(木) 10:15:37 ID:???
>>547
だから何も指定しなかったら何が入るのかっつー話だろw

日本語を学んでください。

普通ディフォルトはGET
549nobodyさん:2006/05/18(木) 11:23:23 ID:???
>>487

それは単なる実装の話。
550nobodyさん:2006/05/18(木) 11:48:23 ID:???
って、元質問を読みなおしたら、HTMLのA要素辺りの話かYo。
このスレに書かれてるから勘違いしてた。
551nobodyさん:2006/05/18(木) 12:35:32 ID:???
GETとかPOSTを指定しなければ空
(実際にGET動作でも指定がなければ環境変数に入らない)
552nobodyさん:2006/05/18(木) 13:12:00 ID:???
>>543
#!/usr/bin/perl
print "Content-type: text/html\n\n";
print $ENV{'REQUEST_METHOD'};

>>551はうそ
553nobodyさん:2006/05/18(木) 14:39:45 ID:???
さすが底辺のwebprog板,>>551のようなクズまで回答者やってんのかwww

RFC1616
5.1 Request-Line
Request-Line = Method SP Request-URI SP HTTP-Version CRLF
Methodは必須、省略はできない。
554nobodyさん:2006/05/18(木) 14:48:04 ID:???
>>553
底辺と馬鹿にしておいてそんな回答かよwww

ブラウザでは指定しない場合はGET。が正解だろ?
555nobodyさん:2006/05/18(木) 14:52:37 ID:??? BE:541283459-#
電波・お花畑板でやれ
http://etc3.2ch.net/denpa/
556nobodyさん:2006/05/18(木) 15:02:57 ID:???
>>554 == >>548 == ディフォルト君

> 普通ディフォルトはGET
ディフォルト
ディフォルト
ディフォルト
ディフォルト
ディフォルト
ディフォルト
ディフォルト
ディフォルト
ディフォルト
ディフォルト
ディフォルト
ディフォルト
557nobodyさん:2006/05/18(木) 15:10:10 ID:tdyLNCZH
Webページで、ボタンを押すと指定のファイルをDLする仕組みを作りたいのですが、
どのような作り方をすればよいですか?
558nobodyさん:2006/05/18(木) 15:19:29 ID:???
>>556
必死だな
559nobodyさん:2006/05/18(木) 15:22:38 ID:??? BE:481140858-#
>>557
既存のDLカウンタのコードを読んでみるとか
http://www.studyinghttp.net/
ここも参考にしてみるとか
560nobodyさん:2006/05/18(木) 15:25:48 ID:???
>>558
お前、普段から「ディフォルト」って言ってんの? www
561nobodyさん:2006/05/18(木) 15:35:23 ID:???
デフォルトだと思ってる?
英語の発音だとディフォルトなんだけど。
っつーかこういうどうでもいいやつ多いなおれみたいな。
562557:2006/05/18(木) 15:51:28 ID:tdyLNCZH
回答ありがとうございます。
具体的には、
<a href="list.csv">DownLoad</a>
と書いているのですが、list.csvのpermissionを777にしてもInternal Server Errorが出てしまいます。
このエラーの回避をし、ダウンロードを可能にするにはどうしたらよいのでしょう
563nobodyさん:2006/05/18(木) 16:25:09 ID:???
>>561
日本語の外来語表記では、「ディフォルト」は「デフォルト」の表記のゆれとして扱われる。
だからどちらも間違いではないが、一般的には「デフォルト」と書く。
564nobodyさん:2006/05/18(木) 16:34:05 ID:??? BE:433026094-#
>>562
それサーバーの設定見直した方が…
565nobodyさん:2006/05/18(木) 16:58:36 ID:???
default の発音は、以下のページの発音記号に示されている通りであって、

- デフォルト
- ディフォルト

のどちらでもないよね。

http://dictionary.goo.ne.jp/search.php?MT=default&kind=ej&mode=0&base=1&row=0
566nobodyさん:2006/05/18(木) 17:12:48 ID:???
>>565
ではなんて表記すればいいの?
567nobodyさん:2006/05/18(木) 17:20:41 ID:???
>>565
そのページにおもいっきり
>【コンピュータ】デフォルト, (デフォルト値を)採用する.
と書いてあるんだが…。

しかし、webをウェブじゃない!ウェッブだ!!とか
ホームページじゃない!ウェブサイトだ!!とか言う
香具師って、年逝ってるのが多いよね。

どーでも良いんだよ意味が伝われば(w
568nobodyさん:2006/05/18(木) 17:33:40 ID:???
>566
デフォでOK
569nobodyさん:2006/05/18(木) 18:24:57 ID:???
デファウルト
570nobodyさん:2006/05/18(木) 19:19:37 ID:C+uZ+IY0
訳があり、CGIで

<SELECT NAME="color">
<OPTION value="1">1</OPTION>
<OPTION value="2">2</OPTION>
<OPTION value="3">3</OPTION>
<OPTION value="4">4</OPTION>
<OPTION value="5">5</OPTION>
<OPTION value="6">6</OPTION>
<OPTION value="7">7</OPTION>
<OPTION value="8">8</OPTION>
<OPTION value="9">9</OPTION>
<OPTION value="10">10</OPTION>
</SELECT>

を10個ほど連続で記述しているのですが、正直、長くなりすぎて困っています。
シンプルにできないでしょうか?
571nobodyさん:2006/05/18(木) 19:24:42 ID:??? BE:541283459-#
for使えばいいんじゃね
572nobodyさん:2006/05/18(木) 19:35:57 ID:???
配列につめて回せばおk
573nobodyさん:2006/05/18(木) 19:38:11 ID:???
ぷりんと <OPTION value="$_">$_</OPTION> ふぉー 1..10;
574nobodyさん:2006/05/18(木) 19:38:26 ID:C+uZ+IY0
>>571-572
本当に申し訳ない
Perl初めて一週間のオイラにはなんのこっちゃか・・・
575nobodyさん:2006/05/18(木) 19:49:51 ID:???
そ こ か ら か !
576nobodyさん:2006/05/18(木) 19:51:57 ID:???
まず自分でやってみてから質問せい
577nobodyさん:2006/05/18(木) 19:54:08 ID:???
for
578nobodyさん:2006/05/18(木) 20:45:47 ID:???
1週間なら普通もうforとかforeachとかwhileくらいはとっくにやってると思うが
さぼってんじゃねーぞ
579nobodyさん:2006/05/18(木) 20:54:20 ID:???
_匕∠ニ≡=E─天¬冖卞广了 ̄ _匕∠ニ≡=E─天¬冖卞广了 ̄
 _匕∠ニ≡=E─天¬冖卞广了 ̄_匕∠ニ≡=E─天¬冖卞广了 ̄
_匕∠ニ≡=E─天¬冖卞广了 ̄_匕∠ニ≡=E─天¬冖卞广了 ̄

 ̄了广卞冖¬天─E=≡ニン、匕_  ̄了广卞冖¬天─E=≡ニン、匕_
  ̄了广卞冖¬天─E=≡ニン、匕_ ̄了广卞冖¬天─E=≡ニン、匕_
   ̄了广卞冖¬天─E=≡ニン、匕_ ̄了广卞冖¬天─E=≡ニン、匕_

  _匕∠ニ≡=E─天¬冖卞广了 ̄ _匕∠ニ≡=E─天¬冖卞广了 ̄
 _匕∠ニ≡=E─天¬冖卞广了 ̄_匕∠ニ≡=E─天¬冖卞广了 ̄
_匕∠ニ≡=E─天¬冖卞广了 ̄_匕∠ニ≡=E─天¬冖卞广了 ̄
580nobodyさん:2006/05/18(木) 21:00:15 ID:???
>>579
昨日のトリビアの続きか?
581nobodyさん:2006/05/18(木) 21:11:37 ID:???
>>579
sugeeeeeeeeeeeeeeeeeeeeeeeeeeeeee!!!!!!!!!
582nobodyさん:2006/05/18(木) 21:32:59 ID:???
>>574
print '<SELECT NAME="color">',"\n";
$i=0;
while(1) {
$i=$i+1;
print '<OPTION value="',$i,'">',$i,'</OPTION>',"\n";
if($i==10) { goto DERU; }
}
DERU:
print '</SELECT>',"\n";
583nobodyさん:2006/05/18(木) 21:40:24 ID:???
変わったコードだな…
584nobodyさん:2006/05/18(木) 21:45:10 ID:???
print '<SELECT NAME="color">',"\n";
map {print qq|<OPTION value="$_">$_</OPTION>\n|} (1..10);
print '</SELECT>',"\n";
585nobodyさん:2006/05/18(木) 21:49:32 ID:???
>570
>>573さんのようにPerlだからでこその記述の仕方ではないけど・・・
print "<select name=\"color\">\n";
for(1..10){
  print "<option value=\"$_\">$_</option>\n";
}
print "</select>\n";


>>579
普通に感動
すごいなそれ
586nobodyさん:2006/05/18(木) 21:55:03 ID:???
qq| | っていいね。初めて知った。
587nobodyさん:2006/05/18(木) 22:13:29 ID:???
他のスレから来ました。
Perlで他のサイトを取得して表示したいと思っています。
(著作権侵害とかそういうことをしたいのではないです)

お時間のある方にお願いしますが、次のコードで@niftyのトップページを取得してみたら
どうなるか教えていただけませんでしょうか?

print "Content-Type: text/html\n";
print "\n";
use LWP::Simple;
print get( 'http://www.nifty.com/' );

私のところだと、ブラウザ上での表示がぐちゃぐちゃになるんですが…。
588nobodyさん:2006/05/18(木) 22:33:05 ID:???
>>587
こいつ他のスレ荒らした奴だから構わないでね。
http://pc8.2ch.net/test/read.cgi/tech/1146022352/
589587:2006/05/18(木) 22:37:14 ID:???
荒らしてません。>>588はスルーして下さい。
590nobodyさん:2006/05/18(木) 22:50:45 ID:???
せっかくスライドして来てくれたのだから楽しんでって貰おうよ。
応接するメンツはそれほど変わらんと思うけど。w

>>587
その質問に対する答えなら、「試しちゃいないけど、たぶん僕んとこでも同じです」だね。

でな、ひとつ提案なんだけれど、「やりたいこと」、「試したこと」、「その結果」をそれぞれ正しく伝わるように書いてみませんか。
「どうなるはずだと思ったか」を書かずに、単に「どうなるか」と問われても、「書いた(コード)なり」、としか答えられませんし、
また「ぐちゃぐちゃ」が実際にどういった現象を指しているのか、そしてそれはあなたの狙いとどう食い違っているのか、そのあたりは最低限明記しなくては有益な議論になりません。
591nobodyさん:2006/05/18(木) 22:50:56 ID:???
TT でも使っとけばよくね?って言いたくなるコードが多いね。
592nobodyさん:2006/05/18(木) 22:52:19 ID:???
593nobodyさん:2006/05/18(木) 22:58:57 ID:???
http://pc8.2ch.net/test/read.cgi/php/1049514428/585
マルチしてる池沼は以後放置
594587:2006/05/18(木) 23:02:26 ID:???
>>590
ありがとうございます。

■やりたいこと:
Perlスクリプトから任意のページを取得する
(丸ごとゲットしたいわけではなく、ブラウザで表示するだけ)

■試したこと:
>>587のようなコード(socket関係、LWPモジュール関係)

■結果:
指定したページは取得できているけれど、相対パス指定の画像や外部ファイルが
読み込めていないため、スタイルシートに依存しているページなどでは
表示がぐちゃぐちゃになる

■「ぐちゃぐちゃ」とは:
スタイルシートに依存しているページなどをオフラインで見た時のようなイメージ

■私の狙いとどう食い違っているのか:
私は、スクリプトにアクセスすると、スクリプトが指定したページを取得してきて
それをブラウザに返し、そこからブラウザがリンクを解析して画像などを読み込んでくると
思っていました。
でも、絶対パスの画像などは読み込まれてきますが、相対パスのものが
全く読み込まれません。
これって普通なんでしょうか?
595587:2006/05/18(木) 23:03:25 ID:???
マルチしてません。>>593はスルーして下さい。
ていうかあなたがやったんでしょう?
596587 ◆AOxf8.Tmck :2006/05/18(木) 23:04:10 ID:???
>>593>>595は私じゃありません。スルーして下さい。
597587:2006/05/18(木) 23:04:53 ID:???
すみません、第三者が見て不快になるレスをしたかもしれません
>>595はスルーして下さい。
598nobodyさん:2006/05/18(木) 23:05:59 ID:???
鳥つけるヤシに限ってググれば解決する問題を延々とここで質問するからクソだよな
599nobodyさん:2006/05/18(木) 23:06:16 ID:??? BE:336798274-#
ワロス
600587 ◆AOxf8.Tmck :2006/05/18(木) 23:06:32 ID:???
このトリップは先に質問した時のスレからずっとつけてます。
つけてないのは偽者です。
601nobodyさん:2006/05/18(木) 23:07:16 ID:???
>>594
>これって普通なんでしょうか?
それで正しい動作。あまりに普通。
ソース解析して中身まで持って来たりはしない。
602nobodyさん:2006/05/18(木) 23:07:40 ID:???
こりゃひどい酷すぎる
呆れたってよりも可哀想だ…
603587 ◆AOxf8.Tmck :2006/05/18(木) 23:07:59 ID:???
あ、>>594とかは本物です。

>>598
ググっても解決しませんでしたが。
604nobodyさん:2006/05/18(木) 23:08:29 ID:???
>>592のリンク先で質問してるのもこいつ本人なんだろうな……。
605587 ◆AOxf8.Tmck :2006/05/18(木) 23:09:21 ID:???
>>601
そうなんですか…。どうもありがとうございます。

それでは、相対パスの画像なども読み込まれるようにするには、
どうコーディングすればいいんでしょうか?
606587 ◆AOxf8.Tmck :2006/05/18(木) 23:10:18 ID:???
>>604
そうですけど。だったら何なんですか?
607nobodyさん:2006/05/18(木) 23:10:35 ID:???
>>603
>ググっても解決しませんでしたが。
何て検索したか言ってみろ
俺のディスプレイには解答への検索結果が出てるが
608nobodyさん:2006/05/18(木) 23:10:48 ID:???
587は、世の中にはエスパー機能付きブラウザがあると思ってるわけか
609 ◆TWARamEjuA :2006/05/18(木) 23:13:06 ID:??? BE:3485748-#
→(丸ごとゲットしたいわけではなく、ブラウザで表示するだけ)
丸ごと以上にゲットしなきゃだと思う。。。@HTMLを解釈して必要な物を再度取得する。

ブラウザってば、普通の人にはなんの変哲もない事をやっているように見えるけれども、
中の人はほんと大変なんだけどなぁ。。。
610587 ◆AOxf8.Tmck :2006/05/18(木) 23:14:01 ID:???
>>607
すいません忘れました。

>>608
エスパー機能でなくても、例えばニフティのトップだったら
ブラウザに「http://www.nifty.com/」というURLを与えてやれば、
そこから相対パスをブラウザ内部で絶対パスに変換することはできると思います。
611nobodyさん:2006/05/18(木) 23:15:17 ID:???
本気で酷いな。
612587 ◆AOxf8.Tmck :2006/05/18(木) 23:15:46 ID:???
>>609
「@HTML」って何ですか?
ググっても「@」という記号が無視されるようで、検索できませんでした。
613nobodyさん:2006/05/18(木) 23:15:49 ID:???
真性だたかw
614nobodyさん:2006/05/18(木) 23:17:24 ID:???
>>612
前スレ行って謝ってこい。話しはそれからだ。
615587 ◆AOxf8.Tmck :2006/05/18(木) 23:18:53 ID:???
>>614
何を謝るんですか?
質問しただけなのに荒らされて、迷惑を被ったのはこっちの方です。
616 ◆TWARamEjuA :2006/05/18(木) 23:20:29 ID:??? BE:1961429-#
>>612
該当するページのソースを丸ごと取得してから、ソースを解釈して<img src="uri">などの"uri"からリソースを再度取得し、
ローカル内に再配置する。それからそれから(長いので省略)

という意味です。
617nobodyさん:2006/05/18(木) 23:20:50 ID:???
お前のせいでスレに迷惑がかかってるのに気が付かないか?
618nobodyさん:2006/05/18(木) 23:22:22 ID:???
>>616
自演乙。
619587 ◆AOxf8.Tmck :2006/05/18(木) 23:22:25 ID:???
>>616
…ということは、ブラウザと同じようなものを作るしかないということなんですね。

どうもありがとうございました。
620 ◆TWARamEjuA :2006/05/18(木) 23:27:07 ID:??? BE:1525627-#
>>618
自演だったのかぁ♪

>>619
そういうことです。
ブラウザを甘く見ちゃエケナイのです。
621nobodyさん:2006/05/18(木) 23:28:32 ID:???
>>620
お前も一緒に謝罪に来い。
622nobodyさん:2006/05/18(木) 23:32:08 ID:???
ファイルロックしてるのにファイルが消えるんですが。
623nobodyさん:2006/05/18(木) 23:34:44 ID:???
なぜスルーできないヒトがここまで多いのかわからん
624622:2006/05/18(木) 23:38:34 ID:???
>>623
>なぜスルーできないヒトがここまで多いのかわからん
スルーしないで答えてくださると嬉しいですね。
625nobodyさん:2006/05/18(木) 23:39:27 ID:???
>>623
向こうのスレ見てない人?答えてるのは自演だよ。
626nobodyさん:2006/05/18(木) 23:57:46 ID:???
print <<'EOF';
 早     /::::l:::l::、:::::、:::::ヽ::、::::::::::::\:::\::::::::ヽヽ::::::ヽ   駄
 .く      /:::!::::i:::!:::ヽ:::ヽ::::::ヽ::ヽ、::::::::::\:::ヽ:::::::ヽヽ::::::',   目 
 な.     /:l::::!::::ヽ!::ヽ:::::::ヽ:::::::\:::ヽ、::::::::ヽ:::ヽ::::::::!::i:::::::!  だ 
 ん   ハ:::l:::::、::::ヽ::::\:::::\:::::::\:::`ヽ、:::ヽ::ヽ:::::!:::!:::::l
 と   /:::::::l::::::!ヽ:ヽ::::、:::::ヽ:::、:\::::: \::::::\::::!::::ヽ:!:::i:::l:l  こ
 か  !:/!:::::!::::::!::ヽ:ヽ{:::\:::ヽ::::\:::\::ヽ:::::::ヽ!:::::::}!::::l::li|   い
 し  j/:::l:::::!:、:::!::ト、:、:ヽ:::::`ヽ{、::::::\::::\{、::::::::::::::::i::!::l:l !   つ
 な    l:i:l::::i::i:、:l::lテ=-、:ヽ、_、::\_,≧ェュ、_、\:::::::::i::li::!::リ   :
 い   !ハト:{:!:i:トN{、ヒ_ラヘ、{ >、{ 'イ ヒ_ラ 》\::l::!:ト!!:l::l!     :
 と     ヽ i、ヽ:ト{、ヾ ̄"´ l!\   `" ̄"´  |::!:l::! j:ll:!
  :      !::、::::i      l             u |:::/lj/l:!リ
  :        ヾト、:!u                 j!/ j|:::リ
          ヾ!    ヽ  ‐       u /イ´lハ/
            }ト.、  -、ー-- 、__      /' !:://
             リl::l゛、  `二¨´    /  |/:/
         rー''"´ト!::i{\       /  / !:/
        / ^ヽ  ヾ!  ヽ _,,、'´    /  j/
EOF
627nobodyさん:2006/05/18(木) 23:59:24 ID:???
ファイルロックしてるのにファイルが消えるんですって。
誰か教えてくださいよ〜。
628nobodyさん:2006/05/19(金) 00:27:46 ID:???
>>627
意地悪で言うんじゃないからちゃんと読んでね。

お前さんがそこそこ腕の立つ医者だったとしようや。
患者がやってきて、

「病院に通ってるのに病気が治らないんですけど」

って言うんだ。


僕たちは商売でもないのに、毎度基礎的な事実関係を優しく問診してあげるところからスタートしなくちゃいけないかい?
問題解決に興味があっても(だから僕たちはここにいるんだけど)、問題が何なのかわからなくちゃどうしようもないんだ。
629543です:2006/05/19(金) 00:27:52 ID:1sSf/5KF
いつもお世話になっております。
htmlからデータを送信しなかった場合(cgiを呼び出しただけ)ではGETが入っていました。

>>544 試してみたら簡単でした
>>547 日本語を学んでください
>>548 ありがとうございました
>>551 GETでした
>>552 わざわざソースまでありがとうございました
>>553 意味がわからなかったです・・・
>>554 正解でした
>>556 病院に行ってください

さんきゅーみんな!さんきゅーな!!
630nobodyさん:2006/05/19(金) 00:52:42 ID:???
質問する人はとりあえず
>>1
>>1
>>1
>>1
631nobodyさん:2006/05/19(金) 09:16:12 ID:???
Perl5.8で、スクリプトをcp932で記述、use encoding "cp932"; を指定した後に
漢字を含むファイルの読み書きをする決定的な方法はないでしょうか?
どうもパスやファイル名だけがUTF-8になってしまう妙な不具合(仕様)が
あるようなので困っています。
632nobodyさん:2006/05/19(金) 09:18:43 ID:???
すみません。>>631
「漢字を含むファイル」→「漢字を含むパスやファイル名」です。
633nobodyさん:2006/05/19(金) 09:40:07 ID:???
>>631
読み書き以外の操作に関しては入出力レイヤのような便利(?)な仕掛けはないので
自分でencodeしないとだめだという仕様。
634nobodyさん:2006/05/19(金) 10:11:05 ID:???
>>627
オカルト板で聞くといいよ。
635nobodyさん:2006/05/19(金) 10:51:24 ID:???
なるほど、全角アルファベットを使う奴は無視することにしよう。
636nobodyさん:2006/05/19(金) 11:23:42 ID:???
ファイルロックは消せないようにするものじゃないので不思議でもなんでもないわけだが。
637574:2006/05/19(金) 12:14:00 ID:???
本当にごめん。皆ありがとうorz

ちょっくら真剣に勉強してきます orz
638nobodyさん:2006/05/19(金) 14:58:40 ID:JIoPGZWV
utf8で書かれたスクリプトがあり、エラー処理が
・・・ or error("×××失敗: $!");
のようになっているのですが、サーバー(Linux)の設定が
eucのため $! もeucになり、文字化けしてしまいます。

$! を使った箇所はたくさんあるため、1つ1つ
・・・ or error("×××失敗: " . decode("euc-jp", $!));
のように変更するのは避けたいのですが、簡単に
解決する方法はあるでしょうか。
※スクリプトの文字コードやサーバーの設定は変えられません。

何かいい方法がありましたらご教授下さい。
よろしくお願いします。
639nobodyさん:2006/05/19(金) 15:51:40 ID:???
そんな意味不明な設定をしているサーバから離れる。
仕事で IT 土方やってるなら、地面を掘るほうの土方に転職する。
640nobodyさん:2006/05/19(金) 16:07:23 ID:???
サーバの設定というのが意味不明だな。
普通はスクリプトで全て設定できる。
641nobodyさん:2006/05/19(金) 16:10:56 ID:4aaheppT
初心者質問スレなんだから教えてやれw
642nobodyさん:2006/05/19(金) 16:16:43 ID:???
>>638
通常ユニコード文字列とバイト文字列をつなげるときにバイト文字列はlatin-1としてdecodeされるが、
これはencodingプラグマで変更することができる。

したがってバイト文字列な$!をeuc-jpとしてdecodeするように

use encoding "euc-jp";

としてやればいけるはずだ。ただ他の部分にも影響するから注意。

一応動作確認:

use utf8;
use encoding 'euc-jp';

open F, "</hogehoge" or die "ほげほげ: $!";

というプログラムをutf8でセーブして

% LANG=ja_JP.eucJP perl foo.pl 2>&1 | hex
0x00000000: e3 81 bb e3 81 92 e3 81 - bb e3 81 92 3a 20 e3 81 ..祉....祉..: ..
0x00000010: 9d e3 81 ae e3 82 88 e3 - 81 86 e3 81 aa e3 83 95 ...??.......??..
0x00000020: e3 82 a1 e3 82 a4 e3 83 - ab e3 82 84 e3 83 87 e3 ..<.ゃ.??......
0x00000030: 82 a3 e3 83 ac e3 82 af - e3 83 88 e3 83 aa e3 81 .c.??.??....??.
0x00000040: af e3 81 82 e3 82 8a e3 - 81 be e3 81 9b e3 82 93 ??.......障.....
0x00000050: 20 61 74 20 66 6f 6f 2e - 70 6c 20 6c 69 6e 65 20 at foo.pl line
0x00000060: 34 2e 0a - 4.J
643nobodyさん:2006/05/19(金) 16:51:21 ID:???
>>638
binmode STDERR, ":encoding(euc-jp)";
644643:2006/05/19(金) 17:02:27 ID:???
あ、出力を UTF-8 で固める話ね。読み違えてた、ごめん。

そゆことなら error() の定義を書き換えるか、オーバーライドしてしまえば最小限の修正で済むんでないかな、と。
645nobodyさん:2006/05/19(金) 17:08:17 ID:???
> ※スクリプトの文字コードやサーバーの設定は変えられません。

どんな状況でどんな理由なのだろうか
646638:2006/05/19(金) 18:34:56 ID:???
ご回答ありがとうございます。

>>640
TeraTermというソフトでサーバーにアクセスすると文字コードがeucとなっているので、
そのことを伝えたくて書きました。私自身が分かっていないまま書いてしまい申し訳ありません。

>>642
頂いたテストコードでうまく行くのは確認できました。しかし、いろいろテストしてみましたところ、
use utf8;
use encoding 'euc-jp';
eval { open FH, "hoge" or die $! };
if ($@) {
 print "エラー: $@";
}
のような感じにすると、なぜか文字列全体がeucになってしまいました。

また、
> 他の部分にも影響するから注意
の「影響」も分かっていない状態で使うのは、何か問題が起きた際にどうしようもなくなって
しまうため、せっかくのところ申し訳ないのですが別の方法を探そうと思います。

>>644
error("utf8文字列 eucの$!") という具合なので、error に渡った時にはもう文字コード混在
状態なのです。それを判断して変換できればその方法が一番よいように思うのですが、
$! の組み込まれ方も様々でして、私ではどうにもできませんでした。

>>645
既に稼動状態にあるものを引き継いだため、大きな影響が出そうなことはできないのです。
647nobodyさん:2006/05/19(金) 18:39:44 ID:???
>TeraTermというソフトでサーバーにアクセスすると文字コードがeucとなっているので、
oioi
648nobodyさん:2006/05/19(金) 18:56:31 ID:???
もしログ見る奴が我慢できるなら、LC_MESSAGESをCにしちまえば
英語になるので文字化けからは解放される。
649nobodyさん:2006/05/19(金) 19:27:02 ID:???
>>646
いくつか質問。
1.それはCGIの類なのか、ただのスクリプトなのか、何なのか
2.見るのに使うソフトウェアはブラウザなのか端末ソフトなのか何なのか
3.見たいものはログファイルなのか、スクリプトの出力なのか、何なのか
650 ◆TWARamEjuA :2006/05/19(金) 19:41:20 ID:??? BE:3920966-#
つ $ENV{LANG} = 'euc-jp';
って云うのもありかな?
651631:2006/05/19(金) 19:44:44 ID:???
>>633
おこたえありがとうございます。やっぱりありませんか…orz
652nobodyさん:2006/05/19(金) 19:46:29 ID:???
時間を獲得する場合って「$ENV{'TZ'} = "JST-9";」は必ず必要?
無くても平気?
653 ◆TWARamEjuA :2006/05/19(金) 19:50:52 ID:??? BE:4901459-#
>>652
無くても平気だけれども、正確に日本時刻を取得したいのならば(locale依存)
$ENV{TZ}を待避させてから'JST-9'を入れてあげるといいと思うそ。
654nobodyさん:2006/05/19(金) 19:51:42 ID:???
>>653
おう。
ありがとん。
655638:2006/05/19(金) 21:06:17 ID:???
>>648
ログが英語になるのはまったく問題ないのですが、
それはどこの設定を変えればよいのでしょうか。

>>649
1.CGIやバッチ処理を行うスクリプトなど様々です。
2.ログは端末ソフト上で見たり、ダウンロードして秀丸で見たりします。
3.エラーは通常ログファイルに出力されますが、ちょっとした確認は標準出力したりしています。

>>650
$ENV{LANG} = 'euc-jp'; を追加してみても直りませんでした。
656 ◆TWARamEjuA :2006/05/19(金) 21:16:24 ID:??? BE:1306962-#
>>655
あ、そうか。。。
だったら、>639かな♪
657nobodyさん:2006/05/19(金) 21:37:00 ID:???
>>655
起動する前にあらかじめ環境変数LC_MESSAGESにCを設定しておくか、perlの中だけでやりたければ
POSIX::setlocaleを使う。後者の例はperldoc perllocale参照。
658638:2006/05/19(金) 23:07:44 ID:???
>>657
ありがとうございます。スクリプトの先頭で
use POSIX;
POSIX::setlocale(LC_MESSAGES, "C");
とすることで、エラーメッセージが英文になりました。
大変勉強になりました。
659nobodyさん:2006/05/19(金) 23:50:07 ID:???
$ENV{LANG} = 'euc-jp'; なんて書き方ねーよ。
660nobodyさん:2006/05/20(土) 01:08:01 ID:???
システムの吐く文字コードが英字限定になって、
自前のスクリプトが吐く文字コードがUTF8で、
ターミナルの文字コードをUTF8にしておくで解決したのかな。
661nobodyさん:2006/05/20(土) 10:59:57 ID:???
>>646
UTF-8対応のTeraTerm使えばいいだけの話じゃないの
662nobodyさん:2006/05/20(土) 17:53:08 ID:???
正規表現についてですが、
if ( $url =~ /\.html$/ or $url =~ /\.html\#/ )
これをもっと簡単に書くことはできませんか?
663nobodyさん:2006/05/20(土) 17:58:29 ID:???
$url =~ /\.html(?:#.+)?$/
664nobodyさん:2006/05/20(土) 18:57:30 ID:???
ありがとう。
665nobodyさん:2006/05/20(土) 19:00:35 ID:???
あるCGIのクッキーの処理を見ていたら
$wday = ('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday') [$wday];
という箇所があったのですが、この配列(?)のケツに付いている「[$wday];」って何でしょうか?

調べてもまったく出てこなくて・・・・・・
666nobodyさん:2006/05/20(土) 19:04:52 ID:???
>>665
@aho = (3,4,3); $aho[1] eq 4 みたいに配列の要素へアクセスするときはブラケットの中に数字を入れる。
667nobodyさん:2006/05/20(土) 19:18:42 ID:???
>>666
失礼。もう1ついいですか。
配列は「@wday」と書くものだとずっと思っていたのですが、ここでは「$wday」となっています。
これはどういった意味があるのでしょうか?

また、>>665はどういった処理をしているのでしょうか?

何度も申し訳ないです。。。。 よろしくお願いします。
668nobodyさん:2006/05/20(土) 19:49:52 ID:???
>>665
$var = (11,22,33,44)[2];
↑33が入る
669nobodyさん:2006/05/20(土) 19:52:35 ID:???
('Sunday' ...)がリスト(配列)
それの$wday番目の要素を$wdayに代入
670665,667:2006/05/20(土) 20:10:17 ID:???
>>668-669
ありがとうございます。
とても参考になりました。
671nobodyさん:2006/05/20(土) 20:10:52 ID:???
本当に分かったんかなぁ?
672nobodyさん:2006/05/20(土) 21:04:01 ID:???
自分も初心者ですが。。。

これ↓はリストを配列に代入。

@wday = ('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday');

個々の配列要素にアクセスするときは、@ → $にする。なぜなら個々の要素は普通の値(もしくは文字)だから。
@だと配列全体を表すことになる。

$a = $wday[2]; # (0から数えて)2番目の要素である Tuesday を $a に代入
print $a; # Tuesday と表示

これ↓だと先述したリストを一旦、配列に入れるというのをぶっとばして、いきなりリストの2番目の要素に
アクセスしている。

('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday')[2]

すなわち、その値は、Tuesday という文字。

下の代入は、まず$wdayには数字が入っていて、リストの何番目の要素を取り出すかを決めている。
例えば、$wdayに2が入っていれば、Tuesday が選ばれたことになる。そしてその Tuesday を$wdayに代入している。
$wdayは最初、数字だったのがこれにより文字列になるわけですね。

$wday = ('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday') [$wday];
673 ◆TWARamEjuA :2006/05/20(土) 21:29:35 ID:??? BE:3267465-#
# --- 鯖時間をそれなりに変換♪
# Exchange_Date(mode, unixtime)
# mode が 'jp' の時には日本語で返す。
# unixtime time(3)の値。
sub Exchange_Date{
my $mode = shift;
my @date = localtime shift;

@date = (
 $date[5] + 1900,
 ('01' .. '12')[$date[4]],
 $date[3],
 qw(Sun Mon Tue Wed Thu Fri Sat 日 月 火 水 木 金 土)[$date[6] + ($mode eq 'jp' ? 7 : 0)],
 $date[2],
 $date[1],
 $date[0]
);
return $mode eq 'jp'
  ? sprintf qq|%04d年%02d月%02d日(%s) %02d時%02d分%02d秒|, @date
  : sprintf qq|%04d/%02d/%02d(%s) %02d:%02d:%02d|, @date
;
}
みたいな♪
674nobodyさん:2006/05/20(土) 22:29:16 ID:???
何でみんな、そんな親切に教えるかなぁ?
こんなの(いくら初心者っつったって)前後の流れを見れば分かることだし
分からないようならPerlに限らずどんな言語だって身に付かないと思うよ。
甘やかすのと手助けするのは全然違う。
675nobodyさん:2006/05/20(土) 22:34:23 ID:???
それと>>673
$wday = ('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday') [$wday];
すら分からない初心者に、自分はこんなにすごいんだYOと自慢しているようにしか見えない。
676nobodyさん:2006/05/20(土) 22:44:06 ID:???
で?
677nobodyさん:2006/05/20(土) 22:45:03 ID:???
Perlerにはお人好しが多いってだけの話
678nobodyさん:2006/05/20(土) 22:53:39 ID:???
>>676
相手のレヴェルも考えましょうってことサ

>>677
リアルで聞かれたら親切に教えるんで、俺もやっぱりお人好しかなw
679nobodyさん:2006/05/20(土) 23:10:55 ID:???
この板の人は皆優しいです。
680nobodyさん:2006/05/20(土) 23:51:27 ID:???
>>679
全員が優しいとは限らない
681nobodyさん:2006/05/21(日) 00:40:52 ID:???
そりゃ回答してるのが全部俺だけだからなぁ
682nobodyさん:2006/05/21(日) 01:34:49 ID:???
バロスwwwwwwwwww
683nobodyさん:2006/05/21(日) 03:26:23 ID:MNSamSTB
質問です

現在チャットを作っているのですが
在室者・閲覧者の表示方法がわかりません
どういう感じにすれば表示できるかご教授してくださるとうれしいです
684nobodyさん:2006/05/21(日) 03:48:50 ID:???
>>683
在室者は、ログインしてから退室するまでのメンバーを表示すればいいだけだし
閲覧者は、1分に1回くらい画面をリフレッシュして、その時にIPを拾えばいい

大雑把に言えばこんな感じだけど、どういうチャットを作りたいのかはあなたしか
知らないんだから、自分の理解出来る範囲で仕様を決めればいいんでないかい
685nobodyさん:2006/05/21(日) 03:56:10 ID:???
言うまでもないけど、管理のロジックは自分で考えるんだよ。

例えば
・IP
・ユーザ名
・名前の色コード
・リロード時間(個人個人で設定が違ってくるから)
・現在の状況(在室中か閲覧中か)

等を構造体に持たせるとか。
686683:2006/05/21(日) 04:13:12 ID:MNSamSTB
>>684-685
深夜にも関わらずレスありがとうございます

つまりログインしたときその人の名前とIPを拾い別ファイルに記録
(ログアウト時には削除する)
閲覧はログイン手前画面のIPを監視して記録と…

とりあえずこういう感じに自分で書いてみようと思います^^
またわからなくなったときよろしくおねがいしますm(__)m
687nobodyさん:2006/05/21(日) 13:00:23 ID:???
困った時は、ネ申KENT様のスクリプトを教本として作ればいいんですよ
ネ申KENT様のスクリプト以外は全て糞ですウンコです。
688nobodyさん:2006/05/21(日) 13:03:06 ID:???
ですよね。

use strict;とかつかうやつは馬鹿しかいないし、
オブジェクト指向とか、設計時間の無駄ですよね。

目の前の納期に間に合えばいいもんね!
689nobodyさん:2006/05/21(日) 13:22:33 ID:???
perl4の環境を考えるとネ申KENT様より多少救いのある物しか
書いて配布できない環境下の俺が来ましたよ?
古くからやっていると、そこら辺が難しい
perl4のものはバクと最適化とセキュリティ関係以外は打ち止めにして
頭の弱い利用者を配慮してperl5のは別鯖で配布していたりする
それ以前に「ネ申KENT様」と書けば反面教師としてですね
690nobodyさん:2006/05/21(日) 13:25:24 ID:???
利用者と環境によってKENT式かそれ以外を使い分ければよくね?
691nobodyさん:2006/05/21(日) 18:44:21 ID:0cIEHbzA
Perlの正規表現で、
$str='01234567890abcdef';
で、
〜/[0-9]*/と正規表現させた場合、
マッチした部分(この場合、マッチした'01234567890')を取り出す場合、どうすればよいのでしょうか?
692nobodyさん:2006/05/21(日) 18:51:18 ID:???
ぐぐれかす
693nobodyさん:2006/05/21(日) 19:37:41 ID:???
$str =~ s/[0-9]*//g;
694nobodyさん:2006/05/21(日) 19:38:38 ID:???
>>692
回答もできないただのバカはどっかいけ
695nobodyさん:2006/05/21(日) 19:42:31 ID:??? BE:35376522-#
さすがにここまで低レベルな質問に回答出来ない奴は居ないだろ
696nobodyさん:2006/05/21(日) 19:57:50 ID:???
>>693
ありがd

>>695
日本語を喋れ
それか韓国にでも帰れ
697nobodyさん:2006/05/21(日) 20:00:37 ID:???
>>696
おまいのやりたいことは>>693で合ってるか?
ならそれでいいんだけどなw
698nobodyさん:2006/05/21(日) 20:00:53 ID:???
>>696
え、>>693は思いっきり間違ってるけどこれでいいの?w
699nobodyさん:2006/05/21(日) 20:02:10 ID:???
すいません教えてください
700nobodyさん:2006/05/21(日) 20:03:18 ID:???
バロスwwwwwwwwwwwwww
701nobodyさん:2006/05/21(日) 20:03:39 ID:???
ワロタ
702nobodyさん:2006/05/21(日) 20:05:35 ID:???
697 名前:nobodyさん[sage] 投稿日:2006/05/21(日) 20:00:37 ID:???
>>696
おまいのやりたいことは>>693で合ってるか?
ならそれでいいんだけどなw

698 名前:nobodyさん[sage] 投稿日:2006/05/21(日) 20:00:53 ID:???
>>696
え、>>693は思いっきり間違ってるけどこれでいいの?w


700 名前:nobodyさん[sage] 投稿日:2006/05/21(日) 20:03:18 ID:???
バロスwwwwwwwwwwwwww

701 名前:nobodyさん[sage] 投稿日:2006/05/21(日) 20:03:39 ID:???
ワロタ




気持悪りぃ…
703nobodyさん:2006/05/21(日) 20:05:53 ID:???
ほっとけ
704nobodyさん:2006/05/21(日) 20:06:20 ID:???
>>696
perldoc perlrequick

を隅から隅まで 3回読んで理解してから、また同じ質問をしに来てみて。
まだその気が残ってればね。
705nobodyさん:2006/05/21(日) 20:07:32 ID:???
「w」を使う奴ってホント痛いの多いな
706nobodyさん:2006/05/21(日) 20:09:14 ID:???
>>704
そういう返しは嫌いだなボクチン

>>705
>>704にむかついたので教えてあげようと思ったがやめた。
perlの正規表現を扱っているページならほぼ確実に載ってると思うんで自分で調べろ
707nobodyさん:2006/05/21(日) 20:11:46 ID:???
どーでもいーけど>>693GJ!
708693:2006/05/21(日) 20:15:20 ID:???
うわあ・・・釣れてる釣れてる。
まさかここまで釣れるとは思わんかったよ。

>>696
>>697
>>698
>>700
>>702

マジで馬鹿なんだなお前ら。
709nobodyさん:2006/05/21(日) 20:16:08 ID:???
これは酷い
710nobodyさん:2006/05/21(日) 20:17:23 ID:???
別に>>693が面白いわけじゃないのにw
711nobodyさん:2006/05/21(日) 20:25:27 ID:???
>>708
おもしろくないよ
712nobodyさん:2006/05/21(日) 20:26:58 ID:???
wwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwww


           w


臭ぇんだよカス
713nobodyさん:2006/05/21(日) 20:40:46 ID:???
氏ね氏ね
714nobodyさん:2006/05/21(日) 20:49:19 ID:???
厨国人どもうぜーぞアホ
715nobodyさん:2006/05/21(日) 20:51:27 ID:???
あーもう黙れよ屑が。。。
716nobodyさん:2006/05/21(日) 21:02:56 ID:??? BE:141504544-#
この流れワロタ
717nobodyさん:2006/05/22(月) 00:07:23 ID:???
このクソな流れのどこが面白いんだか・・・
718nobodyさん:2006/05/22(月) 00:55:07 ID:???
はお、次の質問どうぞ
719nobodyさん:2006/05/22(月) 01:03:12 ID:???
>バロスwwwwwwwwwwwwww
>ワロタ

日本語以外を話されても困ります
この言葉を日本語に翻訳してくれるプログラムを教えて下さい
720nobodyさん:2006/05/22(月) 01:10:01 ID:???
>>719
バーカ!
721nobodyさん:2006/05/22(月) 02:26:31 ID:8/L06kwr
なんだかこんな雰囲気で質問するのも悪いんですが質問です

CGIスクリプトのHTML部分でUTF-8のコードを使いたいのですが
スクリプト本体をUTF-8で書いても500Errorがでてしまいます
どうしたらいいんでしょうか?

< META http-equiv="Content-Type" content="text/html; charset=UTF-8" >
このタグだけUTF-8にしてみたりしたんですが、元のコードが違うため化けてしまってだめです

どうか教えてください
722nobodyさん:2006/05/22(月) 02:32:44 ID:???
>>721
UTF8以外で書けばエラー出ないの?
エラーは何が出てるの?(500じゃわからんよ)
723nobodyさん:2006/05/22(月) 02:55:13 ID:???
>>721
状況がよくわからんけどとりあえず文字コードをUTF-8Nで保存してみ
724721:2006/05/22(月) 03:05:46 ID:???
レスありがとうございます

723さんのとおりUTF-8Nで保存したら表示されました!
ありがとうございます^−^
725nobodyさん:2006/05/22(月) 03:40:59 ID:???
Windowsのメモ帳とか問答無用でBOM付けるのでちょっとした修正にも使わない方がいい。
726nobodyさん:2006/05/22(月) 10:56:00 ID:??? BE:185724173-#
>>719
マジレスすると「わろた」はうちの方言
727nobodyさん:2006/05/22(月) 10:56:32 ID:??? BE:212256746-#
と言うか関西弁か
728nobodyさん:2006/05/22(月) 11:40:06 ID:p6aDul8l
データファイルから切ってきて
例えば設定ファイルに「$bgcolor=red」などと書いたものを
そのまま1行ずつ読み込んだとします
これをスクリプト内でそのまま使って
機能させることはできますか?
729nobodyさん:2006/05/22(月) 11:49:52 ID:???
nihongo de ok
730nobodyさん:2006/05/22(月) 11:55:28 ID:???
できる

- 終了 -
731nobodyさん:2006/05/22(月) 13:04:02 ID:???
>>730
できねーよ!w
732nobodyさん:2006/05/22(月) 13:10:16 ID:???
工夫次第でできる。

- 終了 -
733nobodyさん:2006/05/22(月) 13:11:35 ID:???
>>732
オマエはバカか?よく見ろ。
734nobodyさん:2006/05/22(月) 13:15:37 ID:???
eval
735nobodyさん:2006/05/22(月) 13:17:23 ID:???
733 名前:nobodyさん[sage] 投稿日:2006/05/22(月) 13:11:35 ID:???
>>732
オマエはバカか?よく見ろ。


あ?おい
736nobodyさん:2006/05/22(月) 13:20:41 ID:???
> あ?おい

あ行の勉強中ですか?
お疲れさまです。
737nobodyさん:2006/05/22(月) 13:22:11 ID:???
ふたりともかおがまっかですよ
738nobodyさん:2006/05/22(月) 17:21:46 ID:???
eval while(<DATA>);
print $bgcolor,"\n", $color, "\n";
exit;

__END__
$bgcolor=red
$color=blue

>>728 こういうこと?
739nobodyさん:2006/05/22(月) 18:31:34 ID:???
デバッグ用に配列の中身がみたいと思っています。
PHPでの print_rのようなものはありませんか?

googleで検索したところ Dumperというのを見つけたのですが、
配列を入れても配列の構造を返さないようです。
ちなみに以下のようにしました。

$dumper = new Data::Dumper(\@array);
print $dumper->Dump();



740nobodyさん:2006/05/22(月) 18:43:14 ID:??? BE:477576869-#
print Dumper(\@array);
じゃだめなん
741nobodyさん:2006/05/22(月) 19:19:11 ID:???
>>740
だめなんですよねぇ。

ちょっと調べているんですが、以下のようなコードで配列に連想配列を
突っ込むというようになっているからかもしれません。

@array = ('a','b','c');

foreach(@hoge) {
$array{$_}{$fuga} = 'hogehoge';
}

print Dumper(\@array);
-> a,b,cがでてくる

print Dumper(\$array);
-> undefがでてくる
742nobodyさん:2006/05/22(月) 19:26:38 ID:??? BE:141504544-#
\%array じゃないのか…
743nobodyさん:2006/05/22(月) 19:39:48 ID:ZM446lpM
どなたかお願いします。

perlの変数値を複数行にする事は可能でしょうか?
例えば、htmlソースを変数に入れる際改行を消して一行にするしかないのでしょうか?

例)以下のソースを$wordという変数に代入するには・・・
<table>
</tr>
<td>
hello
</td>
</tr>
</table>


$word = "<table><tr><td>hello</td></tr></table>";
とするしかないのでしょうか?
744nobodyさん:2006/05/22(月) 19:45:41 ID:??? BE:318385049-#
ヒアドキュメントとか

$word = << '_END_';
<table>
</tr>
<td>
hello
</td>
</tr>
</table>
_END_
745VIPPER:2006/05/22(月) 19:46:53 ID:???
>>743
ぐぐれかす
746nobodyさん:2006/05/22(月) 19:47:44 ID:???
>>743
改行文字入れるだけ。訊く前に自分で試してみては。
"<table>¥n<tr>¥n<td>¥nhello¥n</td>¥n</tr>¥n</table>¥n"
747nobodyさん:2006/05/22(月) 19:47:58 ID:???
>>745
氏ねクズ
748nobodyさん:2006/05/22(月) 19:58:54 ID:???
>>742
> \%array じゃないのか…

その通りでした...
ぐぐって出てきたページには \$hash って書いてあったと思ったのに orz

ありがとさんくす
749nobodyさん:2006/05/22(月) 20:52:52 ID:???
アンカーの記号に全角使うヤツってプログラムを手に付ける人だとは思えない
750VIPPER:2006/05/22(月) 20:57:38 ID:???
749 名前:nobodyさん[sage] 投稿日:2006/05/22(月) 20:52:52 ID:???
アンカーの記号に全角使うヤツってプログラムを手に付ける人だとは思えない


バロスwwwwwwwwwwwww
突撃させて荒らしてやろっかこのスレww
751nobodyさん:2006/05/22(月) 21:01:38 ID:???
基地外が来る分には構わんが


むしろ低脳集団か^〜^
752VIPPER:2006/05/22(月) 21:07:36 ID:???
決めたわwwwwうぜぇからwwwこのスレ荒らさせるwwwwwww
VIPPER舐めんなw
753nobodyさん:2006/05/22(月) 21:10:04 ID:HprcJTxW
クソスレ終了
754nobodyさん:2006/05/22(月) 21:11:26 ID:/ImCeCNj
糞スレ終了
でいいのかな?
755nobodyさん:2006/05/22(月) 21:14:09 ID:???
>752
クソ人生終了
でいいのかな?
756nobodyさん:2006/05/22(月) 21:17:42 ID:??? BE:716364599-#
VIPよりニュー速に宣伝書き込みまくった方が人来るよ
757nobodyさん:2006/05/22(月) 21:20:14 ID:BVU2xPKh
糞スレ終了
758nobodyさん:2006/05/22(月) 21:21:16 ID:???
クソスレ終了
759nobodyさん:2006/05/22(月) 21:22:06 ID:Lsku8mlu
       , -‐''''"´ ̄``ヽ、        //´   ______,,>、
      /     _     ヽ      /::/ / ̄:::::::::::::::::::::::\
     /        ̄ ̄   j     /::::l/:::::::::::::::::::::::::::::::::::::::::l
      l _ィニニア二二二ニヽ、j._    ,l:::::::::::/l/lノノ/_イ:::::::::::::l
     | 0Lj/ヽ      /・l,`ヽ   l::::/ /ヽ      /・l, l::::::| 
     レ:r、/i・ ノ       く、ノ|     |::l i・ ノ       く、ノ !:;:::/
     {,      ニ  ,    .|ヽ     {,      ニ  ,    .|:::/ 
     レ}   人   ノヽ   |      }   人   ノヽ   |ノ/  
     l:T`'''i,  `ー"  \__,/ノ      T`'''i,  `ー"  \__,/  
     ヽ},  `ー--ー'''" /'         レ},  `ー--ー'''" //  
        x,    _,,.x="         `x,    _,,.x="
     _,r┴‐-`v´-‐j-、__   , -‐-、_r┴─'ー‐チト    
  / ̄/:.:.:.:| ̄ ̄`T ̄´|:.:.:.:l´ `ヽ /    ヽ ̄`ー-‐'´`''''⌒ヽ         「バルス!」
/   ,':.:.:.:.:.l    l   l:.:.:.l    \  _r‐、-、-、r,    、   ',
     |:.:.:.:.:.:.!     !   !:.:.l   ,. -‐ゝ/// 〉 〉 〉 〉 〉    !   ',
    l:.:.:.:.:.:.l     |   l:.:.:l  /  人〈〈〈〈 ' ' ' /っ   l    l
    l:.:.:.:.:.:.!     !   l:.:.:.ト/   /  ```´-ァ‐'''"     /   l
、__/:.:.:.:.:.:l     |    |:.:.:ヽヘ  l    //         / _ ィノ
    /:.:.:.:.:.:.:!    l   |:.:.:.:.:l `ーヽ、_ノ´l、______/lニ二」
____l:.:.:.:.:.:.:.|      l   |:.:.:.:.:!        |_  ( ( ) )_〕|   l
   l`ー‐‐'匸二l ̄ ̄l二フーイ       /   ̄ `‐‐'´ ヽ  |
760nobodyさん:2006/05/22(月) 21:22:37 ID:???
vip でやれ
761nobodyさん:2006/05/22(月) 21:24:22 ID:???
クソスレ終了
762nobodyさん:2006/05/22(月) 21:28:43 ID:acwyxWDg
vip
763nobodyさん:2006/05/22(月) 21:31:00 ID:xLp91Sew
クソスレ終了
764ヴぃぱー:2006/05/22(月) 21:33:18 ID:???
>>752を引き取りにきますた

ご迷惑おかけしました
765nobodyさん:2006/05/22(月) 21:36:32 ID:aQon5hVc
しまったローゼンかと思ったらコーディングだった!!!!!!!!!!!!!!!
766nobodyさん:2006/05/22(月) 21:38:15 ID:jSkZd7uq
     〜∞
          
      /|/|   〜∞
 臭い?>/ ^ω^ | プーン
     |  ー /
    て    つ
     |   /
     し´し´
  〜∞
          〜∞
767nobodyさん:2006/05/22(月) 21:46:13 ID:EyXuXU5p
                          r'゚'=、
                          / ̄`''''"'x、
                     ,-=''"`i, ,x'''''''v'" ̄`x,__,,,_  
                 __,,/    i!        i, ̄\ ` 、
             __x-='"    |   /ヽ      /・l, l,   \ ヽ
( \         /(     _  1  i・ ノ       く、ノ |  _ i  i,            / )
 \ \  _ _ |_i,  /  ) {,      ニ  ,    .| (   \ i, _ _ _   / /
  \ \(  | | |)/  /   }   人   ノヽ   |    \  \( |  |.  |  )/ /
    ) |_|_|_||  /      T`'''i,  `ー"  \__,/      .|   | |_ |_ | _|  (
    | \__\___\__)  )       },  `ー--ー'''" /       (  (__/___/__/   |
    |       /   |        `x,    _,,.x="       .|   \        |
    |     /    /          `ー'"           |     \      /
     \    (    /                         \     )    /

768nobodyさん:2006/05/22(月) 21:48:05 ID:9+sFjQV+
クソスレ終了
769申し訳ない。:2006/05/22(月) 21:53:09 ID:ca5AJboc
>>752がご迷惑おかけしました
770nobodyさん:2006/05/22(月) 21:54:06 ID:???
VIPPER兼このスレの住人として、お詫びを申しあげる。

勘違いでしないでもらいたいが、VIPPERはこんなDQNばかりではない。
少なくとも本当のVIPPERは名前欄に「VIPPER」などと入れない。

2ちゃんねらには真面目な議論を好みジョークがわかる奴もいれば、
やっていい事といけない事の区別も付かないような奴もいるのは、ご存知だと思う。
これと同じように、VIPPERの一部(主に妹とかおっぱいとか言ってる層)が暴走しているだけである。
他の板にまでVIPの空気を持ち込むのは、このような輩だけである事をご理解いただきたい。

自分に不利になると召集をかけるサマは、そこらでたむろっているDQNと同じで、ただ醜い。
長文失礼しました。
771nobodyさん:2006/05/22(月) 21:55:37 ID:??? BE:557172779-#
この程度かよw
レベル低すぎw
772VIPPER:2006/05/22(月) 21:59:30 ID:???
う〜ん、使えねぇなあVIPは・・・。
773nobodyさん:2006/05/22(月) 22:25:31 ID:Hm6mUF9z
VIPPER兼このスレの住人として、お詫びを申しあげる。

勘違いでしないでもらいたいが、VIPPERはこんなDQNばかりではない。
少なくとも本当のVIPPERは名前欄に「VIPPER」などと入れない。

2ちゃんねらには真面目な議論を好みジョークがわかる奴もいれば、
やっていい事といけない事の区別も付かないような奴もいるのは、ご存知だと思う。
これと同じように、VIPPERの一部(主に妹とかおっぱいとか言ってる層)が暴走しているだけである。
他の板にまでVIPの空気を持ち込むのは、このような輩だけである事をご理解いただきたい。

自分に不利になると召集をかけるサマは、そこらでたむろっているDQNと同じで、ただ醜い。
長文失礼しました。
774nobodyさん:2006/05/22(月) 23:50:03 ID:???
V〜中略〜い。
長文失礼しました。
775nobodyさん:2006/05/22(月) 23:54:37 ID:???
どこを縦読みですか
776nobodyさん:2006/05/23(火) 00:26:26 ID:???
勘違い←
少なく←
777nobodyさん:2006/05/23(火) 03:25:15 ID:???
空気を切って質問しますが....大丈夫でしょうか?


入力された文字列をソートするcgiを作りたいのですが

入力フォームから$in{'text'}これにソートしたい文字列を入れて
ソートしたいんですが
配列への代入ができません
@texts = $in{'text'};
@sortd_texts = sort { $a <=> $b } @texts;
print <<"EOM";
〜〜〜〜HTML〜〜〜〜
EOM
foreach $texts ( @sortd_texts ) {
print ( $texts );
}

これだと入力した文字列がそのまま表示されるだけです。。。
この処理はどういじったらできるようになりますでしょうか?
778nobodyさん:2006/05/23(火) 03:25:58 ID:CTr6dA2u
age忘れ…
779nobodyさん:2006/05/23(火) 03:32:45 ID:???
>>777
$in{'text'} に改行区切りの文字列が入るって事でいいのかな?

@texts = split /\n/, $in{'text'};
で改行で区切って配列に代入できるよ。

あと、文字列をソートするなら <=> 演算子じゃなくて cmp 演算子じゃないかな。
780777:2006/05/23(火) 04:15:33 ID:CTr6dA2u
>>779
できました、が…
それだと改行を入れないとソートされないですよね
普通に文字を入れて、ソートできたら便利なんですが
ただ1文字1文字を区別するような方法は…

あればぜひ教えてくださいm(__)m

無理そうであれば諦めます
781nobodyさん:2006/05/23(火) 04:19:37 ID:???
printするごとに\nをださなきゃ改行されないですがな
それか特殊変数に\nを入れておいて、配列をそのまんまprintする方法もあります
782nobodyさん:2006/05/23(火) 04:44:03 ID:???
> ただ1文字1文字を区別するような方法は…

>>777は「配列に1文字(1byte?)ずつ叩き込みたい」だったのか…
783777:2006/05/23(火) 04:57:06 ID:CTr6dA2u
ちょっと>>780のことの「それだと改行を入れないとソートされないですよね」が意味不明ですかね
↓がフォームだとして

a
b
a
b
a
b

@texts = split /\n/, $in{'text'};でやると
こういう風にしないとソートされないと言いたかったんです

それと丁度作りたい感じのがありました
tp://compact.s56.xrea.com/defrag.html
こういうのです
784nobodyさん:2006/05/23(火) 05:04:31 ID:???
>>780
と、後から新しい情報を出すのは「情報の小出し/後出し」と言われていて嫌われる行為です。
質問する時には、なるべく詳しい状況を書く事をオススメします。

@texts = split //, $in{'text'};
で1文字ずつ区切って配列に入れられます。詳しくは split 関数のマニュアルを参照。
785777:2006/05/23(火) 05:12:57 ID:???
>>784
最初はそうなると考えてなかったのです、すいませんでした。。
次回書き込むことがあった場合気をつけます

無事にできました
こんな初心者にレスしていただいたみなさまありがとうございますm(_ _)m
786nobodyさん:2006/05/23(火) 10:31:46 ID:???
全角でやってみるといいよ
787nobodyさん:2006/05/23(火) 15:57:06 ID:Mf/1DNRk
perlで、一定バイトの、中身に飛び飛びに文字列や数値を持つデータを作るにはどう書けば良いですか?

cで書けばこういう事です。
char data[1000]="";
memcpy(data,"aiueo",5);
memcpy(&data[100],"kakikukeko",10);
memcpy(&data[200],"sasisuseso",10);
memcpy(&data[300],999,4);

よろしくお願いします。
788nobodyさん:2006/05/23(火) 16:11:18 ID:???
789787:2006/05/23(火) 16:20:26 ID:Mf/1DNRk
>>788
レスありがとうございます。
一定バイトのメモリを確保するにはどう書けば良いのでしょうか?
それとも、
my $data="";
と宣言すれば、
substr($data,100,10)="kakikukeko";
などとした時に自動的に1〜99バイト目にはヌルが入って
100〜109にはkakikukekoが入るのでしょうか?
簡単なテストをしてみたところうまくいきませんでした。
790nobodyさん:2006/05/23(火) 16:56:25 ID:???
ちゃんとPOD読もうよ
全部書いてあるじゃないか
791nobodyさん:2006/05/23(火) 16:58:17 ID:???
>>787
my $data = pack('a5@100a10@200a10@300a4',"aiueo","kakikukeko","sasisuseso",999);
792nobodyさん:2006/05/23(火) 17:03:55 ID:???
期待する結果はこっちか 'a5@100a10@200a10@300N'
793nobodyさん:2006/05/23(火) 17:29:41 ID:Bg5mY8j2
$a =~ s/ケース/case/;

のように、SHIFT-JISで正規表現内に「ー」(文字コード81 5C?)等の
文字を使う場合、Internal Server Errorを回避するにはどのようにすれば良いでしょうか?
EUCで保存する以外に方法はないでしょうか?
794nobodyさん:2006/05/23(火) 17:32:53 ID:??? BE:176880645-#
$a =~ s/\Qケース\E/case/;
795793:2006/05/23(火) 17:51:14 ID:???
>>794
即レスありがとうございます!正常に動作しました。
なるほど、「\Qと\Eに挟まれてる部分は、メタキャラクタを無視する」
ということのようですね。
勉強になりました。ありがとうございました。
796nobodyさん:2006/05/23(火) 18:17:05 ID:???
誰かあぼーん機能の事について教えてくれないか?
上手く作れないのだが・・・・。
797nobodyさん:2006/05/23(火) 18:31:34 ID:??? BE:318384094-#
(゚Д゚)?
798nobodyさん:2006/05/23(火) 20:20:14 ID:???
Perlで、XML用に文字列をサニタイズする関数は用意されていますか。
PHPのhtmlspecialchars()に相当する関数です。
自作するのでもいいのですが、なるべく一般的な作法に従いたいと思い、聞いてみました。
テンプレートエンジンを使えというのはなしでお願いします。
799nobodyさん:2006/05/23(火) 20:40:22 ID:??? BE:318384566-#
関数じゃないけど
CGI::Util::simple_escape
CGI::escapeHTML
あるにはあるね。
全然一般的じゃないけど
800nobodyさん:2006/05/23(火) 23:18:35 ID:???
>>796

Name_Not_Found<>mail<>2005/09/25 03:44:39<>text



あぼーん<>あぼーん<>2005/09/25 03:44:39<>あぼーん

datをこうすりゃいいだけじゃないのか?
日付の部分はどうなってたか覚えてないが
801nobodyさん:2006/05/23(火) 23:24:48 ID:???
53 名前:あぼーん[あぼーん] 投稿日:あぼーん
あぼーん
802nobodyさん:2006/05/24(水) 00:11:12 ID:???
>>798
HTML::Entities
803nobodyさん:2006/05/24(水) 05:17:49 ID:NTQf+ORl
変数を()で囲う意味がわかりません。

( $hashkey ) = split( ":", $data );
$hashkey = substr( $hashkey, 1 );

↑という文があるのですが、左辺の変数を()で括ったり、括らなかったり。
意味が違ってくるのでしょうか?
804nobodyさん:2006/05/24(水) 06:44:10 ID:???
$num = @array;
と同じ意味で、split の返りに括弧で括らないと要素の総数が入るんじゃない?
試してないから憶測だけど。
805nobodyさん:2006/05/24(水) 06:48:27 ID:???
Encode モジュール (Ver.1.38) なのですが、196 行目の正規表現部分でエラーがあり少々困っています。

196:define_alias( qr/\bkoi8[\s-_]*([ru])$/i => '"koi8-$1"' );

\s-_ の範囲指定が不正だよんとエラーが出るのですが、これを同じ動作をする構文で書き換えた場合どうなるでしょうか?
それともここは
[\s\-_] でいいんでしょか・・・
806ヽ(´ー`)ノ ◆.ogCuANUcE :2006/05/24(水) 07:00:47 ID:???
1.38 って…(;´Д`)
Encode 2.14, Encode::Alias 2.04 だと、

  /usr/lib/perl/5.8.8/Encode/Alias.pm:190: define_alias( qr/\bkoi8[\s\-_]*([ru])$/i => '"koi8-$1"' );

になってる。
807nobodyさん:2006/05/24(水) 08:03:21 ID:???
標準で入ってるのはアップデートしたことなかったorz
早朝レスどもです

使うモジュールはアップデートしるか・・・
808nobodyさん:2006/05/24(水) 09:45:36 ID:???
>804さん

ありがとう。そうなのかもしれないです。
試してみます。
809nobodyさん:2006/05/24(水) 10:04:59 ID:???
>>803
リストコンテキスト
スカラーコンテキスト
810nobodyさん:2006/05/24(水) 10:49:06 ID:???
>804 >809
わかりましたよ。
split関数の値を代入する先には、基本的には配列全体を表す「@○○」を
するけど、もし最初の区切りまでの部分だけ必要であれば、()で括った
変数を指定してやればいいみたい。()で括られた変数は、配列として扱える。
もし()で括らなかったら、配列をスカラ変数として扱ってしまう為
その配列の数が返ってくるみたい。
実際に試してもそういう結果になりました。

ありがとう。
811nobodyさん:2006/05/24(水) 15:16:42 ID:???
>>810
もう少し正確に覚えといた方がいいよ。
http://www.kt.rim.or.jp/~kbk/perl5.005/perldata.html#List_value_constructors

<q cite="http://search.cpan.org/~nwclark/perl-5.8.8/pod/perlfunc.pod#split">
In scalar context, returns the number of fields found and
splits into the @_ array. Use of split in scalar context is deprecated,
however, because it clobbers your subroutine arguments.
</q>
812nobodyさん:2006/05/24(水) 16:21:59 ID:???
>811

まずは、このページから熟読します。
ありがとうございます。
813nobodyさん:2006/05/24(水) 18:06:59 ID:RkOZr6U0
配列の中身をそのままスカラーに入れるスマートはないでしょうか。
例えば、
@array = (a,b,c,d,e,f);
という配列があったとして、
$Aに「a,b,c,d,e,f」(コンマ区切り付き)という値を入れる場合、
$A = ($array[0],$array[1],$array[2],$array[3],$array[4],$array[5]);
とするのが一番手っ取り早い方法なんでしょうか?
814nobodyさん:2006/05/24(水) 18:10:59 ID:???
>813
join をどぞ
815nobodyさん:2006/05/24(水) 18:21:06 ID:???
>>814
できました。ありがとうございました。
超初歩的な愚問で恥ずかしい限りです。
一応、他にも同じようなおバカさんが居た場合のために(さすがに居ないか…)
812の例ならば、
$A = join(',', @array);
でできました。
816nobodyさん:2006/05/24(水) 18:22:15 ID:???
>>815

×812の例
○813の例

スレ汚しすみません。
817nobodyさん:2006/05/24(水) 18:29:39 ID:???
いえいえ汚しなんかじゃないですよ
818nobodyさん:2006/05/24(水) 18:33:08 ID:???
汚くはないけどちょっと臭いますね
819nobodyさん:2006/05/24(水) 18:50:19 ID:???
813だけど、正直joinは使ったこと無いwww
820nobodyさん:2006/05/24(水) 18:54:33 ID:??? BE:159192263-#
$" = ",";
$A = "@array";

遅いけど
821nobodyさん:2006/05/24(水) 19:53:31 ID:???
>>820がなぜ遅くなるのかわかる人教えておくれ。
822nobodyさん:2006/05/24(水) 20:19:12 ID:Cp3G4SBW
使っていたBBSスクリプトや書籍のサブルーチン(kentかな)を使って
スクリプト中にcookieを入れるのですが、なかなか上手く行きません

print "Set-Cookie:  というのがそのまま表示されたり、
HTMLのprintと絡んで誤動作します

注意点はありますか?
823nobodyさん:2006/05/24(水) 20:39:01 ID:???
Contentヘッダより先にCookieヘッダを出力
824nobodyさん:2006/05/24(水) 21:38:08 ID:Cp3G4SBW
失礼しました、新たなる悩みです

認証のパスワードを記憶させたいのです
他の(自分で組み込んだ)cgiで作ったクッキーは読み込めていますが
スクリプトに組み込んだものだと動作しません

書き込んではいるのですが、表示させてみると変な記号になっています
厳しいなぁ
825nobodyさん:2006/05/24(水) 21:47:24 ID:???
>>824
>>1の2.と3.に当たる部分をどうぞ。

> 表示させてみると変な記号になっています
URIエスケープしたものがきちんと書き込めていても、人によっては「変な記号」ですし。
826nobodyさん:2006/05/24(水) 22:54:13 ID:Cp3G4SBW
FORMの処理が違うようです
頭冷やして明日出直します、失礼しました
827nobodyさん:2006/05/25(木) 00:39:01 ID:???
スクリプトの改造はスレ違いじゃね?
828nobodyさん:2006/05/25(木) 02:14:26 ID:???
改造の仕方じゃなくて、こういう風に改造しててperlの書き方がわからないだから、
別に問題ないんでね?
829nobodyさん:2006/05/25(木) 11:49:58 ID:KsPQY1Yo
配列についての質問です

@A = (0,0,0,0,0,0,0,0,0,0,
,0,0,0,0,0,0,0,0,0,0
,0,0,0,0,0,0,0,0,0,0);

@B = ("0","0","0","0","0","0","0","0","0","0",
,"0","0","0","0","0","0","0","0","0","0"
,"0","0","0","0","0","0","0","0","0","0"
,"0","0","0","0","0","0","0","0","0","0"
,"0","0","0","0","0","0","0","0","0","0");

という2つの配列を設定して、
@A,@Bを表示すると両方とも
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
という風になって最後に半角スペースがついてしまいます。

そのせいかわかりませんが、
おかげで $A[1]+=1; みたいな代入しても反応ないし、
$As = join(',', @A); で連結しても反応しません。

何が悪いのでしょうか?
830nobodyさん:2006/05/25(木) 11:55:32 ID:???
local $" = ',';
print "@A";

or...

local $, = ',';
print @A;
831nobodyさん:2006/05/25(木) 12:08:13 ID:KsPQY1Yo
>>829
ありがとうございます!
そのように試してみたら
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0,
のようになりました・・・

>>828
今 $As = join("<>", @A); で連結を試してみたら
0 0 0 0 0 0 0 0 0 0 0 0<>
な風に最後の所だけつきます・・・
832nobodyさん:2006/05/25(木) 12:22:44 ID:KsPQY1Yo
>>830>>829
ちなみに
@A = (0,0,0,0,0,0,0,0,0,0,
,0,0,0,0,0,0,0,0,0,0
,0,0,0,0,0,0,0,0,0,0);

設定直後に表示すると最後に半角スペースはついてないようです

push(@A.log,"$aa,$ab,$ac,$ad,$ae,@A,\n");
でA.logにセーブして

foreach $Al(@A.log) { ($aa,$ab,$ac,$ad,$ae,@A,$dm)= split(/,/, $Al); }

で取り出した後@Aを表示すると0 0 0 0 0 0 0 0 というように
最後に半角スペースがついてしまうようです。
833nobodyさん:2006/05/25(木) 12:33:50 ID:??? BE:35376522-#
訳分からんぞ…情報を小出しにするなっての…
834nobodyさん:2006/05/25(木) 13:08:50 ID:???
エスパー的回答

@Aに正しく配列が入ってない
835nobodyさん:2006/05/25(木) 13:24:29 ID:???
@A = (0,0,0);
これでやってみろ
836nobodyさん:2006/05/25(木) 13:43:47 ID:KsPQY1Yo
@A = (0,0,0);

でprint "@A";表示すると0 0 0de

一回ログに書き込んでから呼び出して
push(@A.log,"$aa,$ab,$ac,@A,\n");
foreach $Al(@A.log) { ($aa,$ab,$ac,@A,$dm)= split(/,/, $Al); }

print "@A";表示すると0 0 0 niなります

もしかしてログに変数と配列の両方を入れてしまうからおかしくなるのでしょうか?
ログの形は
$aa,$ab,$ac,0 0 0,
$aa,$ab,$ac,0 0 0,
$aa,$ab,$ac,0 0 0,
1行ずつ下に書き込んでいく感じです。
837nobodyさん:2006/05/25(木) 13:50:37 ID:???
ログはどうでもいい。
配列についての理解ができてない。
838nobodyさん:2006/05/25(木) 13:56:33 ID:??? BE:123817027-#
変数名にドットって使えたっけ
>print "@A";表示すると0 0 0 niなります
お前がそうなるコード
>($aa,$ab,$ac,@A,$dm)= split(/,/, $Al);
を書いてるんだから当たり前じゃん
839nobodyさん:2006/05/25(木) 13:59:47 ID:???
配列について一からやれ
840nobodyさん:2006/05/25(木) 14:45:39 ID:KsPQY1Yo
>>837>>838>>839
ありがとうございました!
出直してきます
841nobodyさん:2006/05/25(木) 17:04:48 ID:???
ワロスった
842nobodyさん:2006/05/25(木) 17:20:48 ID:???
正規表現中に下記のように漢字で人名を入れてみると
なぜか誤動作してしまいます
$name = '相川|山本|岡田|下柳';
30名ほどでどの漢字で起こるのかわかりません
全てにエスケープ入れてみてもだめです

どこかに誤動作を起こす文字の記載がありますか?
843nobodyさん:2006/05/25(木) 17:36:29 ID:??? BE:53064623-#
(Shift_JIS)
山本 = 8e 52 96 7b
7b = {

とか
844nobodyさん:2006/05/25(木) 17:59:57 ID:???
>>842
「\」以外にも、正規表現内では、「(@$/[]{}」を2バイト目に含む文字も予期せぬ動作を起こす可能性がある。
エスケープするには、これらの前に「\」を入れらければならないので無理。
(2バイト目が「\」の場合は、後ろに入れても結果として同じになる)

一部のものは、正規表現を\Q〜\Eで囲って回避できるが、@などはこれでも無理。
山本 → \x8e\x52\x96\x7b
のように文字コード形式で表すようにするか、EUC-JPに変換してから検査する。
845nobodyさん:2006/05/25(木) 18:07:27 ID:???
なるほど、変換は私にはムリなので
文字コードを調べてみます
有り難うございます
846nobodyさん:2006/05/25(木) 23:38:35 ID:???
>>845
文字コードをあれこれする方がメンドいと思うぞ
847nobodyさん:2006/05/25(木) 23:49:41 ID:???
>>842
じゃあ僕は Encode.pm でも勧めておくか。
面倒に感じるかも知らんけど、この手のソリューションとしては本線ということで。
848nobodyさん:2006/05/26(金) 03:35:33 ID:???
>>845
> なるほど、変換は私にはムリなので
たとえあなたには無理でも、
それを代わりにやってくれるモジュールがあります。
849nobodyさん:2006/05/26(金) 03:49:29 ID:???
すいません質問です
アップローダを設置しました
それでアップしたファイルが1週間後には自動で削除するにはどうすればいいでしょうか?
つまりファイルの有効期限の設定です
850nobodyさん:2006/05/26(金) 03:58:36 ID:VJllj5+q
http://www.kumagaya.or.jp/~chichibu/cgi-prog/time2.txt

print '<form method="post" action="' . $reload . '">' . "\n";

="' . $reload . '"> の.はなぜ必要なんでしょうか??
851nobodyさん:2006/05/26(金) 03:59:20 ID:???
>>849
Perl には関係ないれす

>>850
外したらどうなるか考えるのれす
852nobodyさん:2006/05/26(金) 04:01:21 ID:???
>>849
stat[9]
853850:2006/05/26(金) 04:05:03 ID:VJllj5+q
はずしても変わらないかと思っているんですが
実行したら動かないし
854nobodyさん:2006/05/26(金) 04:06:44 ID:???
>>849
有効期限機能のあるアプロダを使う

>>850
別に必要ではないよ。 , (カンマ)でもOKだし他にも方法あり。
' と " の対応に注目すると吉。
855nobodyさん:2006/05/26(金) 04:28:44 ID:???
>>850
print qq|<form method="post" action="$reload">\n|;
856nobodyさん:2006/05/26(金) 04:32:32 ID:???
「.」(ドット)は文字列を結合する演算子。

print '<form method="post" action="' . $reload . '">' . "\n";

「<form method="post" action="」という文字列
「$reload」というスカラ変数
「">」という文字列
「\n」という文字列

を結合した結果を print している。
857849:2006/05/26(金) 05:28:59 ID:???
>>852
それでできますか??
858850:2006/05/26(金) 05:40:00 ID:VJllj5+q
みなさん
ありがとうございます
結合っての確か見た記憶があります
859nobodyさん:2006/05/26(金) 09:18:33 ID:???
結合って言ったらtieのことじゃね?連結だろ?
860nobodyさん:2006/05/26(金) 14:26:31 ID:???
いや、合体だろう。
861nobodyさん:2006/05/26(金) 15:03:21 ID:???
究極合体か
862nobodyさん:2006/05/26(金) 17:59:29 ID:???
>>857
stat[9] と現在の時刻を比較して1週間たっていれば unlink
863nobodyさん:2006/05/26(金) 20:07:56 ID:???
>>862
-M使った方が楽じゃない?
864nobodyさん:2006/05/26(金) 23:55:16 ID:???
六神合体ゴットマーズ、を思い出した・・・
865nobodyさん:2006/05/27(土) 00:17:15 ID:Ea6+r9JB
Html::Parserを使って、カトゆー家断絶というサイトの
http://www6.ocn.ne.jp/~katoyuu/
ニュースの部分を切り出して(<!--テンプレ-->でかこまれているところ)
かつ、リンクとコメントを抽出したいのですが、どのようにすればできるでしょうか?
866nobodyさん:2006/05/27(土) 00:26:19 ID:???
ソースを印刷してはさみで切る
867nobodyさん:2006/05/27(土) 02:16:48 ID:???
>>865
大雑把に。
foreach(split(/\n/, $data)){
push(@news, $_."\n") if (/<!--テンプレ-->/.../<!--テンプレ-->/);
}

それと、一応個人サイトへのリンクは、h抜いて書いて。
868nobodyさん:2006/05/27(土) 03:19:39 ID:???
> それと、一応個人サイトへのリンクは、h抜いて書いて。

なんで?
869nobodyさん:2006/05/27(土) 03:46:52 ID:???
マナー
自分のサイトのアクセス解析で2chから大量に来てたら、
ちょっとヒくんじゃね?
870nobodyさん:2006/05/27(土) 03:50:24 ID:???
昨日LWPの存在を知り、Perlをインストールしてプログラム書いて「便利便利!」
と喜んでました。
で、プロバイダ(ぷらら)に上げたら動きませんでした。
ググって見ると「nifty plala biglobeなどは他サーバへのアクセスができないようになってるので無理」
なる情報を見つけました。
これはあきらめるしかないのでしょうか?
871nobodyさん:2006/05/27(土) 03:53:16 ID:???
>>869
そうだね
872nobodyさん:2006/05/27(土) 04:07:27 ID:???
>>870
どんなモジュールが入っているのかまず調べるべきでしょう。
873nobodyさん:2006/05/27(土) 04:29:51 ID:???
>>872
そうですね。モジュールの調べ方は知らないので明日調べてみます。

plalaのサイトにはPerlのバージョンは5.8と書いてありました。(Perlに関してはそれだけ)
私が自分のWinにインストールしたのはActivePerlの5.8xxxです。
Jcode.pmがデフォで入ってないのにびっくりしました。jcode.plを使ってます。
LWPは、動かなかったのでプロバイダにモジュールがないのかな?
と思いsite/libのLWPディレクトリをUPしてみましたが駄目でした。
LWPとは別にHTTP::Liteなるものもあるようなので明日試してみます
もし、plalaで(LWP||HTTP::Lite)を(使えてる||使えてない)な人がいらっしゃいましたら
情報くださると助かりますです。
#「push @a, $b」と「push(@a, $b)」はどっちにすべきですか?
874nobodyさん:2006/05/27(土) 04:49:10 ID:???
>>873
本題とはそれるけど、
5.8なら Jcode.pm っていうか Encode.pm が入ってるから、そっち使えばいいと思うよ。
jcode.pl じゃユニコのデコエンコできないからねえ。
push () は自分で見やすいほうを。
あとniftyは、今はどうか知らないけど、標準モジュールとか何も入ってなかったとオモタ。
875nobodyさん:2006/05/27(土) 04:49:52 ID:???
perlにはEncodeがあるからな。
plalaはデフォでJcode入ってるよ。
サーバー間通信がそもそも出来ないように設定してあるのでどうやってもLWPは使えない

それと、普段は前者だが引数が二つ以上なら
push @a, ( $b, $c );
とかやるかも。
876nobodyさん:2006/05/27(土) 04:58:19 ID:???
> マナー
> 自分のサイトのアクセス解析で2chから大量に来てたら、
> ちょっとヒくんじゃね?

そもそもマナーとは何かだよね。
でさ、何で「ヒく」んだろう。
877nobodyさん:2006/05/27(土) 04:59:20 ID:???
>>873
恐らく、デーモン的な使われ方を阻止する為でしょう。
つまり、セキュリティ上の仕様ではないでしょうか。

pushについては私は前者の方が簡潔で好きですけど、
カッコを付けないと、優先順位の問題が置きやすいので、一長一短です。
Perlのコードは十人十色(TMTOWTDI)なのでお好きにどうぞ。

優先順位の問題は例えば print ($a + $b), " is answer"; と書くと
" is answer" が無視されてしまいます。これを防ぐには
print (($a + $b), " is answer"); のようにカッコをつける必要がります。
または print +($a + $b), " is answer"; のように前に「+」をつけてもいいですけど。
878nobodyさん:2006/05/27(土) 05:06:49 ID:???
>>873
#!/usr/bin/perl

use File::Find;

print "Content-type: text/html;\n\n";
find(\&wanted, @INC);

sub wanted {
    if(/\.pm$/i){print "$File::Find::name<br>\n";}
}
879nobodyさん:2006/05/27(土) 05:09:04 ID:???
>>876
こちらへどうぞ。

初心者の質問
http://etc3.2ch.net/qa/
880873:2006/05/27(土) 17:45:38 ID:???
>>874 >>875 >>877 >>878
ありがとうございました。
モジュールの取得も参考になりました。
2chでこんなに丁寧に回答してもらったのは初めてです。
無駄にHTTP::Liteとかも試してみましたが当然だめでした
あきらめることにします。
881nobodyさん:2006/05/27(土) 20:52:04 ID:/9Ndz8t/
if ($in{'name'} eq "") { $in{'name'} = "$noname"; }
で$noname=名無しさんって感じになってるんだけどコレだとクッキー保存されちゃって
次回からはこの名前を一回消して自分のHNに変える必要がある。
だからこの名無しの時だけ次回からは名前欄が空欄とか名無しじゃないときのHNにしておくみたいな事出来る?
説明下手だがこんな事をしたい。
882nobodyさん:2006/05/27(土) 21:06:43 ID:???
よくわからんが、if文いっこ挟むだけでできるでしょ。
クッキーの情報を使いたくない時には、そうなるように書けばいいだけ。
883nobodyさん:2006/05/27(土) 21:15:40 ID:/9Ndz8t/
それがよく分からんのだが・・・。
884nobodyさん:2006/05/27(土) 21:27:21 ID:???
my $name = $in{'name'};
みたいのを用意すれば、if ($name eq "") { $name = $noname; } しても
$in{'name'} に $noname が代入されませんよ、とか。

別に必ず $in{'name'} をそのままクッキーに保存しなきゃいけないわけじゃないし
クッキーから読み出した前回投稿時の名前を仕舞っておく変数ぐらい
あってもいいよね、とか。

方法はいろいろ。
885nobodyさん:2006/05/27(土) 21:35:57 ID:???
>>881 が「分からん」のは、条件分岐云々じゃなくて「クッキーの焼き方」だべさ。たぶんね。
886nobodyさん:2006/05/28(日) 06:25:30 ID:LqLk4cEL
perlの質問です。

$jump_url=~s/(\W)/'%' . unpack('H2',$1)/eg;

という構文の解読の仕方が分からないのですが、この説明をお願いできませんか?
どういうことをしている構文なのでしょうか?
887nobodyさん:2006/05/28(日) 06:35:12 ID:???
>>886
URLエンコード または URIエンコード でググるべし
888nobodyさん:2006/05/28(日) 06:56:06 ID:LqLk4cEL
>887
朝早くから答えて頂きましてどうもありがとうございました!
教えて頂いたキーワードで只今ググって来ました。

エンコードをしているのは分かるのですが
この構文の流れを説明していただけないかと思いまして。
お願いします!教えてください!

まず分からないのは、
=~s/(\W)/'%' と unpack('H2',$1)/eg の間にある "." なのですが
正規表現の結果を足しているという事なのでしょうか?
何の為に???????(x_x)?
と思って全く発想が浮かびません。。。
ヒントだけでも頂けないでしょうか?

ちなみに、perlの辞書を片手に頑張ってはいるのですが
自分の未熟さに頭が上がりません。。。
よろしくお願いします!!
889nobodyさん:2006/05/28(日) 08:55:15 ID:???
$jump_url=~s///eg;
s///が正規表現による置換。オプション'e'と'g'。
(\W)
マッチさせる正規表現。
'%' . unpack('H2',$1)
本来置き換える文字列だけど、'e'がついてるから実行する文。

あとは辞書で。
890nobodyさん:2006/05/28(日) 10:59:02 ID:???
file.txt
1,あいうえお,142
2,かきくけこ,127
3,さしすせそ,139

というファイルがある時、この3列目が多い順に行をsortし表示するには
どうすればよいですか?
891nobodyさん:2006/05/28(日) 11:01:39 ID:???
質問を少し間違えました。
この3列目が多い順に行をsortし2列目を表示するには
どうすればよいですか?
でした。よろしくお願いします。
892nobodyさん:2006/05/28(日) 11:32:27 ID:LqLk4cEL
>889
ありがとうございました。
期待していた回答とは違いましたが、この辞書とネットを使いながらいろいろ試してみます。
893nobodyさん:2006/05/28(日) 11:42:02 ID:???
>>892
'%'. を入れたのと入れないのを両方実行して、比較してみれば意味が分かるよ。
894nobodyさん:2006/05/28(日) 11:48:40 ID:???
>>890,891
open(F, 'file.txt');
while (<F>) {
 chomp();
 push(@data, [split(/,/)]);
}
close(F);
@data = sort {$b->[2] <=> $a->[2]} @data;
foreach (@data) {
 print $_->[1], "\n";
}
895nobodyさん:2006/05/28(日) 14:52:39 ID:???
test.plというファイルを用意して同じディレクトリにfile.txtを置き、
「perl test.pl」で以下のコードを実行したのですがファイルを開けません。
何か書き方が悪いんでしょうか。

test.plの内容:
my @buf, $line;

if(! open(IN, "<file.txt")){
@buf = <IN>;
foreach $line (@buf){
print $line;
}
close(IN);
}

* if( -e "file.txt"){}でチェックしたところファイルは存在していました。
* 環境はWinXPHomeSP2 + ActivePerl v5.8.6 です。
896nobodyさん:2006/05/28(日) 14:55:53 ID:???
>>895
openの前の!が余計
897895:2006/05/28(日) 15:00:28 ID:???
直りました。ありがとうございます。
898nobodyさん:2006/05/28(日) 16:20:50 ID:LqLk4cEL
>894
すみません。教えて頂いたその方法でやってみたのですが
何度やってもエラーになってしまいます。何故でしょうか?
899nobodyさん:2006/05/28(日) 16:32:42 ID:???
>>898
なんてエラーでてるのか書きなよ。
ブラウザで print "Content-type: text/html\n\n"; 忘れてるとかだったらはたかれるよ。
900nobodyさん:2006/05/28(日) 16:35:07 ID:???
>>898
見やすいように全角スペース使ってインデントしてあるけど、削除した?
901nobodyさん:2006/05/28(日) 21:59:29 ID:???
>>895
!はnotの意味だぞ、と指摘しないと成長しないような気がする
902nobodyさん:2006/05/28(日) 22:29:52 ID:???
本人が何を思って ! をつけたかだな。
903nobodyさん:2006/05/28(日) 22:39:51 ID:??? BE:159191892-#
正常終了コードが 0 と勘違いしたのでは
904nobodyさん:2006/05/28(日) 23:07:43 ID:???
たまたま見たサンプルの記述がそれだったから
に、10ガバス
905nobodyさん:2006/05/29(月) 08:12:56 ID:???
大本命に随分少額だな。
はらたいらに100点並
906nobodyさん:2006/05/29(月) 09:30:26 ID:???
クイズダービーだっけ?
907bc:2006/05/29(月) 14:43:29 ID:BOZTb2Dk
http://www.kumagaya.or.jp/~chichibu/cgi-prog/form_rb.txt
でラジオボタンって作れるんですか??
HTMLのフォームと違うんですけど
これだとただの表示されるだけじゃないんでしょうか??
908nobodyさん:2006/05/29(月) 15:03:55 ID:???
>>907
> でラジオボタンって作れるんですか??
作れません。

> これだとただの表示されるだけじゃないんでしょうか??
その通りです。で、何か問題でも?
909nobodyさん:2006/05/29(月) 15:58:10 ID:???
時間のデータで、○○時○○分と書かれたものがあります
ここから○○を抜き出すことはできます

これを数字として扱って比較したいのですが、どうしたらいいですか?
時間や分は「09時05分」などと必ず二桁で保存されています
910nobodyさん:2006/05/29(月) 16:00:00 ID:???
すbstr
911nobodyさん:2006/05/29(月) 16:04:23 ID:???
>>909
<=> を使え。
「必ず二桁」なら文字列比較でも結果は変わらないはずだけど。

SEE ALSO
  perldoc -f sort
912909:2006/05/29(月) 16:08:04 ID:???
わかりました
有り難うございます
913907:2006/05/29(月) 17:23:20 ID:BOZTb2Dk
http://www.kumagaya.or.jp/~chichibu/cgisyoho.html
このサイトのラジオボタンのうけ渡し方で
HTMLのソースと書いてあるんですが
それはHTMLのソースが間違っているということですか??
914nobodyさん:2006/05/29(月) 17:47:57 ID:???
質問の意味が分からないのは俺だけ?
915nobodyさん:2006/05/29(月) 17:48:21 ID:???
>>913
> それはHTMLのソースが間違っているということですか??
いいえ。

そのページの言う HTML ソースというのは
http://www.kumagaya.or.jp/~chichibu/form_rb.html
の「ページのソース」のことだと思います。
だとしたら特に間違ってはいません。

http://www.kumagaya.or.jp/~chichibu/cgi-prog/form_rb.txt
は上記ページのフォームから値を受け取り、結果表示を行うスクリプトのソースです。
ですからそこにラジオボタンを表示するコードが含まれていなくても別段問題ありません。

正直、あなたが何を問題とされているのか良く分かりません。失礼ですが基礎的な理解が不足しているように見受けられます。
このまま質問を続けられると、あなた宛にあまりフレンドリーでないレスが殺到する可能性があり、それは我々としては大変迷惑なので、WWW、HTML 等の基礎を学んでから出直されることをお勧めします。
916nobodyさん:2006/05/29(月) 17:49:47 ID:???
あれかな、「受け渡し方」って書いてあるけど、受け方しか書いてないんじゃボケェ! っていうこと?
917nobodyさん:2006/05/29(月) 18:08:40 ID:???
>>915の親切さに泣いた。おとなってえらいな。
918nobodyさん:2006/05/29(月) 20:12:07 ID:???
最近の若者はすぐ切れるからな。
919nobodyさん:2006/05/29(月) 20:31:40 ID:???
>907
君の質問の仕方が下手なのと、>>915さんって親切だなって思った。
そして、その参考にしてるサイトは駄目駄目なので他所を探すことをおすすめします。


サンプル動かして、表示されたページが文字化け万歳とか哀しかったです orz
920907:2006/05/30(火) 00:06:24 ID:B/4ya/Hv
おおぉありがとうございます
すげー勘違いしてました
>>919
でもサンプルが詳しいサイトはあんまりないんですよ
探したんですが
921nobodyさん:2006/05/30(火) 00:18:38 ID:D128RUeT
質問いいですか?
>890さんじゃないけど
file.txt
1,あいうえお,0-1-8
2,かきくけこ,1-3-2
3,さしすせそ,1-9-4

この3列目の ○-△-□ の △ の数が多い順に行をsortして、その行の2列目を表示するための方法を教えてください
922nobodyさん:2006/05/30(火) 00:29:16 ID:???
>>921
open(F, 'file.txt');
while (<F>) {
chomp();
($num, $name, $value) = split(/,/);
$value = (split(/-/, $value))[1];
push(@data, {name => $name, value => $value});
}
close(F);
@data = sort {$b->{value} <=> $a->{value}} @data;
foreach (@data) {
print $_->{name}, "\n";
}
923nobodyさん:2006/05/30(火) 01:11:36 ID:D128RUeT
早い!!?
>922さん
ありがとうございます
早速試してみます
924nobodyさん:2006/05/30(火) 01:20:49 ID:D128RUeT
>922さん
質問してもいいですか
6行目の push(@data, {name => $name, value => $value}); の部分なのですが
右から2番目の value は $value じゃなくても良いのですよね?
他にも{}の中にあるもので $ が付いていない箇所があるのですがこれで正しいのですよね!
わたしには初めてで読めなかったので、参考に6行目の説明をお願いできませんかm(*u_u)m
925nobodyさん:2006/05/30(火) 01:32:02 ID:D128RUeT
>922さん
今アップしてみたのですが正しく表示できました!
出来たものの、>922さんが書かれた文の意味は分かりません。。。
どうか教えてもらえませんか?
926nobodyさん:2006/05/30(火) 01:33:17 ID:???
>>924,925
ええと、ハッシュは知ってるかな。
%hoge = ("name" => $name, "value" => $value);
みたいなやつね。
このキーの部分のダブルクオーテーションは、省略できることになってる。
%hoge = (name => $name, value => $value);
みたいにね。
で、右辺を()でなくて{}で囲うと、ハッシュのリファレンスになる。
リファレンスが分からなかったら、ネットか書籍で調べて。
それが6行目の{name => $name, value => $value}

ハッシュはスカラーなので、
$hoge = {"name" => $name, "value" => $value};
と代入できる。
この$nameを取り出すのが、$hoge->{"name"}なんだけど、
このダブルクオーテーションも省略できるので、9行目の
$a->{value}みたいな書き方になる。

詳しくは、「ハッシュ リファレンス」でググってね。
927nobodyさん:2006/05/30(火) 01:37:27 ID:???
このスレの優しさに泣いた
928nobodyさん:2006/05/30(火) 01:41:26 ID:D128RUeT
>926さん
わぁ♪ありがとうございます!早速ググってきますっ
929nobodyさん:2006/05/30(火) 01:42:38 ID:???
このスレってこんな親切だったっけw

>>926
最近どうしたんですか?(ぇー
930nobodyさん:2006/05/30(火) 04:36:25 ID:???
テンプレサイト作って、過去に出てきた例集なんてものあったら便利かもね
正直 CSV ソートの質問は秋田(;´Д`)
931nobodyさん:2006/05/30(火) 05:26:45 ID:D128RUeT
Missing right curly or square bracket at ./sub.cgi line 67, at end of line
syntax error at ./sub.cgi line 67, at EOF
./sub.cgi had compilation errors.

というエラー文が出ているのは、どんな意味なのでしょうか?

932nobodyさん:2006/05/30(火) 06:07:15 ID:???
>>931
「EOFまで行っても } が足りないですよ。はい、コンパイルエラー」
閉じ忘れたカッコを頑張って探してください。

エラーメッセージの意味がわかんないと毎回同じように困るわけで、
Excite翻訳を利用したりして、慣れるようにしてください。

>>930
随分前(テンプレが桂三枝で始まってた頃)に、FAQ・いい回答を
載せるCGIを提供してくれた人がいたような…どうなったか覚えてないんだけどね。
933nobodyさん:2006/05/30(火) 06:53:05 ID:D128RUeT
>>932さん
ありがとうございました!地道に探してたら括弧をエスケープしているのに気が付きました。
それでまたエラーが出てきたので、Exite翻訳を利用して解決しようとしたところ
[baby.html:?:warn] Malformed UTF-8 character (2 bytes, need 1) in array dereference.
というエラーなのですが
[baby.html:、:、警告、]、アレイ反参照の奇形のUTF-8キャラクタ(2バイト、必要性1)。
という結果になって意味が分かりません(P口`q。)".
これはどういう意味なのでしょうか?
934nobodyさん:2006/05/30(火) 07:01:17 ID:D128RUeT
ちなみに、/baby.cgi?page=1&id=0000 というような構成で
ログにあるデータを数ページ分吐き出すようにしているのですが
一部のページのみにこのエラー文出てしまいます。
サーバのスペックが低いからでしょうか。。。?
935nobodyさん:2006/05/30(火) 08:49:24 ID:???
なんでサーバのスペックやねんw
恐らくログにWindowsの外字とか、UTF-8で扱えない文字が入っているはず。
根本的解決には本人にそれなりの知識とそれなりの技術が必要。
文字コードがらみの処理はややこしいので、改造レベルの人はあきらめるのが吉。

# というかデフォでwarning入ってんのか?
936nobodyさん:2006/05/30(火) 09:39:52 ID:???
配列のデリファレンスの中に不正なUTF8文字列が含まれています、だろ。

その行晒せや。
937nobodyさん:2006/05/30(火) 11:01:23 ID:???
>>936
ログの何行目というエラーの出方ではないので「その行晒せ」は無理だろう。
(質問者に、そこを調べて提出せよというのは難しそう)
938nobodyさん:2006/05/30(火) 12:28:11 ID:RehvEaNH
すみません。1行目のところで「Permission denied at cgiファイル名 1行目」
とエラーになりファイルオープンできません。権限で怒られているのはなんとなく分かるのですが
対処法を教えてください。よろしくお願いします。
※aaaaa.txtというファイルは存在しません。
※cgiファイルのパーミッションは777です。

1 open(OUT, '>aaaaa.txt') or die "$!";
2 print OUT "abcde";
3 close(OUT);
939nobodyさん:2006/05/30(火) 12:34:02 ID:???
ファイルが無いので新しく作ろうとしているが権限が無くて作れない
940938:2006/05/30(火) 12:38:16 ID:???
ディレクトリのアクセス権限か.htaccessの影響のようでした。
影響の無いディレクトリではオープンできました。
お騒がせしました。
941nobodyさん:2006/05/30(火) 21:18:16 ID:???
テストプログラムを動かすときって、だいたい 「Hello World !」 ってやってるけど、
それじゃああんま面白くないし、2〜3行に渡ってやってみたいんだけど、そういうのってなんかある?
なんか知ってたり面白いの思いついたら教えてください。(´▽`)ノ
942nobodyさん:2006/05/30(火) 21:27:57 ID:???
いや、テストなんだし何でもいいと思っている俺ガイル
943nobodyさん:2006/05/30(火) 21:48:36 ID:???
1から10を足すとか。
944nobodyさん:2006/05/30(火) 21:56:09 ID:???
いやなんかこう
print 'Hello World !!';
はいいけど、
print <<__EOT__;
Hello World !!
__EOT__
とか、なんか味気ないし1行じゃ意味ない感じでさあ。
945nobodyさん:2006/05/30(火) 22:20:42 ID:???
何のテストなのかがよくわからないけど、
>>943みたいなのとか、環境変数を全部吐くのとか、
「とりあえず動くことの確認」みたいなサンプルだったら、そういうのでいいのでは?

「いや、そうじゃなくて、こう、なんていうか、アレだよアレ」な場合(?)は
「エラストテネスのふるい」でぐぐるなり何なり。
946nobodyさん:2006/05/31(水) 01:06:18 ID:8kzUocWY
>>921です。
昨日の質問の続きなんですけど、ずっとわたしひとりで考えても分からなかったので教えてください(P口`q。)".
昨日聞いたものをsub readとして、下のどこかで&readしてHTMLに表示させたいんですけどどうしてもできません・゚・(PД`q)・゚

sub print{
local($jump_url);
if($EST{rank_fl}){
$jump_url=$Slog[2];
$jump_url=~s/(\W)/'%' . unpack('H2',$1)/eg;
$jump_url="$EST{cgi_path_url}$EST{rank}?mode=link&id=$Slog[0]&url=$jump_url";
}
else{$jump_url=$Slog[2];}

print<<"<!--HTML-->";
<!-- ログ\表\示 -->
<hr size=1 color=black>
<strong>[IN $in_pt][OUT $out_pt]</strong><br>
<a href="$jump_url"><b>$Slog[1]</b></a>
<br>
<!--HTML-->
print<<"<!--HTML-->";
$Slog[6]<br>
<!--HTML-->
}
foreach $line(@log_lines){
@Slog=split(/<>/,$line);
&print;
}

訪問ランキングスクリプトです。意味が分からなかったらファイルをお渡しします。 よろしくお願いしますm(*u_u)m
947nobodyさん:2006/05/31(水) 01:19:05 ID:???
よくわからんが、カンで答えると、
「@log_lines」 がファイルの中身なら、
「foreach $line (@log_lines) {」
の前で 「&read」 ?でソートさせにいけばいいんじゃない?
それでもできないなら、上で答えてくれたソースをその 「&read」 でどう改造して使ってるかによるな。
948nobodyさん:2006/05/31(水) 01:21:31 ID:8kzUocWY
具体的には、
sub read の中で、file.txt というファイルを読み込んで
1,あいうえお,0-1-8
2,かきくけこ,1-3-2
3,さしすせそ,1-9-4

この3列目の ○-△-□ の △ の数が多い順に行をsortして、
その行の2列目を@log_lines に格納する準備をしておいて
その後のsub print の中で@log_lines を利用してHTMLに吐き出すという事がしたいのですが
見ての通りsub print はテンプレート化したもので、sub read はcgiファイルなので別々のものを
うまく組み合わせるのに困っています(u_`u。)

sub read はlocal関数を使って、後々問題にならないようにしてみたりしたのですが
実際に起動させて見るとどれもうまくいきませんでした。....ρ(。 。、 )
ちからを貸していただけませんか?(*u_u)☆
949nobodyさん:2006/05/31(水) 01:43:02 ID:8kzUocWY
>>946さん
お返事ありがとうございます゚+.(・∀・)゚+.゚+.゚
いろいろ試してみてたのでめちゃくちゃになってるんですが貼ってみます。

sub read{
$file="file.txt";
@log_lines=(); #表示データリスト
%Clog=(); #各カテゴリの登録数

local(@temp_lines,%temp_ref,$line,@kt,$kt,@Slog,$st_no,$end_no,$i=0,$j=0,@data,$IN_count);
$end_no=$EST{hyouji}*$LC_page -1;
$st_no=$end_no - $EST{hyouji} +1;

open(IN,"$file");
while($line=<IN>){
chomp();
@Slog=split(/<>/,$line);## $Slog[13] = 0_0_0_0, $Slog[2] = URL
@IN_count=(split(/_/,$Slog[13]))[2];
push(@data,{url => $Slog[2], IN_count => $IN_count});
$Clog++;
}
close(IN);
@data = sort{$b -> {IN_count} <=> $a ->{IN_count}} @data;
#foreach $kt(@kt){
#if($LC_kt eq $kt){
#$temp_ref{$Slog[0]}=$i;
#push(@temp_lines,$line);
#$i++;
#}
#$Clog{$kt}++;
#}
close(IN);
950nobodyさん:2006/05/31(水) 01:44:30 ID:8kzUocWY
>>947さん、間違えてしまいました(>_<)すみません!


#foreach $line(sort{$b <=> $a}(keys %temp_ref)){
foreach(@data){
if($st_no<=$j && $j<=$end_no){
#push(@log_lines,$temp_lines[$temp_ref{$line}]);
push(@log_lines,$data[$j]});
}
$j++;
#}
#undef(@temp_lines); undef(%temp_ref);
}
お兄ちゃんみたいで頼りにしてます(ο^v^ο)
よろしくお願いしますo(*u_u)o
951nobodyさん:2006/05/31(水) 01:48:45 ID:???
どっかにソースをまとめてうpしる
952nobodyさん:2006/05/31(水) 02:05:27 ID:8kzUocWY
>>951さん
まとめてうpしるって、まとめてアップしろってことですか?
良く分からなくてすみません!(>_<)
953nobodyさん:2006/05/31(水) 02:09:40 ID:???
> 見ての通り sub print はテンプレート化したもので、sub read はcgiファイルなので別々のものをうまく組み合わせるのに困っています

ここが理解できないのはうちだけ?
テンプレート化って何 テンプレート化って。

どういう流れなのかいまいちわからないなあw
954nobodyさん:2006/05/31(水) 02:20:28 ID:8kzUocWY
>>951さん
アップローダーを見つけてアップしてきました。
http://tool-ya.ddo.jp/webfs/~enigma
の中にあります。コメントによろしくお願いしますと書いてます
955nobodyさん:2006/05/31(水) 02:22:01 ID:8kzUocWY
>>953さん
sub print の方は、HTMLファイルになってるんです。
sub read の方は、CGIファイルです!
956nobodyさん:2006/05/31(水) 02:28:01 ID:8kzUocWY
http://tool-ya.ddo.jp/webfs/~enigma
のDLパスは1234です!
957nobodyさん:2006/05/31(水) 02:48:53 ID:???
落としてみたけど、sub read なんてないなw sub open_in_new かw
>>955 は拡張子はHTMLファイルだけど、require できる普通のperl形式だったね。
かなりルーズに書いてるから、別ファイルだから受け渡しできない〜、とかそういうことはないと思うぞ。

件とは関係ないかもだけど 178行目
push(@log_lines,$data[$j]});
なってエラーでる。
push(@log_lines,$data[$j]);
こうじゃね。
しかもこれ直してもまだカッコ閉じられてない風なエラーでて しかもどこだかわからないw
動くファイルあげてw

958nobodyさん:2006/05/31(水) 02:51:27 ID:???
って、すぐ近くにあったw

181行目
#}

}

もっとがんがれー ( ´Д`)
959nobodyさん:2006/05/31(水) 03:02:45 ID:8kzUocWY
>>957-958さん
落として見てくれたんですね(*^_^*)♪
ありがとうございます!

なんでそんなに早く分かるんですか!?
しかも、書いてもらってるのに
>件とは関係ないかもだけど 178行目
>push(@log_lines,$data[$j]});
>なってエラーでる。
>push(@log_lines,$data[$j]);
の2行目と4行目の区別がわかりません。....ρ(。 。、 ) 全く同じに見えます。。。

でもほんとにほんとに、なんで見ただけですぐ分かっちゃうんですか??!!
960nobodyさん:2006/05/31(水) 03:07:08 ID:8kzUocWY
ああ〜〜っΩ(*'〇^*)Ω
わかっちゃいましたぁ☆
} が付いてたのが余計だったんですね!

ホントに何でそんなに早く分かるんですか???
961nobodyさん:2006/05/31(水) 03:27:09 ID:8kzUocWY
>>957-958さん♪
できましたぁ〜☆+゚ヽ(^◇^◎)/

って言ってもエラーが取れただけでランキングは、正しく表示されていませんでした^^;
ファイルの中身を読んで、昨日言われたとおりに書いたつもりなんですけど
CGIの方のファイルを見てると、該当するカテ用のログを読んで、
その中のデータを「IN」が多い順にソートして、それから
1ページ分に表示させる分だけ@log_lines に入れてますよね? 解釈も記述も合ってますよね?^^;

HTMLの方では、@log_lines から <> を除いて@Slog に入れてから&print をしてますよね?
そこでは、1ページ分だけのデータが入ってる@Slog のURL部分をいじっておしまいなのに
画面で確認すると、INの降順じゃないんです。。。
しかも、@Slogを直接表示させるとやっぱりINの降順にそーとされてないデータが出てくるんです。  ( ´Д`)なんでー
962nobodyさん:2006/05/31(水) 03:37:25 ID:???
誉められてるんだかけなされてるんだかわからなくなってきたとです・・・。 orz
エラーはエラー文に行数でてればすぐわかるんだけどw

っていうかスクリプトはルートわからんかぎり見当つかないな。確かめられないのでなんとも。
@log_lines より先に、ソートする open_in_new (?) を呼べばいいとしか答えられないや。

>>948で言ってた sub print が sub PRlog に当たってるんだろうか?
その中で local(@log_lines); こうやってるけど、これはいいんだっけ? 消したほうが・・・。

・・・

あー、もしかして、

@IN_count=(split(/_/,$Slog[13]))[2];

$IN_count=(split(/_/,$Slog[13]))[2];

こうじゃね?w
963nobodyさん:2006/05/31(水) 03:42:39 ID:???
ここはやけにハイテンションな顔文字が多いインターネッツですね
964nobodyさん:2006/05/31(水) 03:51:05 ID:8kzUocWY
>>962さん♪
誉めるっていうより、絶賛ですょ〜w(*・o・*)w オォォ

最近PC買ったんでついつい面白くていろんなことやり出したら止まらなくて^^;
けど掲示板って思ったより時間が掛かるから、すぐ聞けてわたしもすぐ答えられるようなものあったらいいのになぁ♪

>@log_lines より先に、ソートする open_in_new(?) を呼べばいいとしか答えられないや。
早速実践してみます!

>sub print が sub PRlog に当たってるんだろうか?
そうです^^

>local(@log_lines); こうやってるけど、これはいいんだっけ? 消したほうが・・・。
消しましたぁ☆

>@IN_count=(split(/_/,$Slog[13]))[2];
>↓
>$IN_count=(split(/_/,$Slog[13]))[2];
>こうじゃね?w
やってみましたが、結果は同じでした。。。(。_。*)

プログラムって難しいですねぇ^^;
先生に少し習ったくらいだから、わたし全然だめですよne...
965nobodyさん:2006/05/31(水) 03:52:24 ID:8kzUocWY
>>963さん
こんばんゎぁぁ 猫(゚ロ゚L)
遅くまで起きてるんですねぇ^^♪
966nobodyさん:2006/05/31(水) 03:55:14 ID:???
福岡県在住のねーちゃんの懸賞サイト作りにタダ働きさせられてて(´・ω・) カワイソス
967nobodyさん:2006/05/31(水) 03:58:55 ID:8kzUocWY
>>962さん♪
今書いたスクリプト見て
>@log_lines より先に、ソートする open_in_new(?) を呼べばいいとしか答えられないや。
のところをやろうとしたら、
#&open_in_new;
foreach $line(@log_lines){
@Slog=split(/<>/,$line);
&PRlog;
}
って、なってました^^; なるわけ無いですよね。。。

そこで、# を外してみたら。。。!!!


。。。やっぱり正確に表示されませんでしたToT
それどころか、登録してある部分が消えてました(оД〇;)マヂ?!

open_in_new の方で、ちゃんとlocal を使ったりしてないのがまずかったんですかねぇ。。。??
968nobodyさん:2006/05/31(水) 04:01:21 ID:???
この流れにワロタwww
969nobodyさん:2006/05/31(水) 04:07:43 ID:???
>>966
orz
でも一度答えると責任ってのが発生してなかなか逃れられない罠。

>>964
いや、変わらないのはありえないなw
元が、157行目の、

@Slog=split(/<>/,$line);## $Slog[13] = 0_0_0_0, $Slog[2] = URL
@IN_count=(split(/_/,$Slog[13]))[2];
push(@data,{url => $Slog[2], IN_count => $IN_count});

だったので、 $IN_count は未定義で、IN_count => $IN_count には undef が設定されてたので、いままでソートがされていなかったはず。
それが、
$IN_count=(split(/_/,$Slog[13]))[2];
に直すことで $IN_count は定義されて、ソートができるようになったはず。

>>961 でソートされてない、っていってたけど、まだされてない?
もしソートできてないなら、 $IN_count の値が怪しいなw
本当に (split(/_/,$Slog[13]))[2]; で正しいのか確認してみて。
print $IN_count, $Slog[13], "\n"; とかやるなりして。
$array[2] は 「123-456-789」 でいえば 456 じゃなくて 789 だぞ?
970nobodyさん:2006/05/31(水) 04:09:58 ID:???
ID:8kzUocWYは次スレ立てて来い
971nobodyさん:2006/05/31(水) 04:10:25 ID:??? BE:185724937-#
もうだめだねこのスレ
972nobodyさん:2006/05/31(水) 04:11:20 ID:???
いや、むしろこれは序章にしか過ぎないのだった・・・
973nobodyさん:2006/05/31(水) 04:13:14 ID:???
>>962=>>969の人が本気でかわいそうになって来たんだけど
ニヤニヤしながら生温かい目で見守ることにする。

>>971
なんだか急に「お客さん」向けのスレに変わったなぁとは思う。
974nobodyさん:2006/05/31(水) 04:18:09 ID:???
>>969
改造は改造スレでどぞ。
と、自治厨ぶるつもりはなく、むしろ「親切な人も居るんだなぁ」とROMってたんけどな。
この調子で続けられると荒れそうな気がしないでもなく。
で、他のROMは落としたスクリプトの著作権のとこ見てニヤニヤしてるんだろ?な?w
975nobodyさん:2006/05/31(水) 04:21:37 ID:8kzUocWY
>>969さん♪
迷惑ですよね。。すみません。
遅くまで付き合っていただいてありがとうございました!
とても親切な方でしたので、つい調子に乗ってしまいました。
ごめんなさいm(__)m
976nobodyさん:2006/05/31(水) 04:22:33 ID:???
ID:8kzUocWYには任せそうにもないので次スレ、逝ってきます。
977nobodyさん:2006/05/31(水) 04:23:09 ID:???
うん、うちもこういうふいんき(何故かry)のは mixi とかでやれ、と思った。コミュが合えば答えるw


あと、178行目
push(@log_lines,$data[$j]);

push(@log_lines,$data[$j]->{url});
で、
print $_->{url}, "<hr>\n"; html 165行目

print $_, "<hr>\n";
にした方がいいような気がする。
978976:2006/05/31(水) 04:26:11 ID:???
> ERROR:新このホストでは、しばらくスレッドが立てられません。

生IPもISP串もこうなったので、ほかの方お願いします...orz
979nobodyさん:2006/05/31(水) 04:29:58 ID:???
>>976
よろ〜

>>975
いや、迷惑っていうか、なんていうか。
まぁ、動かして確認できるようにファイル一式同梱でもしてくれたら1レスで済んだんだけどね。
プログラムは、、、ほんと勉強するとしないとで雲泥の差だねw
勉強しないでやるとkentくらいで終わる気がする。
まぁがんばってちょ。

>>978
最近建てられたことないけどやってみるーw
980nobodyさん:2006/05/31(水) 04:34:00 ID:???
>>975
まぁ、なんだ、著作権とかうるさく言う方じゃないけど、
ttp://yomi.pekori.to/yomi-search.shtml
の作者にも謝っとけ。

しかし、変なやつが1人でも居たら即効で晒されてただろうに
このスレは本当に生温かいw

>>979
よろ
981nobodyさん:2006/05/31(水) 04:34:44 ID:???
建てられました。

Perlコーディング初心者質問スレ Part 49
http://pc8.2ch.net/test/read.cgi/php/1149017548/

テンプレ貼り終わるまで待ってt
982976:2006/05/31(水) 04:39:05 ID:???
>>981
乙。IPレンジかぶってなくてよかった。
連投規制値知らないので(全部貼ってもだいじょぶ?)、無駄な投稿をここに投げてみる。
983976:2006/05/31(水) 04:45:01 ID:???
あり?連投で止まった?続き逝っときます。
984nobodyさん:2006/05/31(水) 04:45:05 ID:???
規制うけました orz
もしかして過去ログって省略して倉庫だけでよかった?(;´Д`)
誰か後2個だけよろしく orz
985nobodyさん:2006/05/31(水) 04:46:40 ID:???
>>983
乙。

>>984
無問題。
986nobodyさん:2006/05/31(水) 04:46:40 ID:???
>>983
ごめん、串とかクッキーとかいじったけど何故かダメじゃった。ありー
987976:2006/05/31(水) 04:47:06 ID:???
>>984
乙。残り片付けました。
988nobodyさん:2006/05/31(水) 04:50:11 ID:???
>>984>>987
スレ立てテンプレ乙。
あの流れをこのスレ内で終焉させたことも乙w
989nobodyさん:2006/05/31(水) 05:01:09 ID:??? BE:318384566-#
あーキモかった
二度と来んな
990nobodyさん:2006/05/31(水) 05:21:02 ID:???
>>989=クラッカー
991nobodyさん:2006/05/31(水) 05:38:29 ID:???
クラッカーだとしたらレベル低スw
992nobodyさん:2006/05/31(水) 06:06:41 ID:???
POSTメソッドを送信するプログラムを書いているのですが
Content-Type: application/x-www-form-urlencodedで送らなければいけない場合に文字化けが発生します
具体的には日本語と書いてエスケープして渡した値が??{??になったりするものです
$str =~ s/([^\w ])/'%' . unpack('H2', $1)/eg;
$str=~ tr/ /+/;
ではだめなのでしょうか?
993nobodyさん:2006/05/31(水) 06:08:16 ID:??? BE:106128162-#
情報を小出しに(ry
994nobodyさん:2006/05/31(水) 06:10:37 ID:???
そこだけ出されてもわからないけど、$strに入ってる「日本語」の
文字コードはどれかに決め打ちされてるの?

どっかでEncode.pmなり何なりを使わなきゃいけない仕組みになってない?
995nobodyさん:2006/05/31(水) 06:14:14 ID:???
>>994
いま、POST先のページを見てきたら charset=euc-jpとなっていました。プログラム側の文字コードは決めてないです。
POST先のページがeuc-jpだとEncode.pmを使わなければいけないのでしょうか?
996nobodyさん:2006/05/31(水) 06:20:16 ID:???
>>995
「日本語」が
・%C6%FC%CB%DC%B8%EC
・%93%FA%96%7B%8C%EA
・%E6%97%A5%E6%9C%AC%E8%AA%9E
どれになってるのかも、そこからどうしたいのかもわからんので何とも言えません。
997nobodyさん:2006/05/31(水) 06:23:03 ID:???
>>996
%93%fa%96%7b%8c%eaとなっています。情報が小出しですいませんでした。どの情報を書けばいいのかすらわからなかったもので…
998nobodyさん:2006/05/31(水) 06:27:29 ID:???
>>997
どこまで小出しが続くのかもわからんので、
それ(>>996の2つめ)はShift_JISですよー、とだけ言い残して落ちよう。

がんばれ。
999nobodyさん:2006/05/31(水) 06:28:24 ID:??? BE:318384566-#
The Galaxy Express 999 GET !!!!
1000nobodyさん:2006/05/31(水) 06:28:56 ID:??? BE:477576869-#
__END__
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。