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

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

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

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

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

過去ログやお勧めサイトは >>2-10 
2nobodyさん:2006/03/01(水) 15:44:45 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 8 】 ★三 
http://pc8.2ch.net/test/read.cgi/php/1077525387/ 

【 スクリプト改造依頼スレ 】(丸投げ) part4 
http://pc8.2ch.net/test/read.cgi/php/1127916965/ 
3nobodyさん:2006/03/01(水) 15:46:22 ID:???
4nobodyさん:2006/03/01(水) 15:46:59 ID:???
5nobodyさん:2006/03/01(水) 15:47:31 ID:???
6nobodyさん:2006/03/01(水) 15:48:50 ID:???
7nobodyさん:2006/03/01(水) 15:49:30 ID:???
8nobodyさん:2006/03/01(水) 15:50:02 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/03/01(水) 15:51:55 ID:???
10nobodyさん:2006/03/01(水) 15:52:31 ID:???
------------ テンプレここまで ------------

ごめ、ちょっと失敗しちゃった…。
11nobodyさん:2006/03/01(水) 15:55:34 ID:???
> >>994
> どの辺が?詳しく!!
>
> >>995
> ここ!?

これが質問している人間の態度かよ
12987:2006/03/01(水) 15:59:02 ID:???
>>11
ごめんなさい…。

>>前スレの995
> print MAIL "Subject: $sub_msg\n";

> print MAIL "Subject: $sub_msg\n\n";
ですか??
13nobodyさん:2006/03/01(水) 16:26:10 ID:???
>>12
やってみたら
14987:2006/03/01(水) 16:32:13 ID:???
とりあえず修正したものをアップしましたが、
私の環境からは送れなかった事がないので、
これが原因なのかはまだわかりません。
(誰かが送れなくて連絡をくれるまでは…)
15nobodyさん:2006/03/01(水) 16:32:34 ID:???
前スレ995が言ってるのは$sub_msgの中身の話だと思うよ。そこ以上に。
というか、RFC(ry

最近は qmail や Postfix が動いてる場合が多いんだけど、
今でも sendmail 使ってるサーバなのかなとオプション見て思った。

> open(MAIL,"| $sendmail -t -n -oi $mail_addrs") || &msg("メール送信に失敗しました。");
16nobodyさん:2006/03/01(水) 16:40:16 ID:???
print MAIL "To: $mail_addrs\n";
print MAIL "From: $mail_addrs\n";
print MAIL "BCC: $mail_addrs_bcc\n";
print MAIL "Subject: $sub_msg\n";
print MAIL "MIME-Version: 1.0\n";
print MAIL "Content-type: text/plain; charset=ISO-2022-JP\n";
print MAIL "Content-Transfer-Encoding: 7bit\n";
print MAIL "X-Mailer: UNKO\n\n";

とかつけたら?
17nobodyさん:2006/03/01(水) 16:47:35 ID:???
> 私の環境からは送れなかった事がないので、
> これが原因なのかはまだわかりません。
じゃあ環境が整ってないんじゃん。
今ここであーだこーだ言ってもしょうがないって訳か。

その送れないって奴を連れてくるか、ここにそのフォームを晒すかしなきゃ解決にはならんよーな
18nobodyさん:2006/03/01(水) 17:10:42 ID:???
引数にメールアドレスつっこむ必要あるっけ?
メールアドレスが不正なものでないかどうか検証してる?
フォームについても同様。
19nobodyさん:2006/03/01(水) 17:49:38 ID:???
メールのサブジェクトはマルチバイトが入るなら Base64 エンコードするなりなんかしてください

ってことでFA?
20nobodyさん:2006/03/01(水) 17:51:17 ID:???
> メールのサブジェクトはマルチバイトが入るなら Base64 エンコードする

エンコードするだけで FA されても困ります。

> なりなんかしてください

他の方法があるなんてはつみみです。
21nobodyさん:2006/03/01(水) 17:52:43 ID:???
>20
お前が低脳なのを棚に上げて初耳とかワロス





    ぐ  ぐ  れ
22nobodyさん:2006/03/01(水) 17:57:40 ID:???
>>21
またまたご冗談を。
23nobodyさん:2006/03/01(水) 18:02:20 ID:???
やばい
ここ本当に初心者しか居ない
24nobodyさん:2006/03/01(水) 18:05:24 ID:???
と初心者が下手に釣りをしようとしています。
25nobodyさん:2006/03/01(水) 19:04:33 ID:???
と初心者が解説者ぶっております。
26nobodyさん:2006/03/01(水) 20:34:11 ID:???
ほとんど"Q"(Quoted Printable) encodingなんて使わないからね。

http://www.atmarkit.co.jp/fnetwork/rensai/netpro04/netpro01.html
http://www.ietf.org/rfc/rfc2047.txt
27nobodyさん:2006/03/01(水) 21:59:41 ID:???
【.  CGI名  .】 White Board
【配布先URL】 http://powder-snow.milk.tc/
【 依頼期限 】 なるべく早めにお願いします
【. 依頼内容 】 当サイトの掲示板でnemuの部屋の雑談板のように頻繁にアドレス乱立スレが立ちます。
今は雑談板を閉鎖しているのですが待っている方もみえます、以前は串制限やホスト名を制限していましたが無意味な結果が現状です
上記のcgiにBBQを組み込みたいのですがどこに組み込んで良いのかわかりません
if (gethostbyname(join(".",reverse(split(/\./,$ip))).".niku.2ch.net") eq "\x7f\x00\x00\x02")
これをどこに組み込めば良いのかどうか宜しくお願いします
28nobodyさん:2006/03/01(水) 22:17:51 ID:???
>27
マルチポストすんな、クズが
http://pc8.2ch.net/test/read.cgi/php/1077525387/927
29nobodyさん:2006/03/01(水) 22:18:23 ID:???
>>27
本物は、依頼のときは age るみたいよ
30nobodyさん:2006/03/01(水) 22:25:55 ID:???
>>28
ではどこにスレ立てすれば?誘導してください
31nobodyさん:2006/03/01(水) 23:13:35 ID:???
スレ立てる気か!
32nobodyさん:2006/03/02(木) 02:28:51 ID:???
>>30

作者のサイトの掲示板にスレ立てればいい。
または
http://pc8.2ch.net/test/read.cgi/php/1077525387/930
33nobodyさん:2006/03/02(木) 11:21:11 ID:???
Image::Magickをインストールしようと
DOSで
ppm
install Image::Magick
と打ち込むと
Error no valid repositories:
Error: 500 Can't connect to ppm.ActiveState.com:80(connect: unknow error)
Error: 500 Can't connect to ppm.ActiveState.com:80(connect: unknow error)
とでます。
原因は何なのか分かるかたいらっしゃいますか?
perlのバージョンはv5.8.7です
34nobodyさん:2006/03/02(木) 11:45:43 ID:???
その問題の解決にはならないけれど、
WinでImageMagickを挿れるときは、ImageMagickの本サイトからインストールできる
35nobodyさん:2006/03/02(木) 11:51:47 ID:???
age
36nobodyさん:2006/03/02(木) 14:53:32 ID:x9+bzH30
>>34
それはインストールしてみたんですが関係ないみたいです…
37nobodyさん:2006/03/02(木) 16:12:51 ID:???
>>33
proxyの設定をすれば幸せになれるんじゃね?
38319:2006/03/02(木) 17:34:42 ID:???
>>37
proxy…
分からない…
39nobodyさん:2006/03/02(木) 18:09:13 ID:???
>>33
Image Magickバイナリをインストールするときに
> Select Additional Tasks
のところで
> Install PerlMagick for ActiveState Perl v5.8.7 build 815
にチェック入れるだけ。
40nobodyさん:2006/03/02(木) 23:27:53 ID:???
配列をファイルに保存すると
2行目以降の行頭に半角スペースがはいってしまうんです。
対処方法ありませんか?
41nobodyさん:2006/03/02(木) 23:32:51 ID:???
print FUCK_IN_FILE join("\n", @fuck_in_array);

これでどう?
42nobodyさん:2006/03/02(木) 23:55:05 ID:???
>>41
できました!
ありがとうございます。
43nobodyさん:2006/03/03(金) 10:10:16 ID:???
コマンドラインオプションと引数を受け取るときにうまいこと受け取る方法はないでしょうか。
たとえば、
-a :必ず値がない
-b [VALUE] :値があるかもしれないしないかもしれない
-c VALUE :必ず値がある
こんな感じのオプションがあるとして、さらに引数に任意の文字列を与えられる場合、
つまり以下のような感じです。
command.pl [-a] [-b [value]] [-c value] string1 [string2 string3...]
これを間違いなく受け取るにはどうしたらいいでしょうか。

例えば以下のようなときにどうすればいいかわかりません。
command.pl -c string1

すべてのオプションを値を必須、もしくは無しの二極にするしかないでしょうか。
44nobodyさん:2006/03/03(金) 10:12:00 ID:???
間違えた…。

>さらに引数に任意の文字列を与えられる場合
さらに引数に任意の文字列を任意の数与えられる場合

> command.pl -c string1
command.pl -b string1
45nobodyさん:2006/03/03(金) 10:21:13 ID:???
…どう考えても無理ですね。

valueなのかstring1なのかなんて調べようがないし、
valueが有効な値のみで構成されているか調べても、任意の文字がはいるstring1は
もしかしたらその文字だけで構成されているかもしれないし。
stringの数も任意だから後ろから取り出すこともできないし。
オプションの値を二極化することにします。

お騒がせしました。
46nobodyさん:2006/03/03(金) 10:37:23 ID:???
>>43-45
-b [value] を満たすにはちと改造が必要だが、Getopt::Std
47nobodyさん:2006/03/03(金) 10:42:49 ID:???
>>46
Getopt::Std だと value と string1 が区別できるようになるの?
48nobodyさん:2006/03/03(金) 10:59:23 ID:???
>>46
お返事ありがとうございます。

使ってみましたが、おっしゃるとおり -b [value]はそのままでは受け渡せませんでした。
単純に -x の次の値を値として取得しているだけのようなので、
このモジュールでは難しいように思います。

とりあえず -b none という「値を指定しないという値」を作って、
問題が出たときはこの値を明示することにしました。
49nobodyさん:2006/03/03(金) 12:45:49 ID:FQZyKwaV
正規表現どうしてもうまくいかないので質問させてください。

曜日 月 日 時:分:秒 年
Sat Jan 1 13:12:26 2005
Sun Jan 2 14:16:50 2005

と言うデータがあったら「時」の部分だけ取り出す正規表現を教えてください。
上の二件のデータですと13:と14:の部分です。
50nobodyさん:2006/03/03(金) 12:46:58 ID:???
>>49
上手くいかなかった正規表現を晒してみ。
51nobodyさん:2006/03/03(金) 12:47:36 ID:???
正規表現なんか使わんでもsplit多用したらできるんとちゃう
52nobodyさん:2006/03/03(金) 12:50:41 ID:FQZyKwaV
($hogehoge[$i] =~ m/([0-9]\: +\d+)/)
とかやってました・・・
全然だめです
53nobodyさん:2006/03/03(金) 12:53:12 ID:FQZyKwaV
ちなみに
=~ m/([A-Z][a-z]{2} +\d+)/)
とやったら月日はうまく出せたんです。

Sat Jan 1 13:12:26 2005
Jan 1
54nobodyさん:2006/03/03(金) 12:57:19 ID:???
そこまでいけたらもうひといきやん。 +(\d+)
55nobodyさん:2006/03/03(金) 13:28:52 ID:???
56nobodyさん:2006/03/03(金) 13:48:50 ID:???
モジュールで質問です。

--- Module.pm ---
package Module;
use strict;
use CGI;
1;

--- script.pl ---
use lib '.';
use Module;
$cgi = new CGI;
print "hoge\n";
exit;

このようなファイルがあるときに、
perl script.pl を実行すると、"hoge" が出力されます。
use Module; することで、use CGI が script.pl で
実行されたように継承されると思うのですが、
Module.pm 内の use strict; までは継承されないのでしょうか?

もちろん、script.pl に use strict を入れると $cgi でエラーが出ます。
同じように、use warnings も各スクリプト上でしか機能しないのでしょうか?
57nobodyさん:2006/03/03(金) 14:17:45 ID:FQZyKwaV
曜日 月 日 時:分:秒 年
Sat Jan 1 13:12:26 2005
Sun Jan 2 14:16:50 2005

上のデータを
=~ m/([0-9][0-9]\:+(\d+))/)
とやったところ
結果が

13:12
14:16
と出てしまいます。

曜日 月 日 時:分:秒 年
と言うデータがあったら「時」の部分だけ取り出したいので

13:
14:

と出したいのですが、どうもうまくいきません・・・
58nobodyさん:2006/03/03(金) 14:24:58 ID:???
いや、だから 月 日 の正規表現から繋げてけばいいじゃーん。
あと、無駄なカッコは外そう。
m/[A-Z][a-z]{2} +\d+ +(\d+\:)\d+/
59nobodyさん:2006/03/03(金) 16:30:44 ID:???
>>56
script.pl 内で use Module 後に CGI->new が可能なのは、
use CGI が*どのファイルで行われているかに関わらず、*
現在のプロセスに CGI.pm 中のコードが読み込まれた後だから。

strict プラグマはその書き方だとファイルスコープに対して
効いているので、別ファイルのコードに影響は及ばない。

> use warnings も各スクリプト上でしか機能しないのでしょうか?
http://perldoc.jp/docs/perl/5.8.1/warnings.pod
60nobodyさん:2006/03/03(金) 17:46:07 ID:???
HTTP::Date とか使えば日付はいじれるんじゃないかなぁ。
61nobodyさん:2006/03/03(金) 18:22:06 ID:???
なにそれ? Date::Manip とかの方がよくね?
62nobodyさん:2006/03/03(金) 19:59:14 ID:5hL2Isoz
質問です:フォームで選択したcheckbox select のvalueを外部ファイルに保存し、
GETリクエストから渡された値を外部ファイルから検索し該当する行に保存されたものをフォーム上に復元したいのですが、
テキスト、チェックボックス、ラジオボタンまでは出来たのですが Selectをどう再現すればいいかで悩んでます。
外部ファイルへの保存は {テキストエリア,チェックボックス1,2,3,セレクト1,2} という形で各valueを保存しています。
例: inputtext,chked1,,chked3,sel13,sel0
読み出しはカンマ区切りを変数に読み出す形で行っています。
open (DATA,"hozon.dat"); @DATA = <DATA>; close (DATA);
foreach $linename (@DATA)
if ($linecont =~ /$name/i ){
($textfield1,$chk1,$chk2,$chk3,$sel1,$sel2) = split (/,/,$linecont);
if ($chk2 eq "chked2") {$chked2 = "checked";} else {$chked2 = "";}
以下復元処理
#htmlでは <input type="checkbox" value="chked2" $chked2> といった具合です
#<select name="select1">
#<option value="0" selected=もじゃもじゃもじゃ >セレクト選択肢1</option> ←ここを復元したい、選択肢は60個程
63nobodyさん:2006/03/03(金) 20:02:24 ID:5hL2Isoz
っと
$names は GETで渡された変数です。
64nobodyさん:2006/03/03(金) 20:36:38 ID:???
>>61
それ、異様にデカくね?
65nobodyさん:2006/03/03(金) 20:37:34 ID:???
>>62
なんかしらんけど、HTML::FillInForm でも使ってろ。

http://search.cpan.org/~tjmather/HTML-FillInForm-1.06/lib/HTML/FillInForm.pm
66ヽ(´ー`)ノ ◆.ogCuANUcE :2006/03/03(金) 21:06:07 ID:???
>>57

use HTTP::Date qw(parse_date);

my $n = (parse_date('Sat Jan 1 13:12:26 2005'))[3];
# => 13
67nobodyさん:2006/03/03(金) 23:13:58 ID:???
index.htmlを自動で生成してある特定の部分だけランダムに生成するようにして、
cgiにアクセスするとindex.htmlが更新されるcgiを作ったのですが、
5日ごとに自動で更新できるようにしたいのです。
調べてみてもそういった手法はないみたいです。
チャットのようなものや、cgiにアクセスした状態でないとできないみたいです。
cgiファイルがアクセスされることなしに自分で実行して、5日ごとにページが更新されている
そんなcgiを作成してみたいのです。
よろしくお願いします。
68 ◆TWARamEjuA :2006/03/03(金) 23:35:03 ID:???
cronさんでそのcgiさんを定時に呼び出してあげるとか?
自鯖ならcronさんだけで桶だけれども。
6967:2006/03/03(金) 23:53:28 ID:???
>>68さんあいがとう。
調べてみたら、私が利用しているロリポップではcronがつかないのです・・・。
他の方法を調べてみます。・・・。
70nobodyさん:2006/03/04(土) 00:08:26 ID:???
過去更新した日から5日以上経っていたら、更新するんじゃだめなの。
71nobodyさん:2006/03/04(土) 00:14:17 ID:???
>>57
もう解決してるけど。月日と時が欲しいんだよね。

my $date = "Sat Jan 1 13:12:26 2005";
my($md, $h) = ($date =~ / (¥S+ ¥d+) (¥d+):/i);
72nobodyさん:2006/03/04(土) 00:17:26 ID:???
>>71
73nobodyさん:2006/03/04(土) 00:20:24 ID:???
>>69
じゃ、cron使える所にプログラム仕込んで
5日に1回、cgiを叩くようにする。

もしくは、変更される箇所をJavaScriptにする。
日付を5で割った余りを見て、そこだけランダムに生成。
これだとcgiも要らない。
ソースは見えちゃうけど。
74nobodyさん:2006/03/04(土) 00:27:13 ID:???
>>72
>>49,53 を見てたら月日と、時間が別々に要るっぽかったので。
モジュールを使わない方向で、オートマトンが短くなるように書いてみた。

iオプションは要らなかったか…
my($md, $h) = ($date =~ / (¥S+ ¥d+) (¥d+):/);
75nobodyさん:2006/03/04(土) 01:05:20 ID:???
どーしてモジュールつかわないんだろう。
7669:2006/03/04(土) 02:01:29 ID:???
>>70さん それで全然OKです。

>>73さん javascriptの併用もOKです。それでしたら決められた日時が来たら、再度cgiを読みこむ
       といった具合にしてみたいです。

ちょっとまた調べてきます。レスをありがとうございました。
77nobodyさん:2006/03/04(土) 02:13:12 ID:8Fz2Q4U8
1: %2Fを「/」にしたいです。。

2: $hoge =~ s/%2F///g; と書いてみましたが

3: エラーが出て上手くいきませんでした。

同じようにして
$hoge2 =~ s/%3A/:/g;
は、うまくいったのでサーバの問題とかそういうのではないと思います。
よろしくおねがいします。
78nobodyさん:2006/03/04(土) 02:15:35 ID:???
/\//
79nobodyさん:2006/03/04(土) 02:17:29 ID:8Fz2Q4U8
>>78
うぁーん、できました。・゚・(ノД`)・゚・。
ありがとうございました
80nobodyさん:2006/03/04(土) 04:36:18 ID:???
>>77
s[%2F][/]gとかs|%2F|/|gという風にも書ける。
こっちの方が見やすいからお勧め
81nobodyさん:2006/03/04(土) 04:38:32 ID:???
>>76
訪問者があった段階でCGIを動作させ、前回更新より5日経っていたら書き換えってことにすればいいのでは?
82nobodyさん:2006/03/04(土) 04:44:18 ID:???
やる必要は無いのだろうが、個人的には%もエスケープしてあげたい
83nobodyさん:2006/03/04(土) 05:01:24 ID:???
>>77
ところで、もしかしてやりたい事はこれだったりする?
$hoge =~ s{ %([[:xdigit:]]{2}) }{ pack('H2', $1) }gex;
84nobodyさん:2006/03/04(土) 15:23:11 ID:???
ホスト名の始めのピリオドまでを置換で消したいのですがうまくいきません。
「○○○.」○○○.jp や 「○○○.」○○○.○○○.jp のような。

$host_name =~ s/.+\.//;


ってやってみましたがうまくいきませんでした。
ご教授お願いします。
85nobodyさん:2006/03/04(土) 15:34:21 ID:??? BE:101649492-
+ や * の直後に ? を書くと最短マッチ
86nobodyさん:2006/03/04(土) 16:11:17 ID:???
>>85
d!!うまくいったよ!!!
最長とか最短とかも理解できたよ、ありがと!!
87nobodyさん:2006/03/04(土) 16:51:16 ID:???
>86さんではないけど、>85さんいい事知りました
ありがと
88nobodyさん:2006/03/04(土) 20:33:30 ID:???
掲示板のスクリプトにおみくじ機能を入れたいのですが、なかなかうまくいきません。

$omikuji = '大吉','中吉','小吉'.'吉','凶';

と指定した後に

# おみくじ
$name =~ s/おみくじ/$omikuji/g;

としているのですが、大吉しか表示されません。
どうすればいいのでしょうか?
89nobodyさん:2006/03/04(土) 20:44:58 ID:???
ハァ?
90nobodyさん:2006/03/04(土) 21:09:45 ID:???
g→eg
91nobodyさん:2006/03/04(土) 21:13:06 ID:???
92nobodyさん:2006/03/04(土) 21:16:44 ID:???
またおみくじかよお前ら飽きないなwww
93nobodyさん:2006/03/04(土) 21:47:11 ID:???
>>88
googleで、「おみくじ perl」で検索してください。
9488:2006/03/04(土) 22:14:18 ID:???
おかげさまでできました。
みなさんありがとうございました
9576:2006/03/05(日) 00:33:38 ID:???
>>81
なるほど、そういうアプローチもありますね。
今なお探しているんですが、ソースを組み合わせるところまで行っていません・・。
9676:2006/03/05(日) 02:19:28 ID:???
結局こういう風にしました。

同一IPアドレスから一日一回しかindex.htmlを生成しない

5日おきくらいに自動更新できればいいかなと思ったんですが、
googleのこと考えると更新のペースは早いほうがいいと判断したためです。
これで正常動作したら完成です。
レスしてくれた皆様、ありがとうございました。
97nobodyさん:2006/03/05(日) 02:22:34 ID:???
いちいちほうこくしなくても、だれもきたいしてないからきにすんな。
98nobodyさん:2006/03/05(日) 18:43:40 ID:???
制御について
if ($1 ne "1") { print "hage"; }
条件に1か2でない場合hageを実行したいのですが
if ($1 ne "1”) { 処理内容 } elsif ($1 ne "2") { 処理内容 } else { 処理内容 }
これだと3つ処理内容が分割されてうまくいきません
条件が2つ実行内容は1つの場合どういう分がいいのでしょうか?

99nobodyさん:2006/03/05(日) 19:10:38 ID:???
条件そのままに解釈すると
if (($1 ne "1") or ($1 ne "2")) {print "hage";}

たぶんやりたいのは
if (($1 ne "1") and ($1 ne "2")) {print "hage";}
100nobodyさん:2006/03/05(日) 19:22:40 ID:???
>>99
無駄に括弧つけると読みにくいでつよ?
10198:2006/03/05(日) 19:43:37 ID:???
>>99
下のでできました、ありがとうございます
102nobodyさん:2006/03/05(日) 19:45:31 ID:???
ついでだからandと&&を勉強しておこう
103nobodyさん:2006/03/05(日) 22:15:53 ID:???
and と && に違いが?
104nobodyさん:2006/03/05(日) 22:21:35 ID:???
ないと思ってる?
105nobodyさん:2006/03/05(日) 22:26:02 ID:???
ifの時に関しては違い無いと思ってる
ほかは知らん使ったことないので
106nobodyさん:2006/03/05(日) 22:26:31 ID:???
ほんと・・・初心者ばっかだなこのスレw
107nobodyさん:2006/03/05(日) 22:28:41 ID:???
>>105
ifの時も違うよ。優先順位に注目。
108nobodyさん:2006/03/05(日) 22:28:53 ID:???
とかいいつつ答えられてない煽るしか能のないチンカスがいるのはこのスレですか?
109nobodyさん:2006/03/05(日) 22:30:54 ID:???
>>107
なるほど
いっつも &&、||、! しか使わんから気が付かなかった
thx
110nobodyさん:2006/03/05(日) 22:36:08 ID:???
>>100
このスレ初心者が多いから括弧つけといた方が安全かもね。
111nobodyさん:2006/03/05(日) 22:39:11 ID:???
>>108
「優先順位に注目」って書いてあるじゃん。馬鹿?
112nobodyさん:2006/03/05(日) 23:16:44 ID:???
括弧のありなしは初心者云々では語りきれない。
113103:2006/03/05(日) 23:19:42 ID:???
おまいらもっと建設的になれよ('A`)
114nobodyさん:2006/03/05(日) 23:23:40 ID:???
> 111
前レスから12秒・・・コレでなにも読めないか?
難儀だなオイ
115nobodyさん:2006/03/05(日) 23:24:52 ID:???
自分の無知を晒してる馬鹿が居てワロス
116nobodyさん:2006/03/05(日) 23:29:40 ID:???
As more readable alternatives to "&&" and "||" when used for control flow,
Perl provides "and" and "or" operators.

The short-circuit behavior is identical.
The precedence of "and" and "or" is *** much lower ***, however,
so that you can safely use them after a list operator
without the need for parentheses.
-- "perlop" man page
117nobodyさん:2006/03/05(日) 23:30:19 ID:???
演算子の優先順位を眺めてたら ... っていう演算子があるのを発見した。
この流れのおかげだ。
118nobodyさん:2006/03/05(日) 23:31:22 ID:???
>>117
/regexpA/ .. /regexpB/;
/regexpA/ ... /regexpB/;
下の時に使う奴だね。
119nobodyさん:2006/03/05(日) 23:45:42 ID:???
...は
/regexpA/ ... /regexpA/;
の時に初めて存在価値があるわけだが。
120nobodyさん:2006/03/06(月) 11:21:16 ID:???
初心者はすぐカッコつけるぅ
121nobodyさん:2006/03/06(月) 12:01:55 ID:???
初心者はまずカッコから入るべし
122nobodyさん:2006/03/06(月) 16:10:02 ID:???
↓ ギャッツビーつけて
123nobodyさん:2006/03/06(月) 17:03:49 ID:???
↑古い
124nobodyさん:2006/03/06(月) 19:32:55 ID:???
はい次
125nobodyさん:2006/03/06(月) 20:31:38 ID:???
俺?
126nobodyさん:2006/03/06(月) 22:27:03 ID:???
Perlでcoolなblogを作りたいと思っています
とりあえずActivePerlを入れて、blogのTopPageのDesignだけはCompleteしました
127nobodyさん:2006/03/06(月) 22:40:18 ID:???
そうですか。
128nobodyさん:2006/03/06(月) 23:31:12 ID:???
>125
そ、お前
何か質問無いの?
129nobodyさん:2006/03/07(火) 00:15:38 ID:???
特に。
130nobodyさん:2006/03/07(火) 00:26:19 ID:???
明日の夕飯のオカズ希望。
美味くて独創的なのがいい。
131nobodyさん:2006/03/07(火) 03:44:15 ID:???
カレー味のカップヌードルにお湯を麺が丁度浸る程度まで入れて5分ほど放置
余ったお湯を捨てる (捨てるお湯の量が多いと味が薄くなるから気をつける)
温泉卵をぶち込む
軽くかき混ぜて食す

( ゚Д゚)グラッチェ
132nobodyさん:2006/03/07(火) 07:11:14 ID:???
それは・・・オカズなのか?
133nobodyさん:2006/03/08(水) 10:57:35 ID:???
perl4なベタベタコーディングから抜け出せないヘタレです。
質問なのですが、たとえば、
@aray1 = ("abc","AAAabcBBB","CCCabcDDD","\n");
foreach $line (@aray1){
$line =~ s/abc/xxx/g;
push(@aray2,$line);
}
print join(":",@aray1);
print join(":",@aray2);
と書いた場合、
>abc:AAAabcBBB:CCCabcDDD
>xxx:AAAxxxBBB:CCCxxxDDD
と出力されると記憶していましたが、実際には、
>xxx:AAAxxxBBB:CCCxxxDDD
>xxx:AAAxxxBBB:CCCxxxDDD
と出力されました。perlのバージョンは5.8.7です。
ぐぐったりしてみたんですが、perl4から5に変わるときに、上のコードの場合で言うところの$lineが、配列@aray1の値が代入されるんじゃなくて、実体を参照するようになったような、そうじゃないような曖昧な情報しか見つけられませんでした。
配列の値が代入されるって言い切ってるサイトもあるし。だとすれば上のようなコードで@aray1の中身まで置換されるのおかしいし。

実際のところ、
・perl4からperl5に上がった時に変更になった
・元々そうだった
・その他(コード自体に問題あり)

どうなんでしょうか?
わかる方いらっしゃいますでしょうか?
134nobodyさん:2006/03/08(水) 11:29:56 ID:???
>>133
Perl4 の頃からそういう仕様だが。
<q cite="http://flex.ee.uec.ac.jp/texi/perl/perl_13.html#SEC32">
配列値が(配列値を返す expression ではなく)実際の配列の場合は、
ループの中で変数を変更することで配列要素を変更することができる。
</q>
135nobodyさん:2006/03/08(水) 13:05:53 ID:???
foreach $line (@aray1){
の行を下記2行に書き換えてごらんあれ
foreach (@aray1){
 my $line = $_;
136133:2006/03/08(水) 13:44:41 ID:???
>> 134
>> 135
早速の回答ありがとうございます。
そうですか…perl4時代から既にそうだったんですね…orz
自分の無知を恥じます。

ところで、となると、foreachは与えられた配列の個々の要素の値をスカラー変数に「代入する」という表現のwebが散見されますが、この表現は間違いということなんでしょうか?
137nobodyさん:2006/03/08(水) 13:46:53 ID:???
@hoge("a","b","c","d");

print "@hoge";
の時
a.b.c.d
みたいに間に「.」をいれて取り出したいんですがどのような書き方が最適でしょうか?
ご指導ご鞭撻のほどを
138nobodyさん:2006/03/08(水) 13:57:11 ID:???
print join('.', @hoge);
139nobodyさん:2006/03/08(水) 15:14:48 ID:???
>>136
正規のドキュメントと違う事を書いてる二次情報は間違いなんじゃない。
正規のドキュメントにツッコミ入れられるレベルの人なら書いた人に連絡
取るだろうし。

>>137
普通は >>138 のようにした方がいいけど
{ local $" = '.'; print "@hoge"; }
というやり方もある。
140nobodyさん:2006/03/08(水) 15:39:20 ID:???
ありがとうございます
続けざまで申し訳ないんですが
require 'cgi-lib.pl'
&ReadParse(*in)
@hoge = @in('a','b','c');
で@hogeの値を取った場合
もしa(@hoge[0])に値が入れられてなかったら,をいれないみたいな処理
はできるでしょうか?
>>138さんのやり方でやるってみたのですが
,b,c
みたいになってしまいます
141133:2006/03/08(水) 15:54:17 ID:???
>>139
おっしゃるとおりで。
探しやすさとか読みやすさにかまけて正規ドキュメントのチェックを疎かにしてた僕が居ましたYO!って感じです。
勉強になりました。
142nobodyさん:2006/03/08(水) 16:13:07 ID:???
perl5.8使ってるけど
>133みたく
foreach $aaa (@list){
ってやった場合、$aaaには実態じゃなくてリファレンスが入ってた
$aaaを別の値にしたら@listの内容も変った
143nobodyさん:2006/03/08(水) 19:09:21 ID:IC708NPT
現在掲示板を作っている者です。
投稿された内容を表示する際、
投稿内容にアドレスがあればそれをそのアドレス先のリンクに置き換えたいと思っています。
まず、投稿内容から"http://"を探して次にそのアドレスの終わりを見つけ
アドレスの最初から終わりまでを置換しようとしています。
投稿内容から"http://"はindexをつかって見つけることが出来たのですが、
どうすればアドレスの終わりを見つけるのかが分かりません。
どのようなにすればアドレスの最初から終わりまでの位置を見つけることが出来ますか?
144nobodyさん:2006/03/08(水) 19:19:45 ID:??? BE:152474393-
どうせ置き換えるんだからサブスティチュート使えばいいじゃん
145nobodyさん:2006/03/08(水) 19:30:45 ID:???
適当に正規表現でも使えばいいじゃん
146nobodyさん:2006/03/08(水) 19:48:33 ID:???
>>140
文法が怪し過ぎるので一から勉強し直してくれ。
http://www.site-cooler.com/kwl/perl/2.htm

@hoge = grep defined && length, @in{'a','b'.'c'};

>>142
「リファレンスが入っている」とはこういう状態を指すんだけど。
print "$_\n" for my @ref_array = \(0..9);
print "$_\n" for my @num_array = (0..9);

実体に「別名」を付ける時は「エイリアス」と表現する事が多い。
http://www.kt.rim.or.jp/~kbk/perl5.005/perlsyn.html#Foreach_Loops

>>143
http://www.din.or.jp/~ohzaki/perl.htm#AutoLink
147nobodyさん:2006/03/08(水) 21:45:07 ID:???
>146
あ〜そうそれ
エイリアスってやつ
言葉間違えたorz
148143:2006/03/08(水) 22:04:58 ID:IC708NPT
>>144-146
リンクに置換することが出来ました。
ありがとうございます。
149nobodyさん:2006/03/10(金) 14:44:19 ID:Uu8wqJhR
お願いします。

変数「$daylimit」にaaaa/bb/cc(またはaaaa/b/c)の形で日付が格納されています。
これを元にソートしたいのです。
そこで疑問が2つあります。
1.aaaa/bb/ccからスラッシュを抜く方法(aaaa/bb/cc→aaaabbccにする)
2.1月または1日などの10の位がない時に0を付け足す方法(aaaa/b/c→aaaa0b0c)
これはどのようにしたら良いのですか?
方法を教えてください。お願いします。
150nobodyさん:2006/03/10(金) 14:51:12 ID:???
sprintf "%04d%02d%02d", split "/", $daylimit;
ちなみに日付は文字列順になるから/は抜かなくてもおk
151ヽ(´ー`)ノ ◆.ogCuANUcE :2006/03/10(金) 14:53:34 ID:???
>>149

1. split('/', $daylimit)
2. sprintf('%04d%02d%02d', split('/', $daylimit))

sort する時は sprintf() した結果を cmp で比べるといい。
152nobodyさん:2006/03/10(金) 15:00:19 ID:Uu8wqJhR
すばやい解答ありがとうございます。

ということは、

$daylimit2 = sprintf('%04d%02d%02d', split('/', $daylimit)) ;

として、$daylimit2でソートしたらOKって事ですね。
ありがとうございました。
153nobodyさん:2006/03/10(金) 20:49:15 ID:???
質問した方も答える方も綺麗に終わると気持ちいいもんだね
154nobodyさん:2006/03/10(金) 20:55:15 ID:???
おしりだって洗ってほしい。
155nobodyさん:2006/03/10(金) 21:50:15 ID:??? BE:118591373-
あの世から純ちゃん降臨キタ━━━━━━(゚∀゚)━━━━━━!!!
156nobodyさん:2006/03/11(土) 01:02:36 ID:???
おねがいします
よくある商品を選んだら注文フォームに飛ぶHPを作りたいのですが
注文フォームで すでに商品名が入力済みの形を取っている
を実現したいのですが
よろしくお願いします

157nobodyさん:2006/03/11(土) 01:14:18 ID:???
だからなんだよ。何処までやってみて、何が出来ないのか具体的に書け。
158nobodyさん:2006/03/11(土) 01:24:04 ID:???
それはPerlの質問なのか?
type="text" なら、input のvalue に商品名入れな
159nobodyさん:2006/03/11(土) 01:32:55 ID:???
【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
「コマンドの意味がわかんない」とかはマニュアル見ましょう。
回答者さんは何でも屋じゃありません。

1: 自分はこういう事がしたい。
2: それでこんな風にやってみたが・・・
3: こんなエラーが出て上手く行かなかった。
160156:2006/03/11(土) 02:44:05 ID:???
すいません perl やる以前の問題でした
まずタグから勉強して出直してきます
161nobodyさん:2006/03/11(土) 03:03:59 ID:2NEkCx5l
WinXP で AvtivePerl 5.8.7 を使ってるのですが、
ソースに use encoding が入っていると、
デバッガ動かしたときに
「問題が発生したため、Perl Command Line Interpreter
を終了します。ご不便をおかけして申し訳ありません。」という
ポップアップが出てしまいます。
(-d 無しだと普通に動く)
インストールやりなおしたりしたんですが現象変わりません。
なぜ??
162nobodyさん:2006/03/11(土) 04:37:32 ID:???
AvtivePerl なんか使うひとはばかだから。
163nobodyさん:2006/03/11(土) 05:06:27 ID:???
>>161
バグデータベースにも登録されてる。
ttp://bugs.activestate.com/show_bug.cgi?id=39261
漏れは回避方法知らん。

>>162
参考までに貴方の開発環境をお聞かせ願いたい。
cygwinのperl?それともPCのOSにLinuxかBSD辺りを常用してるとか?
164nobodyさん:2006/03/11(土) 05:36:10 ID:???
多分NegativePerlとかだろ
165nobodyさん:2006/03/11(土) 05:42:46 ID:???
>>163
> 参考までに貴方の開発環境をお聞かせ願いたい。
> cygwinのperl?それともPCのOSにLinuxかBSD辺りを常用してるとか?

VMware とか colinux とか知らない馬鹿ワロス
166nobodyさん:2006/03/11(土) 06:04:34 ID:???
>>165
そうか、貴方はスクリプトを書いては一々仮想マシン上に移してテストしてるのか。
VMwareの共有フォルダ機能やSambaでも使って手軽にやってるのかな。
若しくは自動でFTP経由で変更分をアップロードするスクリプトでも組んでるか。
参考になった。ありがとう。
167nobodyさん:2006/03/11(土) 06:23:19 ID:???
>>166
> そうか、貴方はスクリプトを書いては一々仮想マシン上に移してテストしてるのか。
> 若しくは自動でFTP経由で変更分をアップロードするスクリプトでも組んでるか。

その機械に ssh なり何なりでログインして書くという方法もありますよ?
168nobodyさん:2006/03/11(土) 08:11:37 ID:???
>>166
冗談で言ってるんですか?
169nobodyさん:2006/03/11(土) 08:44:56 ID:???
>>168
釣れた釣れた
170nobodyさん:2006/03/11(土) 09:48:52 ID:???
ち ん ぷ ん か ん ぷ ん
171nobodyさん:2006/03/11(土) 11:10:44 ID:???
たまにスレがちょっと伸びてると思ったらprz
172nobodyさん:2006/03/11(土) 16:05:01 ID:???
my $mes=$form->Get('MESSAGE');
my $mail=$form->Get('mail');
my $adc;
my $randam=int(rand(15));

if ($randam < 1){ $abc = q| ☆☆☆☆☆ | }
elsif ($randam < 2) { $abc = q| ☆☆☆☆☆ | }
が15行です

☆の部分に最初は顔文字が入って、正常に動いてたのですが
日本語に入れ換えたらエラーが出てうまくいきません

日本語で30文字ぐらい(改行有り)赤色の文字色で表示させたいのですが、どのように記述したらよろしいでしょうか?
puleは全然わからない初心者ですがよろしくお願いします
173nobodyさん:2006/03/11(土) 16:18:52 ID:???
>>172
puleはヒドイ・・・
q|〜|は好きな記号をクォートにする構文。
この場合 | を使ってるので文字列中に | があれば問題になる。
sjis使ってるならこれらの文字の下位バイトも問題に。「−ポл掛弓芸旨酢掃竹倒怖掟」(一例)
q{〜}とかq!〜!とかq(〜)とかに変える。
あとはエラーメッセージの最後にエラー行載ってるからそれを参考に。
174nobodyさん:2006/03/11(土) 16:50:30 ID:???
>>172
初心者になってから来てください。ここは拾ったCGIの改造を手伝うスレとは違うので。
175nobodyさん:2006/03/11(土) 17:14:12 ID:???
あと必要最低限の英単語も覚えた方がいいと思う
酷すぎる
176nobodyさん:2006/03/11(土) 18:40:51 ID:???
ABCDEFGH
となっている文字列を
AB,CD,EF,GH
という風に二文字ずつでリストに展開するにはどうすればよいですか?
元の文字列は必ず偶数個です。
177nobodyさん:2006/03/11(土) 18:53:04 ID:???
$str = "ABCDEFG";
print join( ' | ' , split( /(..)/, $str ) );
とかしてみたんですが、結果が
| AB | | CD | | EF
となって変な感じです。
AB | CD | EF
となってほしいのですがうまくいきません。
178nobodyさん:2006/03/11(土) 18:54:15 ID:???
>>176-177
my $str = 'ABCDEFGH';
print join(',', $str =~ /../g), "\n";
print join(',', unpack '(A2)*', $str), "\n";
179nobodyさん:2006/03/11(土) 19:00:40 ID:???
うお、早い。
unpackでできました。
(A2)*なんてできたとは知りませんでした。
どうもありがとうございます。
180172:2006/03/11(土) 19:22:03 ID:???
>>173>>174>>175さん ありがとうございます

本当なんもわからないのですみませんです・・
見よう見まねで他のファイルと比べてみて適当にいじってしまいました。
少しネットで調べてみたのですが、初歩的なことがわかっていないため何がなになのかわからない状態です・・

>>173さん
sjisを使ってます。一例にあげてくださった文字や、文字列中にはlは使ってません
調べてみても良くわからなかったのですが、
文字化けする文字の後ろに「\」をつけたり「'」で文字列を挟んで対処するような?ことが載っていて
「'」で文字列を挟むことは試してみましたが駄目でした
あんま適当にいじっても良くないかな?試してません・・

レスを参考に少し勉強してみます・・
レスありがとうございましたm(_ _)m
181nobodyさん:2006/03/11(土) 20:02:53 ID:???
じゃあスクリプトをeucにするだけで解決する問題だろうね。
182nobodyさん:2006/03/11(土) 20:05:52 ID:???
>>180
エスケープの意味とやり方は覚えておかないと全く先に進めないと思う。
183nobodyさん:2006/03/12(日) 01:25:09 ID:???
なんかよくわからんけど、適当な法律でも作って、
MVC な cgi 以外配布禁止にしたらどうだろう。
184nobodyさん:2006/03/12(日) 02:24:37 ID:???
とりあえず鯖管にでもなって、use strictがないのは全部削除でw
185nobodyさん:2006/03/12(日) 03:08:46 ID:???
EUC-JP、UTF-8、Unicode以外のファイルも、テキストだろうがなんだろうがデリだな
186nobodyさん:2006/03/12(日) 05:59:43 ID:???
>>184
それだ!!
187172:2006/03/12(日) 09:02:35 ID:???
>>181>>182さん
昨日見た専門のサイトは、難しいことばかりで
何がなんだかさっぱりでした
皆様の助言は初心者の私でもわかりやすく
検索しやすくとても参考になります。

本当、ありがとうございました
188nobodyさん:2006/03/12(日) 10:16:50 ID:???
> 昨日見た専門のサイトは、難しいことばかりで

どこですか?
189nobodyさん:2006/03/12(日) 22:15:07 ID:???
\xA1[\xBC\xBD]
で「ー」と「−」を引っ掛けようと思っていたのですが、
なぜだか「−」のみ引っかかりません。

すみませんがご教示いただけますと幸いです。
190nobodyさん:2006/03/12(日) 22:56:12 ID:???
>>189
「−」は A1 DD じゃねーか?
191nobodyさん:2006/03/12(日) 22:59:51 ID:???
>>188
perlメモというサイトさんだったと思います
192nobodyさん:2006/03/12(日) 23:01:28 ID:???
[SHIFT_JIS]
「ー」\x81\x5B
「−」\x81\x7C

\x7Cは「|」

あとは調べられるよな
193nobodyさん:2006/03/12(日) 23:23:10 ID:???
>>192
ネタ?
194189:2006/03/12(日) 23:41:40 ID:???
説明不足ですね。すみません。

文字コードはEUCです。

ttp://72.14.203.104/search?q=cache:rjjAEg1ykyIJ:www.susono.com/~sohei/memo/memo/perl_euc.html+&hl=ja&gl=jp&ct=clnk&cd=1&lr=lang_ja
ここを参考に書いていたのですが、引っかからなかったので
質問させていただきました。

皆さんご教示有難うございます。
これから色々試してみて報告させていただきます。

一つお聞きしたいことがあるのですが、例えば今回のように
「−」と入力して「\x**」というように変換してくれるようなサイト等
があればご教示いただきたい次第です。
度重なる質問ですみません。
195190:2006/03/12(日) 23:50:59 ID:???
>>194
なんかそのサイトの記述が違ってるような。

'(?:\xA1[\xBC\xBD\xC1])' → ー―〜
'(?:\xA1[\xBC\xDD\xC1])' → ー−〜

だと思われ。
(真ん中の文字が微妙に違う)

> 「−」と入力して「\x**」というように変換してくれるようなサイト等
俺は UNIX で hd コマンドを使ってるけど、 Windows とかサイトはわかんない。すまん。
196nobodyさん:2006/03/12(日) 23:51:39 ID:???
> 「−」と入力して「\x**」というように変換してくれるようなサイト等

この程度のことを自分でやろうと思わないのなら、Perl のみならず、
あらゆるプログラム言語から手を引くべきだろうね。

また、仕事でやらされている状況なら、コンビニの店員のバイト、
もしくは、地面掘りの仕事に転職するべきかと。
197nobodyさん:2006/03/13(月) 00:02:18 ID:???
>>194
print unpack "H*", "−";
と書いたファイルをeucで保存して実行するだけ。
俺は文字コード表使ってるが。

>>196
初心者スレに居ると身体に悪いぞ。
198nobodyさん:2006/03/13(月) 00:02:57 ID:???
>>194
あるよ・・・俺の個人サイトに・・・
199nobodyさん:2006/03/13(月) 01:42:55 ID:???
>>195>>197
非常に参考になるアドバイス、誠に有難うございました。
後述しますが、おかげさまで変換プログラムで確認できる
ようになりました。
この場をお借りし御礼申し上げます。
文字コード表は後で探してみたいと思います。

>>196
おっしゃるとおりです。
返す言葉がございません。
反省点を踏まえ、プログラムを自分で作成してみました。


皆様の一つ一つのアドバイスを無駄にせぬよう、
自分でもできることをやってみました。
皆様には全く不必要のものかとは思いますが、今後私と
同じような問題を抱えた方がこのスレッドを見たときに少し
でも役に立てるよう、即席ではございますが変換プログラム
を作ってみました。晒しておきます。

ttp://whatever.say.jp/char_unpack.cgi
200nobodyさん:2006/03/13(月) 02:39:54 ID:???
晒すってのは、ソースコードを晒すことだぽ。

http://b.hatena.ne.jp/entrylist?url=http://whatever.say.jp%2F
http://b.hatena.ne.jp/entrylist?url=http%3A%2F%2Fwhatever.say.jp%2F&sort=eid

なんか興味深いね。
201nobodyさん:2006/03/13(月) 07:53:39 ID:???
>>199
お前・・・
202nobodyさん:2006/03/13(月) 09:08:48 ID:???
ttp://whatever.say.jp/
って閉鎖されてるようだけど何のHP?
203nobodyさん:2006/03/13(月) 09:48:40 ID:???
204nobodyさん:2006/03/13(月) 11:11:11 ID:???
発言からみると今まで文字コードなんて気にしなかったWindowsプログラマか
205149:2006/03/14(火) 11:00:15 ID:K408BhkZ
まいどです。>>149です。
前回どこよりもすばやく的確な解答を得ることができたので、またまた頼らせていただきます。

前回は「日付からスラッシュを抜きそれでソートする方法」等を教えていただいたのですが、それを別の場所でも利用しようと考えました。
データの自動非表示とでも言えばいいのかな?指定日になったら自動で一部データを非表示にするという物です。
考えとしては以下のような感じです。
1.表示非表示はチェックボックスで行う。チェックが入っていればその情報を表示という感じで。
もちろん、その変数は空白か1が入り、1ならcheckedとする。
2.CGIに良くありがちな日付取得より年月日を取得する。
3.掲載期限とシステム日付を比較し、「システム日付≧掲載期限」であれば表示チェックを空白にする
4.勝手に消えてくれてウマー
こんな感じです。
イベント情報掲載とか新譜発売情報なんかにも応用が利くんじゃないかと。
で、ない頭をフルに使って以下のようにやってみました。もちろんですが、元となるCGIや他のCGIから切り張りしたものです(;´∀`)
保存してある変数は、不必要だと思うものは消しちゃったので、上下でずれがあるかもしれませんが、脳内変換お願いします。

・・・
で、下にソース貼り付けたら文字数オーバーしたので、とりあえずここまで。
206149:2006/03/14(火) 11:00:39 ID:K408BhkZ
問題のソース・・・
----------------
sub check{
$cview2 = "";
&get_time;
open(IN,"$logfile") || &error("Open Error : $logfile");
@lines = <IN>;
close(IN);
  foreach $lines (@lines) {
  ($no,$year1,$month1,$day1,$name,$sub,$com,$cview,$climit〜〜) = split(/<>/,$lines);
  chomp;
  #日付チェック手順1 : 日付を変換
  if($climit){
    $climit2 = sprintf('%04d%02d%02d', split('/', $climit)) ;
    #日付チェック手順2 : 日付を比較
    if ($sysdate2 >= $climit2) {
     $_ = "$no<>$year1<>$month1<>$day1<>$name<>$sub<>$com<>$cview2<>$climit<>〜〜\n";
     print OUT $_;
    }#if閉じ
  }#if閉じ
  }#foreach閉じ
close(OUT);
}
----------------
しかし、変化無しです。「$cview」は1のままです。
ルーチンの実行はライブラリ読み込みの次ぐらいに行っているので、CGI実行で必ず動作するはずなのですが…

どこが間違っているのでしょうか?採点お願いします。
207nobodyさん:2006/03/14(火) 11:39:47 ID:???
$sysdate2 >= $climit2

int($sysdate2) >= int($climit2)
にしたらどうなる?
208149:2006/03/14(火) 11:48:44 ID:K408BhkZ
すばやい返答ありがとうございます。

>int($sysdate2) >= int($climit2)
うーん。変化無しです。

というか、変化しているかどうかがまったくわかんないですよね。
どうにかして変数などがちゃんと反映されているかって確認できないですかね?
209nobodyさん:2006/03/14(火) 11:50:57 ID:???
> 前回どこよりもすばやく的確な解答を得ることができたので、またまた頼らせていただきます。

仕事かよ。
210nobodyさん:2006/03/14(火) 11:52:11 ID:???
> どこが間違っているのでしょうか?採点お願いします。

採点を求めているわけだから、採点してあげればいいんだよね。
正常に動作するコードは不要と。
211nobodyさん:2006/03/14(火) 11:53:18 ID:???
> 4.勝手に消えてくれてウマー

藻前が勝手に消えてくれると(゚д゚)ウマー
212nobodyさん:2006/03/14(火) 12:11:21 ID:???
> 前回どこよりもすばやく

マルチだったのかよ
213nobodyさん:2006/03/14(火) 12:41:09 ID:???
もうこういうのはスルーしれ
214149:2006/03/14(火) 14:29:16 ID:K408BhkZ
もう春休み?
とりあえず、釣りかもしんないけど、マジで解答ほしいので、マジレスしてみる。

>>209
何ゆえその1行で仕事と判断?丁寧に記入するヤツはすべて仕事なの?
>>210
確かに、これはおかしい。ごめんね。採点じゃなくて、校正・訂正・指導、まぁ何でも良いけど、動くように教えてplz
>>211
あんたのような揚げ足取りが消えてくれた方が2chシステム的にはウマーだと思うが?
>>212
某Q&Aサイトで質問→解答なし。→質問削除→さらに別のQ&Aサイトで質問→有効回答なし。→質問終了→2chに書き込み→即日解答。しかもビンゴ!
どこがマルチよ?

厨房か工房かしらんが、言葉遣いもそれなりにあわせてみたよ。
215nobodyさん:2006/03/14(火) 14:39:37 ID:???
>>214
つ はてな掲示板「いわし」
216nobodyさん:2006/03/14(火) 14:52:48 ID:???
>>214
> 某Q&Aサイトで質問→解答なし。→質問削除→さらに別のQ&Aサイトで質問→有効回答なし。→質問終了→2chに書き込み→即日解答。しかもビンゴ!
どう見てもマルチです、本当に(ry
そういう場合は、ここで聞いたけど回答が無かったと、元の質問を示すのが慣例。
もしくは事前に断わるか。
217nobodyさん:2006/03/14(火) 14:58:34 ID:???
>>216
その言い分を真に受けるとすると、前の質問が close してから質問してるみたいだし、
そゆのはマルチとは言わないんじゃね?
218nobodyさん:2006/03/14(火) 15:03:25 ID:???
>>217
それなら「他のところで質問をしたけど答えが出なかった」だけでもいいから、
事前に断わるべきだろう。

答える奴だって人間だから、感じ悪いと思う奴だっているよ。
それぐらい、常識で判断してほしい。
219nobodyさん:2006/03/14(火) 15:20:15 ID:??? BE:433027049-#
> chomp;

これ何か意味あんのか。
つーかYahoo掲示板でも行けよカス
220nobodyさん:2006/03/14(火) 15:20:39 ID:???
>>218
事前に断りがあるかどうかは別にして、
>>212
>> 前回どこよりもすばやく
>マルチだったのかよ
この1行でマルチと決め付ける必要性も無いと思うがな

>>212 =>>218
だった場合、オマエに常識を語る資格はそうないと思われ
221nobodyさん:2006/03/14(火) 15:27:37 ID:???
>>220
違うけど。何勝手に決め付けてんの?
222nobodyさん:2006/03/14(火) 15:33:01 ID:???
>>205
質問だけ書いとけばいいのに余計な一言書くから・・・
223nobodyさん:2006/03/14(火) 15:40:35 ID:??? BE:108257033-#
この殺伐とした雰囲気最高だよな
馬鹿と馬鹿が煽り合ってんの
見てて楽しいからもっとやれよ
224nobodyさん:2006/03/14(火) 16:03:40 ID:???
と、馬鹿が申しております。
225nobodyさん:2006/03/14(火) 16:14:10 ID:???
>>222
そこを除いても殺意を覚えるのに十分な書き込み内容だと思うけどw

226nobodyさん:2006/03/14(火) 16:16:31 ID:???
>>225
2行目まで読んだので知らなかった
227nobodyさん:2006/03/14(火) 16:47:10 ID:???
こうして結局答えは出ないのでした。
228nobodyさん:2006/03/14(火) 16:54:23 ID:???
後の曹操である
229nobodyさん:2006/03/14(火) 17:04:47 ID:???
俺は >>205 が特に礼節を欠いているとも思わないし、
答えてあげたい気持ちは満々なのだが、
いかんせん質問の意味がさっぱりわからないので答えようがない。
230 ◆TWARamEjuA :2006/03/14(火) 19:55:18 ID:??? BE:2941439-#
本7?
231nobodyさん:2006/03/14(火) 20:12:03 ID:???
&autolink($comment)
こんな感じので、コメント中にURLが含まれる場合
そのURLへのリンクを作成して
表示される文字列はURLではなく
「外部リンク」とか任意の文字列にしたい場合はどのようにすれば良いのでしょうか?
232nobodyさん:2006/03/14(火) 20:28:50 ID:???
sub autolink {} の中を晒して下さい。
233nobodyさん:2006/03/14(火) 20:48:54 ID:???
autolink{}の中で =~ s/https?:\/\/〜/<a href="〜">$1</a>/gi みたくなってる部分があると思うが、
</a>直前の $1 とか $2 の部分を 外部リンク とでも書き換えてください
234nobodyさん:2006/03/14(火) 23:21:54 ID:???
なるほど、本7の仕業だったのか。
あいかわらずのスキルなんでつね。w
235nobodyさん:2006/03/14(火) 23:26:28 ID:???
本7って?
236nobodyさん:2006/03/14(火) 23:30:36 ID:???
>>235
uPD9aFm9hI でぐぐれ。
237nobodyさん:2006/03/14(火) 23:31:05 ID:???
色んな意味で有名になった人。
238 ◆aiY4htt2.2 :2006/03/14(火) 23:46:22 ID:??? BE:1961036-#
(´-`).。oO(こっちのトリップで遊んでいたよなぁ。。。)
239 ◆AnalSexRiQ :2006/03/15(水) 15:25:51 ID:???
こっちじゃね
240nobodyさん:2006/03/19(日) 10:45:53 ID:???
ちょっと質問。

$a = "あいうえおかきくけこ$x{'TEST'}たちつてとなにぬねの";
の場合と
$b = "あいうえおかきくけこ".$x{'TEST'}."たちつてとなにぬねの";
とか
$c = 'あいうえおかきくけこ'.$x{'TEST'}.'たちつてとなにぬねの';
って感じで連結するのはどれが一番お薦め?

連結をあまり好ましくないっぽい書き方してる書き込みを昔見た気がするので、
$aのやり方の方がいいのかなとも思ったけど、
負荷的にはなるべくシングルクォーテーション使ったほうがよさそうだしで、ちょっと迷ってまっす。
ひょっとしたら連結の方が負荷高かったりしたら元も子もないし・・・
241nobodyさん:2006/03/19(日) 11:08:41 ID:???
そんな意味不明なことせず、MVC な構成にするのがオススメ。
242nobodyさん:2006/03/19(日) 11:31:18 ID:???
>>240
適材適所です。
頑なに法則を守っていると可読性が落ちたりします。
速度を考えるなら、連結自体から見直せば良いかもしれません。
243nobodyさん:2006/03/19(日) 11:52:52 ID:???
スピード重視と言うことなら、Perl なんか使わずに
strcat しまくるべきだな。
244nobodyさん:2006/03/19(日) 12:12:44 ID:???
>>240
2番目と3番目は内部では全く同じコードとして実行される。
1番目との比較は、実装や環境に依存。
なので、自分の対象とする環境でベンチマークとりなされ。
245nobodyさん:2006/03/19(日) 12:50:57 ID:???
>>244
> 2番目と3番目は内部では全く同じコードとして実行される。

クオートの違いがあるので、全く同じであるはずがないと思われ。
246nobodyさん:2006/03/19(日) 13:26:25 ID:???
>>245
そう思うならコード覗いてみ
247nobodyさん:2006/03/19(日) 13:37:59 ID:???
ダブルクォートだと変数の判定もする分処理的には遅いんじゃないの?
248nobodyさん:2006/03/19(日) 14:01:44 ID:???
基本すらわかってない人間が質問に答えている糞スレはここでつか?

>>246
> そう思うならコード覗いてみ

で、どの部分で同じ処理をしているのか、具体的に提示してよ。
249nobodyさん:2006/03/19(日) 15:23:23 ID:???
RSSの取得がうまくいかない

ttp://allabout.co.jp/career/cgiperl/closeup/CU20050131A/index3.htm

ここ参考にしてそのままコピペしてもエラーになるのはなんで?
モジュールはちゃんとインストールされてる
250nobodyさん:2006/03/19(日) 15:47:58 ID:???
>>1

1: 自分はこういう事がしたい。
2: それでこんな風にやってみたが・・・
3: こんなエラーが出て上手く行かなかった。
251nobodyさん:2006/03/19(日) 15:56:26 ID:???
>>244-248
よーしパパ暇だから両者の言い分を解説しちゃうぞー

>>244の言い分
$ perl -MO=Terse -e 'qq[hoge].$x.qq[fuga]'
$ perl -MO=Terse -e 'q[hoge].$x.q[fuga]'
を見るとバイトコードレベルで行われる処理は同じである。

>>245の言い分
パーサが変数の展開を考慮しなくてはいけなくなるのだから、
""の方が必要な処理は多いはずだ。


で、5.8.7でバイトコードを覗いてみると、""はパース時に中に変数展開が
含まれていた場合のみ連結を行うバイトコードに変換されるので、
そんなに気にする必要はないと思われる。古いバージョンではどうか知らないけど。
それよりも可読性等を重視するべきだと思う。
252nobodyさん:2006/03/19(日) 16:03:07 ID:???
> よーしパパ

こんな古い言葉使ってる老人って・・・。
253nobodyさん:2006/03/19(日) 17:56:12 ID:???
なるほどねー。
\"でエスケープした場合も実は対して気にするレベルじゃ無さそうなのかな。
254nobodyさん:2006/03/19(日) 17:59:18 ID:???
そもそも文字列処理の速度で悩むような案件に perl なんか使うのかなぁと思う。
255nobodyさん:2006/03/19(日) 18:10:48 ID:???
でも規模が大きいとか、処理が重いとか、ゲームCGIだったりとかで、
負荷が馬鹿にならないレベルだと、ちょっとの差が大きな違いになりそうじゃない?
256nobodyさん:2006/03/19(日) 18:12:55 ID:???
あと、セキュリティの問題からmod_php使ってるレン鯖は少ないらしいから、
モジュール同士、CGIで動作のどちらでやっても速度はperl>phpになるだろうし、
perl以外に良い選択肢ってそもそも有るんだろうか。
Cは流石にだるいし。
257nobodyさん:2006/03/19(日) 18:15:33 ID:???
お前らおもしろいな
258nobodyさん:2006/03/19(日) 18:15:59 ID:3oCqRbiL
ならない。
259nobodyさん:2006/03/19(日) 18:22:14 ID:???
>セキュリティの問題からmod_php使ってるレン鯖は少ないらしいから、

phpは軽い早いって嘘って事?
260nobodyさん:2006/03/19(日) 18:27:56 ID:???
> 負荷が馬鹿にならないレベルだと、ちょっとの差が大きな違いになりそうじゃない?

大きな違いがある場所では、xs とか書けばよいのでは?
んで、そんなものを鯖 1 台でさばくんかね?

> phpは軽い早いって嘘って事?

一部嘘かもね。ぐぐればいろいろベンチあるぞ。
261nobodyさん:2006/03/19(日) 18:36:18 ID:???
" と ' の速度差とかに気を遣う暇があったらもっと有意義なところに頭を使うべき。
262nobodyさん:2006/03/19(日) 18:46:28 ID:???
ま、初心者でもできると言う意味じゃお手軽だし別に気にしてもいいとは思うがねw
263nobodyさん:2006/03/19(日) 18:49:15 ID:???
あらかじめバイトコードに変換しときゃ同じだしな。
perlcc -B
264nobodyさん:2006/03/19(日) 21:10:06 ID:???
別に制限されるものでもないし、やりたいならやれば?
ただ、眉毛剃ると空気抵抗が減って走るの早くなるよ、
ってのと同じレベルの話なわけだが。
まぁ、初心者でもできるしお手軽だわなw
265nobodyさん:2006/03/19(日) 21:11:40 ID:???
意味のない煽りばかりですね
266nobodyさん:2006/03/19(日) 21:22:33 ID:???
水泳選手はすね毛とかの体毛全部剃るけどなw
267nobodyさん:2006/03/19(日) 21:27:36 ID:???
で、水泳初心者がすね毛とかの体毛全部剃るのに意味があるのかと
268nobodyさん:2006/03/19(日) 21:28:35 ID:???
きもちぃぞ
269nobodyさん:2006/03/19(日) 21:41:19 ID:???
>>268
結局、そういうことだよね。

' ' の方が速くなる気がして気持ちぃー (気のせい) って香具師はそうすりゃいいし、
開発効率&可読性を取るぜー (現実的) って香具師はそうすりゃいい。
270nobodyさん:2006/03/19(日) 21:42:41 ID:???
ぶっちゃけ可読性は変わらない気がする。
どうせ色分けしてるし。
271nobodyさん:2006/03/19(日) 21:48:41 ID:???
春だな
272nobodyさん:2006/03/19(日) 21:56:33 ID:???
ああ春だ
273nobodyさん:2006/03/19(日) 22:00:31 ID:???
と言い出す人が春真っ盛りの場合が多いです
274nobodyさん:2006/03/19(日) 22:29:27 ID:???
それはそうかも
275nobodyさん:2006/03/19(日) 22:33:21 ID:???
> あらかじめバイトコードに変換しときゃ同じだしな。
> perlcc -B

こういう運用ってしてるの見たことがないなぁ。
276nobodyさん:2006/03/19(日) 22:39:47 ID:???
mod_perl使えってことでは
277nobodyさん:2006/03/19(日) 22:47:43 ID:???
> あらかじめバイトコードに変換しときゃ同じだしな。
> perlcc -B



> mod_perl使えってことでは

が同値であるということにしたいのですか?

278nobodyさん:2006/03/19(日) 22:55:36 ID:???
、ということにしたいのですね
279nobodyさん:2006/03/19(日) 22:55:54 ID:???
>>275
mod_perlも用意してなかった環境でチャットスクリプトを動かすときに一度だけ実際にやったことがある。
もう忘れたけどtimeを取ってみたら確か200ms位が80ms位になったと思った。
280nobodyさん:2006/03/19(日) 22:57:07 ID:???
>>256
ヒント:海外鯖
つか日本でもいっぱいあるのにな。
281nobodyさん:2006/03/19(日) 23:04:07 ID:???
>>279
ふーん。
282nobodyさん:2006/03/20(月) 05:37:24 ID:???
>>280
他の人のデータ見れちゃうのにいいの?
自分のも見られちゃうよ?
283nobodyさん:2006/03/20(月) 10:59:07 ID:???
>>282
mod_php = 他の人のデータ見れちゃう
という事なのですか?
284nobodyさん:2006/03/20(月) 11:06:50 ID:???
ユーザごとに apache を独立して動かせば問題ないよ。
285nobodyさん:2006/03/20(月) 11:19:22 ID:???
ユーザーごとにマシンを独立して割り当てればもっといいよ。
286nobodyさん:2006/03/20(月) 11:32:49 ID:???
それ何て専用サーバ?
287nobodyさん:2006/03/20(月) 12:26:15 ID:???
mod_perlとmod_phpの区別がついていない奴がいるな。
288nobodyさん:2006/03/20(月) 12:34:37 ID:???
open FILE,"<","hoge.cgi";

open FILE,"< hoge.cgi";
の違いはないみたいだけど正しいのはどっち?
289nobodyさん:2006/03/20(月) 13:19:12 ID:???
>>288
つ perldoc -f open
290nobodyさん:2006/03/20(月) 16:59:39 ID:f3pQ7Duw
すみません、お聞きしたいのですが、

24時間(0時)に一度処理を行うというcgiを作りたいのですが、
どうすればいいでしょうか?

多分スレッドなどを使うことになるとは思うのですが、
その処理が動いている間は、同じ処理が二重で動かないようにしたいです。

シーケンスとしては以下のようなものをイメージしているのですが・・・。

main {
ボタンを押す;
if(既にスレッドが立ち上がってなかったら){
スレッドで th 実行;
}else{
print "既に起動中です。";
}
}

sub th{
while(1){
if(0時になったら){
処理実行;
}
}
}

よろしくお願いします・・・m(_ _)m
291nobodyさん:2006/03/20(月) 17:04:05 ID:???
>>290
つ cron
292nobodyさん:2006/03/20(月) 17:14:33 ID:f3pQ7Duw
>>291
どもです!

すみません、環境を書いていませんでした・・・。
環境が開発がWindows環境で、実際に稼動させるのがLinuxなんですよね。
テストの面などからできれば、環境に依存しない方法はないでしょうか?
293nobodyさん:2006/03/20(月) 17:18:02 ID:???
Windows でも cron 使えますよ。
ただ、あなたの現状では使えるようになるまで莫大な時間を要するでしょうけど。
294nobodyさん:2006/03/20(月) 17:26:03 ID:???
Windows なら「タスク」とかも使えるんじゃないかな。
いずれにしろCGI&スレッドでやるべき仕事じゃあないでしょ。
295nobodyさん:2006/03/20(月) 17:28:55 ID:???
> テストの面などからできれば、環境に依存しない方法はないでしょうか?

ってことで、

> Windows なら「タスク」とかも使えるんじゃないかな。

ってのはだめだとおもう。
296nobodyさん:2006/03/20(月) 17:30:39 ID:???
cgiでやるべき仕事じゃないと言うけど、
アクセスした時にtimeで時間取得して、設定時間以上経ってたら
実行+次回の実行時間(全開の実行時間+間隔)に書き換えでダメなん?
297nobodyさん:2006/03/20(月) 17:32:24 ID:???
> アクセスした時にtimeで時間取得して、設定時間以上経ってたら
> 実行+次回の実行時間(全開の実行時間+間隔)に書き換えでダメなん?

それって、0 時に複数のアクセスがあった場合どうなる?

やっぱ初心者が初心者の質問に初心者知識で答えるスレだね。
298nobodyさん:2006/03/20(月) 17:38:18 ID:???
まず、実行予定時間の書き換えしてから、引き続き処理なら問題なさそうに感じるけど、
そんなにシビアに考えないといけないもの?
299nobodyさん:2006/03/20(月) 17:41:52 ID:???
>>298
> まず、実行予定時間の書き換えしてから、引き続き処理なら問題なさそうに感じるけど、

nfs 上にファイルがあったらどうなるだろう。
300nobodyさん:2006/03/20(月) 17:47:20 ID:???
nfs使った事無いのでどんな影響が出るかはいまいち判らないや。
だけど、考慮しないといけないものなの?
普通にデータをtmpに出力して入れ替えるなら気にしなくて良さそうに感じるけど。
301nobodyさん:2006/03/20(月) 17:48:10 ID:???
感じるのは自由です。
302nobodyさん:2006/03/20(月) 17:50:41 ID:???
どんな問題があるのか説明希望ー!
303290:2006/03/20(月) 18:30:28 ID:f3pQ7Duw
うーむ。なかなかムズかしそうですねぇ・・・困った・・・。

>>296
>>298
の両氏のやり方でも、機能上は構わないと思うのですが、
なんかお客さんにケチつけられそうなので、
できればユーザー任せなやり方は避けたいのです。

また>>297氏のようなパターンも考えなくてはいけないので・・・。
304nobodyさん:2006/03/20(月) 18:37:31 ID:???
>>303
藻前が VMware Player で実験環境作れば済むはなししではないよね。
Perl on Windows なり Cygwin でどれだけ工夫するかってのが争点だもんね。w
305nobodyさん:2006/03/20(月) 19:59:01 ID:???
データには前回実行した日付を記録
アクセスがあったときにファイルロックする
データファイル読む
実行時日付と前回の日付が異なれば実行
処理
ロック解除


普通の処理ジャマイカ
306nobodyさん:2006/03/20(月) 21:47:27 ID:???
1 日一回の処理のために毎回ロックとかウケル。
307nobodyさん:2006/03/20(月) 21:48:19 ID:???
それのどこがPerlのコーディングに関する質問なんだ?
そんなことも判断できない奴に委託しているとは、客が可哀想すぎる。
308nobodyさん:2006/03/20(月) 21:57:43 ID:???
>306
その一回の処理のときに複数実行されたらどうすんだヴァカ
309nobodyさん:2006/03/20(月) 22:02:30 ID:???
>>308
もの凄い馬鹿はスルー汁
310nobodyさん:2006/03/21(火) 00:35:15 ID:???
>>297
>>299
いよう、久しぶり。
311nobodyさん:2006/03/21(火) 02:12:17 ID:???
凄い難癖のつけ方だったな。
説明希望されると居なくなったし。
312nobodyさん:2006/03/22(水) 16:11:05 ID:1dP8qtcF
Catalyst 5.66 をインストールして、チュートリアル通りにテストスクリプトを作成。
テストhttpサーバ上では問題なく動作したのですが、apacheで動作させようとしたところ
Internal Server Error が出ます。

原因は ./script/app_cgi.pl を起動すると

Use of uninitialized value in string ne at /Library/Perl/5.8.6/Catalyst/Engine/CGI.pm line 63.
Use of uninitialized value in numeric eq (==) at /Library/Perl/5.8.6/Catalyst/Engine/CGI.pm line 83.
Use of uninitialized value in pattern match (m//) at /Library/Perl/5.8.6/Catalyst/Engine/CGI.pm line 128.

がContent-type より先に出力されている模様。。。

どうすればこの「Use of uninitialized value」消せますか?教えてエロ委人。
313nobodyさん:2006/03/22(水) 19:12:48 ID:???
-W 付で実行してないかい?

もし -W で動作したいなら CGI.pm の該当行の初期化されてない変数への参照部分を
書き換えてやればいいかと思う
314nobodyさん:2006/03/22(水) 19:53:47 ID:???
-w外せば出なくはなると思うが、該当行を見た感じ
これらの環境変数が渡ってこないapacheも珍しい
気がする。

63 last PROXY_CHECK if $ENV{REMOTE_ADDR} ne '127.0.0.1';

83 if ( $ENV{SERVER_PORT} == 443 ) {

128 last PROXY_CHECK if $host !~ /localhost|127.0.0.1/;

$hostの値を入れてるのは

113 my $host = $ENV{HTTP_HOST} || $ENV{SERVER_NAME};

実行環境おかしくない?
315nobodyさん:2006/03/22(水) 20:12:30 ID:???
もしかして・・・コンソールでテストしたとか?
316nobodyさん:2006/03/22(水) 20:37:57 ID:???
みんなで、Catalyst 使って遊ぼうぜ。

317nobodyさん:2006/03/22(水) 22:05:59 ID:???
警告はSTDERRに出るので、apacheのエラーログに書かれるだけだし、
internal server errorになってる原因は別にあると見た。

apacheのエラーログをちゃんとさらした方が回答つきやすいと思われる。
コンソールで実行してもいいけどうまく環境あわせて作ってやらないと
意味ないよ。
318nobodyさん:2006/03/23(木) 18:41:32 ID:b3UifQ+V
<weblog1>
<weblog name="ほげ山ほげ男" url="http://hoge.com" where="saitama" />
<weblog name="ほげ川ほげ子" url="http://hoge.com/hoge/hoge.html" where="nagano" />
<weblog name="ほげ本ほげ太" url="http://hoge.com/hoge3/hoge.html" where="gunma" />
</weblog1>

↑から、name(氏名)とurlのみを抽出するようにするにはどのように書いたらよいでしょうか?

具体的には、一行ごとに読み込んで↓のような形にしたいのですが。
ほげ山ほげ男 → http://hoge.com<br>
ほげ川ほげ子 → http://hoge.com/hoge/hoge.html<br>
ほげ本ほげ太 → http://hoge.com/hoge3/hoge.html<br>
319nobodyさん:2006/03/23(木) 19:07:35 ID:???
/<weblog name="(.*)[^"]" url="(.*)[^"]" where="(.*)[^"]" \/>/i
$weblog_name = $1;
$weblog_url = $2;
$weblog_where = $3;

すげぇ適当w
320nobodyさん:2006/03/23(木) 20:28:26 ID:???
>>319
初心者乙。
321nobodyさん:2006/03/23(木) 20:35:16 ID:???
>>318
#!/usr/bin/perl
m|^\s*<weblog\s+name="([^"]*)"\s+url="([^"]*)"\s[^>]*/>|
  && print "$1 → $2<br>\n" while <DATA>;
__DATA__
<weblog1>
<weblog name="ほげ山ほげ男" url="http://hoge.com" where="saitama" />
<weblog name="ほげ川ほげ子" url="http://hoge.com/hoge/hoge.html" where="nagano" />
<weblog name="ほげ本ほげ太" url="http://hoge.com/hoge3/hoge.html" where="gunma" />
</weblog1>
322318:2006/03/23(木) 20:36:55 ID:???
属性が増えたら、そのたびに正規表現書き換えるんでしょうか?
馬鹿ばっかりですね。ここ。
323nobodyさん:2006/03/23(木) 20:39:22 ID:???
>>322
だったら書き込むな
324nobodyさん:2006/03/23(木) 21:18:14 ID:??? BE:252599437-#
この流れwebprogらしくてイイヨイイヨー
325nobodyさん:2006/03/23(木) 21:54:35 ID:???
>>322はニセじゃないの?

長くてもいいんならホレ
while (<DATA>) {
@pair = split / /;
foreach (@pair) {
s/"//g;
($name, $value) = split /=/;
print "$value → " if ($name eq "name");
print "$value<br>\n" if ($name eq "url");
}
}
exit;
__DATA__
<weblog1>
<weblog name="ほげ山ほげ男" url="http://hoge.com" where="saitama" />
<weblog name="ほげ川ほげ子" url="http://hoge.com/hoge/hoge.html" where="nagano" />
<weblog name="ほげ本ほげ太" url="http://hoge.com/hoge3/hoge.html" where="gunma" />
</weblog1>
326nobodyさん:2006/03/23(木) 21:59:32 ID:???
なんで素直にXML*を使わないのかと小一時間
327nobodyさん:2006/03/23(木) 23:05:38 ID:???
素直にXML*を使ったお手本を書けば、
わざわざ小一時間かけなくともすべて解決なのでは。
328nobodyさん:2006/03/23(木) 23:07:22 ID:???
それだとXMLLLLLLとかにしかマッチしないからです。
329nobodyさん:2006/03/23(木) 23:19:38 ID:???
お前らホントに小学生レベルだな



俺は幼稚園児だから、このスレの内容は役に立つぜ
330nobodyさん:2006/03/24(金) 00:14:01 ID:???
>>329
331ヽ(´ー`)ノ ◆.ogCuANUcE :2006/03/24(金) 00:14:44 ID:???
use XML::Simple;

my $xml = XMLin('test.xml');
my %hash = map { $_ => $xml->{'weblog'}->{$_}->{'url'} } keys %{$xml->{'weblog'}};

これでいいんか。
332nobodyさん:2006/03/24(金) 01:37:23 ID:???
ごめ
普通に読めません
解説おながいm(_ _)m
333ヽ(´ー`)ノ ◆.ogCuANUcE :2006/03/24(金) 04:53:24 ID:???
解説も何も、XML::Simple 使ってるだけなんだが…。
何が分かんないの?
334nobodyさん:2006/03/24(金) 07:11:35 ID:???
なにがわかんないのかわかんない。
335nobodyさん:2006/03/24(金) 08:44:36 ID:???
while(<DATA>){
/^<weblog .*\/>/ or next;
my ($name) = /name="([^"]+)"/;
my ($url) = /url="([^"]+)"/;
print "$name → $url<br>\n";
}

こんなのでいいじゃん。
336nobodyさん:2006/03/24(金) 14:43:34 ID:???
WebProgってモジュール使えない奴ばっか
337nobodyさん:2006/03/24(金) 15:23:55 ID:FdXgD3At
$num = 200 * 0.575;
print "A:".$num."\n";
$num = int($num);
print "B:".$num."\n";

上記のスクリプトの出力が
A:115
B:114
になってしまうのですが
どうしてでしょうか?
338ヽ(´ー`)ノ ◆.ogCuANUcE :2006/03/24(金) 15:33:13 ID:???
>>337
そういうもん。これが一番良くまとまってるかな。
ttp://d.hatena.ne.jp/babie/20051212
339337:2006/03/24(金) 15:40:10 ID:FdXgD3At
>>338
サンクスです
use Math::BigFloat;
を使うことにしました
340nobodyさん:2006/03/24(金) 16:27:21 ID:vZMLwEvx
# ここは shift じゃないとダメ。
my $random_code = shift @lines;
chomp $random_code;

# 投稿コードとログのコードを比較して合ってなければ
if ($FORM{'submit_code'} ne $random_code) {
&Error("Error: あなたの直前に書き込んだ人がいるため,投稿コードが更新されています。<BR>リロードしてからもう一度書き込んで下さい。");
}

# 新しい投稿コードを生成。srand は既にやってあるので省略
my $new_random_code = int(rand(100000));

これをkentweb対応にしたいんだけど何処を変えればいいんですか?
教えてください。
341nobodyさん:2006/03/24(金) 17:25:06 ID:???
kent に教えてもらうと良いと思われ。
342長猫@MFC屋さん:2006/03/25(土) 00:17:26 ID:???
>>340
直すポイントは3つです。

1.書き込みをログファイルに保存するとき
 ⇒ログファイルの先頭行に、ランダムな文字列の行(これを投稿コードとします)を保存するようにして下さい。

2.書き込みを画面に表示するとき
 ⇒ログファイルの先頭行から1.のランダムな文字列の行(投稿コード)を読み出し、
 入力フォーム内にhiddenパラメータとして埋め込んで下さい。

3.書き込み実行して、フォーム内容をチェックするとき
 ⇒ログファイルの先頭行から投稿コードを読み出し、
 2.で入力されたhiddenパラメータと一致するか判定して下さい。
 一致しなかったら
 "Error: あなたの直前に書き込んだ人がいるため,投稿コードが更新されています。
 リロードしてからもう一度書き込んで下さい。"
 等のエラー画面を表示するようにして下さい。
 一致したら、また新たな投稿コードを作成して、ログファイルの先頭行に保存して下さい。

以上。
343nobodyさん:2006/03/25(土) 05:40:14 ID:???
<FORM method="POST" action="xxx.cgi">
・ほにゃらら
<input type="test" name="ほにゃらら" size="30" value="">
</FORM>
-----------------------------------------
shtml(SSI)に、フォームメールのスキンを書いてます。
<!--#echo var="環境変数"-->これを、valueの中に
入れたいんですが、そのまま書いたらエラーでました。
perlだとvalue=$ENV{'環境変数'}でいけるんですが。
よろしくお願いします。
344nobodyさん:2006/03/25(土) 06:34:14 ID:???
>>343
それ、Perl の質問じゃなくて SSI の質問じゃん。スレ違い。
345nobodyさん:2006/03/25(土) 12:00:18 ID:???
しかも、そんなことやったら、漏れみたいな XSS 指摘厨にさわがれる罠。
346nobodyさん:2006/03/26(日) 21:51:04 ID:???
>>251
わぁ、ぱぱ凄いやぁ
347nobodyさん:2006/03/28(火) 12:50:58 ID:???
月曜日質問なかったのか
348nobodyさん:2006/03/28(火) 16:29:29 ID:giiJxdDY
<input type=checkbox name=ch1 value="1,">あ
<input type=checkbox name=ch2 value="2,">い
<input type=checkbox name=ch3 value="3,">い
<input type=checkbox name=ch100 value="100,">ん

このような感じで沢山のチェックボックスを元に、formでPOSTした時、
チェックされている全てのチェックボックスのvalue値を繋げて、
"1,2,3,4,〜100,"のような形で、$strにいれたい場合、
$str = $in{'ch1'}.$in{'ch2'}.$in{'ch3'}.…$in{'ch100'};
のような表記しかないのでしょうか?

チェックボックスの数は変動するので、
forを使って、もっと綺麗に書けないものかな?と、思いましたので。
349nobodyさん:2006/03/28(火) 16:41:50 ID:???
>>348
そこまで解ってるならなぜ書けない…
$str = '';
$str .= $in{"ch$_"} for 1..100;
350nobodyさん:2006/03/28(火) 16:50:44 ID:???
チェックボックス数の変動に影響されないように、と思って書いてみたら
$str = join "", map $in{$_->[0]}, sort {$a->[1]<=>$b->[1]} map [$_,/(\d+)/], grep /^ch\d+/, keys %in;
うざくなった・・・orz
351nobodyさん:2006/03/28(火) 17:33:05 ID:???
ちゃんとインデントして書けば、そんなにウザくなくね?
352nobodyさん:2006/03/28(火) 17:50:12 ID:???
倒置の書き方って結構覚えておくとお得?
解説してるサイトが結構少なくて、コード見てなんとなく判るようにはなったんだけど、
基本がなってないからちょっと不安だったり。
353nobodyさん:2006/03/28(火) 18:13:47 ID:???
倒置って何?
354nobodyさん:2006/03/28(火) 18:30:55 ID:???
オレオレ用語
355nobodyさん:2006/03/28(火) 20:08:02 ID:???
print "hoge" if $a;
って感じ?
356nobodyさん:2006/03/28(火) 22:34:04 ID:???
print "$_\n" foreach (@array);
とかね。

Perlの旨味がホンのちょっとだけど染みこんでると最近感じるようになった。
357nobodyさん:2006/03/28(火) 22:36:22 ID:???
foreach
358nobodyさん:2006/03/28(火) 23:34:57 ID:???
後置のことか
359nobodyさん:2006/03/29(水) 05:38:58 ID:???
>>356
括弧を書いてるならまだホントの旨みを味わってない。
Perlの真骨頂は如何に少ないタイプでコーディングするかにある。
360 ◆aiY4htt2.2 :2006/03/29(水) 06:59:27 ID:??? BE:1743528-#
あーはいはい♪
361nobodyさん:2006/03/29(水) 07:17:11 ID:???
> print "$_\n" foreach (@array);

ふつー print join("\n", @array);
362nobodyさん:2006/03/29(水) 07:53:09 ID:???
>>361
反論しようと思ってベンチ取ったらjoinの方が三倍近く速かった(´・ω・`)
363nobodyさん:2006/03/29(水) 07:59:38 ID:???
{local $,="\n";print @array}
364nobodyさん:2006/03/29(水) 10:01:43 ID:???
>>361
先生!最後の要素が Zsh のプロンプトに喰われました!
365nobodyさん:2006/03/29(水) 11:08:43 ID:???
よく分からんが
つ\n
366nobodyさん:2006/03/29(水) 12:10:29 ID:???
いや、そういうことじゃなくて、等価でないものを「ふつー」と言われてもなあ、という話。
367nobodyさん:2006/03/29(水) 13:40:08 ID:???
最後の改行ぐらい自分で付け足せよ、という話し。
368nobodyさん:2006/03/29(水) 13:52:08 ID:???
じゃあ print "$_\n" foreach (@array); の方がシンプルで良いじゃん。あほらし。
369nobodyさん:2006/03/29(水) 13:53:27 ID:???
無駄な文字列生成しないしな。
370nobodyさん:2006/03/29(水) 14:09:04 ID:???
>>368
本気でそう思ってるのか?考え方の矯正をお薦めする。
遅いし、printを繰り返すし、無駄な変数使うし、良いとこなしだ。
レス返されてムキになってる訳じゃなくて、それが素の考え方ならある意味凄い。
371nobodyさん:2006/03/29(水) 14:11:52 ID:???
>>362
うちなんか16倍も差が出たよ。
こんだけ早いならjoin使おうかな・・・
ちなみに下の2つでは微妙にmapのが早かった。
print "$_\n" for @array;
print map "$_\n", @arrray;
372nobodyさん:2006/03/29(水) 14:23:46 ID:???
>>370
じゃあ、最後の "\n" がはみごになるのは気持ち悪くないの?
これが自然と思うのが Perl 流だというのなら仕方ないけど、
俺はものすごく気持ち悪くて仕方がない。
373370:2006/03/29(水) 14:30:31 ID:???
>>372
確かに気持ち悪い。でも、組み込み関数を使えるところは使うのが基本だし、
その一つとさっき挙げた数点を比べたら、その一つの点の為に他を犠牲にすることは出来ない。
374nobodyさん:2006/03/29(水) 14:40:23 ID:???
363の出した$,が最速だと思うのだが...
375nobodyさん:2006/03/29(水) 14:41:08 ID:???
うーん、そういうもんかね。
俺なら、例え 16倍も速度差が出たとしても、
本当にそこがボトルネックで困っているようなケースでないのであれば、
読み下せて意味が明確でわかりやすい方を取るけどな。
376nobodyさん:2006/03/29(水) 14:46:11 ID:???
# 投稿コードチェック
if ($regist_key) {
$cd = $in{'code'};
$cd =~ s/\D//g;
if ( $cd =~ m/^\d{5}$/ ) {
$les = $addr;
$les =~ s/\D//g;
$les =~ /^(\d{5})(\d+)/;
$les = $1;
$cod = $cd + $les;
$cod =~ /^(\d{4})(\d+)/;
$cod = $1;
}
if ($cod ne $in{'regikey'}) { $err .= "投稿コードが不正です。<br>"; }
}
377376:2006/03/29(水) 14:47:57 ID:???
上の続き
# 投稿コード作成
sub key_image {
@num = (0 .. 9);
srand;
foreach (1 .. 5) {
$regikey .= $num[int(rand(@num))];
}
$les = $addr;
$les =~ s/\D//g;
$les =~ /^(\d{5})(\d+)/;
$les = $1;
$nu = $regikey + $les;
$nu =~ /^(\d{4})(\d+)/;
$nu = $1;
# テキストコード表示
print "<input type=text size=5 value=$nu>\n";
}
この中に使われない物は入ってます?
378nobodyさん:2006/03/29(水) 14:51:18 ID:???
1,a,林檎
2,a,梨
3,b,西瓜
4,b,イチゴ
5,a,桃

のようなtest.txtというファイルを元に、
2つめの項目がaのを抜き出し表示する為に、


open(IN,"test.txt") || &error("Open Error: $logfile");
while (<IN>) {
    ($no,$type,$name) = split(/,/);
    if ($type eq 'a') {
    print "$name<br>\n";
}
}
close(IN);

とwhileで全行回すしかないのでしょうか?
379nobodyさん:2006/03/29(水) 16:36:14 ID:???
>>378
正規表現やgrep等でもOK。

my $in = join( '', <> );
my @result = $in =~ /^\d+,a,.*$/gm;

my @in = <>;
my @result = grep { /^\d+,a,.*$/ } @in;

文法チェックもしてないけど、こんな感じで。
1つめの1行目は、my $in; { undef $/; $in = <>; }
とかの方が丁寧だけど。
380nobodyさん:2006/03/29(水) 16:38:19 ID:???
>>379
あ、1個目
- my @result = $in =~ /^\d+,a,.*$/gm;
+ my @result = $in =~ /^(\d+,a,.*)$/gm;
だった。
他にも間違ってるとこあるかも。
381nobodyさん:2006/03/29(水) 17:20:47 ID:???
でもそれって全部メモリに読んじゃうよね?

382nobodyさん:2006/03/29(水) 18:46:24 ID:???
今時メモリちびちびつかってどうするのかと。
383nobodyさん:2006/03/29(水) 19:24:01 ID:???
640KBしか積んでないんだよ
384nobodyさん:2006/03/29(水) 19:54:55 ID:???
>>374
100万回でチェック
push (@array, rand) for (1..100000);
print "$_\n" foreach @array; ### 0.91 CPU [3]
print join "\n", @array; ### 0.54 CPU [2]
local $, = "\n"; print @array; ### 5.11 CPU [5]
print map "$_\n", @arrray; ### 0.39 CPU [1]
print $_, "\n" foreach @array; ### 0.93 CPU [4]

local $,が目立って遅かった…
385nobodyさん:2006/03/29(水) 20:27:02 ID:???
>>384
まさかとは思うけどベンチマークの測り方知ってるよね
386nobodyさん:2006/03/29(水) 20:58:58 ID:???
>>385
まさかとは思うけど、知らずに煽ってないよね?
387nobodyさん:2006/03/29(水) 21:02:09 ID:???
>>386
知ってる
ベンチ取るのめんどくさいからやってないけど
$,が遅いとは思わないです><
388nobodyさん:2006/03/29(水) 22:08:29 ID:???
use Benchmark;

push @array, rand for 1..100000;

timethese(100,
{
q{print STDERR "$_\n" foreach @array} => sub {print STDERR "$_\n" foreach @array},
q{print STDERR join "\n", @array} => sub {print STDERR join "\n", @array},
q{local $, = "\n"; print STDERR @array} => sub {local $, = "\n"; print STDERR @array},
q{print STDERR map "$_\n", @array} => sub {print STDERR map "$_\n", @array},
q{print STDERR $_, "\n" foreach @array} => sub {print STDERR $_, "\n" foreach @array},
});

print STDERR join "\n", @array: 2 wallclock secs ( 1.84 usr + 0.03 sys = 1.88 CPU) @ 53.33/s (n=100)
print STDERR "$_\n" foreach @array: 16 wallclock secs (11.66 usr + 3.94 sys = 15.59 CPU) @ 6.41/s (n=100)
print STDERR map "$_\n", @array: 22 wallclock secs (19.12 usr + 3.47 sys = 22.59 CPU) @ 4.43/s (n=100)
local $, = "\n"; print STDERR @array: 23 wallclock secs (16.55 usr + 6.75 sys = 23.30 CPU) @ 4.29/s (n=100)
print STDERR $_, "\n" foreach @array: 25 wallclock secs (17.66 usr + 6.83 sys = 24.49 CPU) @ 4.08/s (n=100)
389388:2006/03/29(水) 22:12:56 ID:???
joinがダントツで速いのは、printが1回で済むから。
390nobodyさん:2006/03/29(水) 22:23:16 ID:???
もし宜しければ$,が遅いのはなぜか教えていただけると嬉しいです_ _
わからにゃい。。
391nobodyさん:2006/03/29(水) 23:31:28 ID:???
うちでもほぼ同じ結果だった。x86_64 GNU/Linux
# mapブロック版と$"使用版を追加してます。
# 出力結果が同じになるようjoinに,"\n"追加してます。

print STDERR join("\n", @array),"\n": 2 wallclock secs ( 1.47 usr + 0.01 sys = 1.48 CPU) @ 67.57/s (n=100)
local $" = "\n"; print STDERR "@array\n": 2 wallclock secs ( 1.75 usr + 0.01 sys = 1.76 CPU) @ 56.82/s (n=100)
print STDERR "$_\n" foreach @array: 10 wallclock secs ( 7.57 usr + 2.44 sys = 10.01 CPU) @ 9.99/s (n=100)
print STDERR map "$_\n", @array: 13 wallclock secs (10.34 usr + 2.56 sys = 12.90 CPU) @ 7.75/s (n=100)
print STDERR map {"$_\n"} @array: 13 wallclock secs (10.47 usr + 2.54 sys = 13.01 CPU) @ 7.69/s (n=100)
local $, = "\n"; print STDERR @array: 14 wallclock secs ( 8.49 usr + 5.18 sys = 13.67 CPU) @ 7.32/s (n=100)
print STDERR $_, "\n" foreach @array: 15 wallclock secs (10.38 usr + 5.03 sys = 15.41 CPU) @ 6.49/s (n=100)

最初はlocalのせいで遅いのかとも思ったけど違うみたい。
内部で、$"はjoin、$,はmapあたりを使ってるなじゃないかと。
392nobodyさん:2006/03/29(水) 23:58:21 ID:???
local $, = "\n"; print @array;
これって省略無しで書くとどんな感じ?
他はなんとなく処理がわかるけど、これだけ判らない。
解説プリーズ。
393356:2006/03/29(水) 23:59:36 ID:???
仕事から帰ってきて見たら、こんな盛り上がっているとは驚いた…
394352:2006/03/30(木) 00:05:57 ID:???
うわ、凄い伸びてる。
倒置っていうか、>>358が言うみたいな後置きの事です。
意味不明な言葉を補完してくれた人感謝。

やっぱ覚えておくとよさそうだなぁ。
ただ、書き方が()要るかとか$_とか使い出したりでちょっと面倒なんだよね。
解説してくれてるところが妙に見つからないし、習うより覚えろって事かな。
395356:2006/03/30(木) 00:12:08 ID:???
>>394
「Effective Perl」オヌヌメ。最近買ったんだけど、例えばforeachとmapとgrepの
明確な使い分けとか、そんなレベルでPerlのセンスを磨いてくれる良書だとオモタ。
後置きについても書いてあったかは忘れたけど、例文にはバンバン登場するので
非常に参考になる。

>>359
その通りだね。括弧書いたのは後でシモタとオモタよ。
396nobodyさん:2006/03/30(木) 00:14:55 ID:???
print "$_\n" foreach @array; ### 0.91 CPU [3]
print $_, "\n" foreach @array; ### 0.93 CPU [4]

print STDERR "$_\n" foreach @array: 16 wallclock secs (11.66 usr + 3.94 sys = 15.59 CPU) @ 6.41/s (n=100)
print STDERR $_, "\n" foreach @array: 25 wallclock secs (17.66 usr + 6.83 sys = 24.49 CPU) @ 4.08/s (n=100)

連結って思ったより処理負荷大きいのかな。
気をつけようっと。
397nobodyさん:2006/03/30(木) 00:41:13 ID:???
>連結って思ったより処理負荷大きいのかな

Benchmark: timing 10000 iterations of $a .= "a" , $a = $a . "a"...
$a .= "a" : 0 wallclock secs ( 0.17 usr + 0.00 sys = 0.17 CPU) @ 5882.35/s (n=1000)
$a = $a . "a": 85 wallclock secs (84.41 usr + 0.01 sys = 84.42 CPU) @ 11.85/s (n=1000)

うへぇ
398nobodyさん:2006/03/30(木) 00:45:35 ID:???
>>396
カンマは連結じゃない希ガス。
399nobodyさん:2006/03/30(木) 00:48:32 ID:???
>>394
ちゃんと本買って一から勉強するとかした方が良いと思う。
400nobodyさん:2006/03/30(木) 00:51:51 ID:???
げげげ、ピリオドかと思ってたらカンマだったのねorz
401nobodyさん:2006/03/30(木) 01:07:54 ID:???
素朴な疑問なんだけど、出力先を STDERR にするのは Benchmark の定石なの?

print STDERR だとバッファリングされずに必ず write(2) するから、
print STDOUT に比べて圧倒的に速度的に不利になると思うんだけど。
402nobodyさん:2006/03/30(木) 01:33:47 ID:???
@の後ろにある数字が大きいと速いってこと?
403nobodyさん:2006/03/30(木) 01:50:36 ID:???
>>401
で?
比較なんだから別にどうでもいいだろ
404nobodyさん:2006/03/30(木) 01:55:35 ID:???
>>401
一回ごとに出力しないとちゃんと繰り返してることにならない。
405nobodyさん:2006/03/30(木) 01:59:04 ID:???
>401
そりゃある文ではSTDERRつかって、ある文ではSTDOUT使ってたらベンチに偏りが出るけどさ・・・
条件が同じなら出力先はファイルでもなんでもいいんだよ
406nobodyさん:2006/03/30(木) 02:13:52 ID:???
でも確かにそれだと速度差が正確にでないんじゃない?
他の処理のせいで処理自体の差は100/sと50/sの差なのに、
10/sと9/sって差が出てしまったら大差なさそうに感じてしまうし。
407nobodyさん:2006/03/30(木) 02:31:39 ID:???
>>405
いやいや、だから、 >>389 が言ってるように、
print (というか write(2)) の回数が多い方が極端に不利になるじゃん、という話。
408nobodyさん:2006/03/30(木) 02:39:02 ID:???
>>402
ベンチマークの基本から勉強しろよな


俺もわからないんだけどね
409nobodyさん:2006/03/30(木) 02:40:53 ID:???
>>407
で?
比較なんだから別にどうでもいいだろ
410nobodyさん:2006/03/30(木) 03:21:17 ID:???
> で?

煽ってるつもりなのだろうか。
411nobodyさん:2006/03/30(木) 05:10:05 ID:???
join は内部的に最適化されているから、文字列連結では join を使うべし
ってのが、ラクダ本あたりにもよく出てくるよね。
412nobodyさん:2006/03/30(木) 06:41:01 ID:???
@arrayの中身がどれだけ長くなっても、やはりprintを繰り返すよりも
joinの方が圧倒的に速いんだろうか?
413nobodyさん:2006/03/30(木) 07:15:57 ID:???
>>412
長くなるほど差が広がると思う
414nobodyさん:2006/03/30(木) 08:50:36 ID:???
>>413
でも、@arrayに加えてさらにjoinされる分のメモリが必要になるんだよ?
415nobodyさん:2006/03/30(木) 09:33:15 ID:???
机上
416407:2006/03/30(木) 10:45:36 ID:???
机上と言われるとあれなので、STDERR じゃなくてファイルに書き出してみました。

print FILE join("\n", @array),"\n": 10 wallclock secs ( 8.07 usr + 2.05 sys = 10.12 CPU) @ 9.88/s (n=100)
local $" = "\n"; print FILE "@array\n": 13 wallclock secs (10.10 usr + 2.20 sys = 12.30 CPU) @ 8.13/s (n=100)
print FILE "$_\n" foreach @array: 19 wallclock secs (18.08 usr + 1.20 sys = 19.28 CPU) @ 5.19/s (n=100)
print FILE map "$_\n", @array: 30 wallclock secs (27.93 usr + 1.07 sys = 29.00 CPU) @ 3.45/s (n=100)
print FILE map {"$_\n"} @array: 29 wallclock secs (27.60 usr + 1.23 sys = 28.84 CPU) @ 3.47/s (n=100)
local $, = "\n"; print FILE @array: 13 wallclock secs (10.70 usr + 1.18 sys = 11.88 CPU) @ 8.42/s (n=100)
print FILE $_, "\n" foreach @array: 19 wallclock secs (16.84 usr + 1.16 sys = 18.00 CPU) @ 5.56/s (n=100)

map はどうあがいても遅そうですが、他は join との差がかなり縮まってると思います。
417nobodyさん:2006/03/30(木) 11:19:01 ID:???
local $,は早いのか遅いのかどっちなんだw
418407:2006/03/30(木) 11:54:18 ID:???
>>417
まあベンチマークってそういうもんなんじゃないでしょうか。
机上だけでやっちゃうってのも問題ですが、
ベンチマークを鵜呑みにするのも問題だと思います。
ベンチマークも一つの目安に過ぎないんだと思います。
419nobodyさん:2006/03/30(木) 13:55:21 ID:???
まぁ動けばいいよ
この板のレベル的に
420407:2006/03/30(木) 14:05:48 ID:???
あ、そうそう。
>>405 さん、この結果に関して何かフォローがあればよろしくです。
421nobodyさん:2006/03/30(木) 14:31:39 ID:???
>>420
joinが一番早くてmapが遅いということが確認できました
422nobodyさん:2006/03/30(木) 14:52:07 ID:???
STDOUTを/dev/nullにリダイレクトして、cmptheseをSTDERRに吐いて確認してみますた。

print map {"$_\n"} @array 13.8/s -- -1% -44% -52% -69% -76% -80%
print map "$_\n", @array 14.0/s 1% -- -43% -51% -69% -75% -79%
print "$_\n" foreach @array 24.4/s 77% 75% -- -15% -46% -57% -64%
print $_, "\n" foreach @array 28.7/s 109% 106% 18% -- -36% -49% -57%
local $, = "\n"; print @array 45.0/s 227% 223% 85% 57% -- -20% -33%
local $" = "\n"; print "@array\n" 56.5/s 310% 305% 132% 97% 25% -- -16%
print join("\n", @array),"\n" 67.6/s 391% 384% 177% 135% 50% 20% --

まぁ、自分はこの差が問題になるよなコードを書くことはないと思うけど。
423nobodyさん:2006/03/30(木) 14:57:20 ID:???
ベンチマーク云々は>>375で結論でてるから、もういいよ。
424nobodyさん:2006/03/30(木) 15:31:44 ID:???
いや、結論はどうだろうと知っておいて損は無い。
むしろどんどんやってくれ。
425nobodyさん:2006/03/30(木) 15:56:27 ID:???
>420
書き方によってスピードに差が出るってのをベンチマークとって分かればいいんだから、
ファイルに書き出した結果もベンチ結果の1つでしょ?
またSTDERRに書き出してたベンチも結果の1つ

君がそれ以上に何が知りたいかのかわからんよ
426407:2006/03/30(木) 16:16:27 ID:???
>>425
別にあなたに聞いてないんだけど・・・
「何かフォローがあれば」って言ってるので、特になければレス要りませんよ。
427nobodyさん:2006/03/30(木) 19:01:15 ID:+BI4fyV2
CGI.pmで複数のパラメータを取得してJcode.pmで変換かませたいんですけど
ひとつひとつを変換するのではなく、一度に変換する良い方法ありませんか?
428nobodyさん:2006/03/30(木) 19:23:03 ID:???
1行で済ますことはできますが、バラバラに格納されたデータを
一度に変換する方法など、Perlでなくてもありません。
429nobodyさん:2006/03/30(木) 23:12:22 ID:???
WinとFreeBSDとFedoraでベンチしてみたが、全部順位が違った。
それもわずかな差じゃなくて数倍以上。
一体中で何が起きてるんだ…
子ネタ
ttp://itpro.nikkeibp.co.jp/article/NEWS/20060330/233820/
430nobodyさん:2006/03/31(金) 00:19:33 ID:???
>407
あなた自分の解釈の間違いに意固地になって必死すぎ
431nobodyさん:2006/03/31(金) 00:27:55 ID:???
>>429
どんな違いなのかざっとで良いので公開希望。
432nobodyさん:2006/03/31(金) 00:34:36 ID:???
ファイル書き出しはWinが遅いと勝手に予想してみたり・・・
433407:2006/03/31(金) 01:04:54 ID:???
>>430
間違ってるってわかってるのならどこがどう間違えてるか指摘してくださいよ。
434nobodyさん:2006/03/31(金) 01:42:27 ID:???
>>430
遅レスカコイイwwww
435nobodyさん:2006/03/31(金) 01:47:32 ID:???
なんでこんなに香ばしくなってんだこのスレは…



Σ
春休みかorz
436nobodyさん:2006/03/31(金) 01:58:45 ID:???
途中まではいい流れだったのにな。
変なのが絡みだすとこういう事に。
この板住人は煽り耐性低いというか、言い返さずに入られない人多いよな。
437nobodyさん:2006/03/31(金) 02:11:22 ID:???
いちいち自己紹介しなくてもいいよ
438nobodyさん:2006/03/31(金) 02:47:50 ID:???
ここまで落ち着けば、良い質問がいくつか来ればスレの流れはとりあえず戻ると思うけど、
この空気じゃなかなか質問がしづらいという悪循環。
439nobodyさん:2006/03/31(金) 13:33:21 ID:MWW8UoCr
>>428
その一行を教えてください><
440nobodyさん:2006/03/31(金) 15:01:40 ID:???
じゃあ、スルーされちゃった>>392プリーズ。
441nobodyさん:2006/03/31(金) 15:28:24 ID:???
>>440
特に何も省略されてないと思われ。

print 演算子の出力フィールドセパレータ (デフォルトは空文字列) を「改行」にし、
@array を print する。

って感じで。
442nobodyさん:2006/03/31(金) 16:06:55 ID:???
おお、なるほど。
なんとなく把握できた。

解説感謝。
443nobodyさん:2006/03/31(金) 16:33:00 ID:???
>>439
ヒント: 改行入れなければどんなに長くても1行は1行
444nobodyさん:2006/03/31(金) 18:52:18 ID:???
まったくcgiとかやったことないんですけど、2chぽい掲示板のが見づらいので自分で変えようと思ったのですが
たとえば
<a href=read.cgi?bbs=$bbs&key=$key&ls=$lslimit&mode=i accesskey=3>?新</a>
とかは携帯から見れる新って書いてあるリンクをおすと#63881に書いてあるコマンドを実行するってことですか?
リンクを押すと新しいレス10件を表示させるようにしたいのですが、そのコマンドがどこに書いてあるのかわからなくて・・。
445nobodyさん:2006/03/31(金) 19:49:56 ID:???
すみません、わかりました。
#63〜ってのはエモジのことみたいですね。
446nobodyさん:2006/03/32(土) 01:29:26 ID:???
local $, = "\n";
これがわからんかったんで調べた・・・ (知ってる人にはどうでもいいことだろうけど、分からない人も居るだろうし・・・)

$, 自体が特殊変数で、print 関数で表示する際にセパレータとして挿入される値

>>392 の例だと、「配列の要素間に \n を入れる」 という意味


なるほど勉強になりました。
447nobodyさん:2006/03/32(土) 01:31:27 ID:???
なんでmyじゃなくて遅いlocalなんだろう?とか、
初心者なので思ったりする。
448nobodyさん:2006/03/32(土) 01:37:06 ID:???
特殊変数は local でやる決まり
449nobodyさん:2006/03/32(土) 02:16:23 ID:???
勉強になった!
ありがとう。
450nobodyさん:2006/03/32(土) 08:17:31 ID:???
ほぇ〜そゆ決まりもあったんですか

勉強になります
451nobodyさん:2006/03/32(土) 09:15:53 ID:???
>>416
>>422

目的のアルゴリズム部だけの速度を求めたいのなら、print は一切省いて

join("\n", @array),"\n";
local $" = "\n"; "@array\n";
"$_\n" foreach @array;
map "$_\n", @array;
map {"$_\n"} @array;
local $, = "\n"; @array;
$_, "\n" foreach @array;

とかでいいと思う。デバイスに出力するのが遅いだけでなく、print 関数の使用自体が
遅い可能性もあるし(C言語とかだとそう)。

まぁ、これだと $, を使用したときの正確な値が求められないが、内部的に $, は
そんなにコストがかかっていなさそう。
おそらく内部では、$, ||= ''; (←実際にはCとかで)とでもやって条件分岐なしで処理してそうだし。
実際にベンチをとって確認するのは大切なことだけどね。
452nitraid:2006/03/32(土) 14:06:31 ID:G839mIFt
携帯サイトの各キャリア別で振り分けしたいのですが、何か良い方法(CGI等)はありませんか?
The Roomさんの振り分けCGIを使ってみたのですが、最近の携帯ではPCページにアクセスしてしまうようで困っております。
みなさんよろしくお願いします。
453nobodyさん:2006/03/32(土) 14:14:34 ID:???
IP帯域
454nitraid:2006/03/32(土) 14:40:58 ID:G839mIFt
nobodyさん回答ありがとうございます。
DoCoMo、au、vodafoneどれなのかを判別して振り分けたいのですが、各端末情報を書かなければいけませんか?
よろしくお願いします。
455nobodyさん:2006/03/32(土) 14:53:28 ID:???
関係ないけど2006/03/32ってなんだよ?
456nobodyさん:2006/03/32(土) 15:45:13 ID:???
>>455
2ちゃんねるは初めての方ですか?
ラウンジ板へどうぞ^^
457nobodyさん:2006/03/32(土) 17:27:19 ID:???
誰か日付が03/32になるようにするにはどうすればいいのか教えてくれ
458nobodyさん:2006/03/32(土) 17:28:37 ID:???
>>454
host名にdocomoとかついてるから簡単にわからない?
459nobodyさん:2006/03/32(土) 18:52:12 ID:???
>>457
s#04/01#03/32#;
460nobodyさん:2006/04/02(日) 13:14:52 ID:???
配列やハッシュのリファレンスの入った配列をコピーし、
リファレンス先の値を変更してから、元の配列と比較したいのですが、
リファレンスを用いているために元の配列の値が変更されてしまいます。
何か元の配列の値を変更しない、効率の良い方法はあるでしょうか?
my @S=([1,2,3],[1]);
{
my @T=@S;
$T[0][0] = 0;
#ここで、$T[0][0]==$S[0][0]となってしまいます...
}
461nobodyさん:2006/04/02(日) 14:10:23 ID:???
>>460
> リファレンスを用いているために元の配列の値が変更されてしまいます。
という質問に対する答えはディープコピーすればOK。
例えばこうやって:
my @T = map { [@$_] } @S;

自動でやってくれる便利なモジュールもある。
ttp://search.cpan.org/~rdf/Clone-0.20/Clone.pm
PurePerl版: ttp://search.cpan.org/~evo/Clone-PP-1.02/PP.pm

データ量が非常に多い場合はtieで差分を記録して処理するラッパを作ると良いかもしれないが、
オーバーヘッドがあるからこれは実際にやってみないとわからないな。

しかし本当にコピーする必要があるのか?
どうもその質問を見ると何所が書き換わったのかだけが知りたいようにも見えるんだが。
462460:2006/04/02(日) 16:55:34 ID:???
>>461
ありがとうございます。
最終的に、データ構造全体が必要なのでコピーは必要そうです。
利用しようとしているデータ構造は、>>460で示したものよりもう少し複雑です。
配列のリファレンスと、ハッシュのリファレンスが同じ配列に入っていたり...
mapは初めて知りましたが、何層にもなるデータ構造を完全にコピーするのは難しそうに見えます。
mapの何か応用的な利用法、または別の方法とかはあるのでしょうか。
モジュールが使えればよいのですが、設定が良く分からないので使えませんorz
データ構造はこんな感じです(各要素は適当に省略しています)。:
@S=(
{'a'=>[1,1],'b'=>1},
[{'c'=>[1,2],'d'=>1},{}],
[{},{}]
);
463nobodyさん:2006/04/02(日) 18:07:27 ID:???
perlスクリプトからC:\test.exeのようなファイルを実行するには
どのようにすればいいでしょうか。
464nobodyさん:2006/04/02(日) 18:48:20 ID:???
exec, system自分の用途にあわせてどうぞ
465463:2006/04/02(日) 18:54:08 ID:???
>>464
なるほど。ありがとうございました。
466nobodyさん:2006/04/02(日) 18:56:57 ID:???
print $_ for a..z ; みたいなこと出来ませんか?
467nobodyさん:2006/04/02(日) 18:59:11 ID:??? BE:264938764-
試してみてから書き込みましたか?
468nobodyさん:2006/04/02(日) 19:11:16 ID:???
>>467
ゴメン
strict外したらでけた
469nobodyさん:2006/04/02(日) 19:21:08 ID:???
'a'..'z'
470nobodyさん:2006/04/02(日) 19:25:53 ID:???
>>469
dクス!
471nobodyさん:2006/04/02(日) 20:43:19 ID:???
>>462
別にPurePerl版なら面倒なインストールやら設定やらは要らないんだけどな。
PP.pmをスクリプトがある場所のClone/PP.pmとして配置して、
use Clone::PP qw(clone);
my @T = @{ clone(\@S) };
これだけ。が、CPAN Search落ちてるな…DLはこの辺りのミラーからどぞ
ttp://ftp.ring.gr.jp/pub/lang/perl/CPAN/modules/by-module/Clone/Clone-PP-1.02.tar.gz

どうしてもモジュールが使えないなら、とりあえず自分で書いてみれ。
使うであろう部品や検索キーワードを置いとくから。
ref, map, 再帰呼び出し, ディープコピー

> 何層にもなるデータ構造を完全にコピーするのは難しそうに見えます。
そこは再帰呼び出しと組み合わせる。
472nobodyさん:2006/04/03(月) 02:08:58 ID:???
aaa(argv1, argv2);
上記のように2つ引数を受け取る関数を作り、引数1は省略可能な引数として作りましたが、
aaa(, argv2);
のように書いたら、あたりまえでしょうがエラーになりました

やっぱ省略可能な引数は省略不可の引数のあとに書くべきですかね?
473nobodyさん:2006/04/03(月) 02:17:05 ID:???
第2引数が必須なら入れ替えるべきだと思う。
そうでないなら第1引数にはundefを渡す。
474nobodyさん:2006/04/03(月) 02:35:42 ID:???
あ〜そっかそっかundefとかいうのありましたね。 す〜っかり忘れてた (;´Д`)
とりあえず修正はあとにしてundef渡すようにします
>473さんありがとです
475nobodyさん:2006/04/03(月) 17:08:10 ID:OQWMmdli
http://www.bousaid.que.jp/software/urlencode/index.php
このサイトで、「毛蟹」というキーワードをsjisでエンコードすると、
%96%D1%8AI
という文字列が得られると思います。

ここではphpの関数を使って変換しているようなので
このような結果になっていますが、
同等の結果をperlで取得する方法はないのでしょうか?

よく使われる
$str =~ tr/+/ /;
$str =~ s/%([0-9A-Fa-f][0-9A-Fa-f])/pack('H2', $1)/eg;
のような変換では、
%HHと2桁に変換されるわけですから上のような結果にはなりませんよね。

当方、phpの知識はほとんどありませんTT。
476475:2006/04/03(月) 17:13:14 ID:OQWMmdli
perl 5.6でコーディングしています。
477nobodyさん:2006/04/03(月) 18:02:17 ID:???
エンコードとデコードごっちゃにしてないかお前
478nobodyさん:2006/04/03(月) 18:03:26 ID:???
$str =~ s/(\W)/sprintf('%%%02X', unpack('C', $1))/eg;
こうか
479nobodyさん:2006/04/03(月) 18:07:42 ID:???
>>475
phpとjavascriptに関するところだけど、URLエンコード差異について詳しいページがあったので紹介。
ttp://jsgt.org/ajax/ref/charset_test/responsetext/php/urlencode.php

基本的にマルチバイト文字をバイト単位で見てASCIIで表現できればパスするということ。
例えばA-Za-z0-9以外をunpackするなら
$str = "毛蟹";
$str =~ s/([^a-zA-Z0-9])/"%" .uc(unpack('H2', $1))/ge;
print $str; # %96%D1%8AI
480nobodyさん:2006/04/03(月) 18:22:33 ID:???
そうそう、モジュールも。
use URI::Escape;
$str = "毛蟹";
print uri_escape($str); # %96%D1%8AI
481nobodyさん:2006/04/03(月) 18:23:27 ID:???
つURI::Escape
482nobodyさん:2006/04/03(月) 21:04:04 ID:???
毛蟹ワロタwwww
483nobodyさん:2006/04/03(月) 22:31:17 ID:???
毛蟹っていう微妙なリアルさが良いなw
484475:2006/04/03(月) 22:40:14 ID:OQWMmdli
すいません。>>475はデコードの部分貼り付けちゃいました。
>>479
参考になるサイトを教えていただきありがとうございます。
"蟹"はsjis16進で"8a49"
49はASCIIで"I"だから・・・
ということですね。

てか、自分が悩んでいる内容が全然別のことだと気付きました。
申し訳ないですが、もう一度質問させてください。

Jcodeの質問です。5.6なので、Encodeモジュールが使えません。
当方、スクリプトの文字コードはUTF-8で書いてますが、
use URI::Escape;
my $str = uri_escape(jcode("毛蟹")->sjis);
print $str;
の結果は
%E3%AD%9B%E8%9F%B9
となってしまいます。

試しに
print getcode($str);
をしてみると、空文字?が返ってきます。
print getcode("毛蟹");も空文字が返ります。
print getcode("毛蟹じゃあ!");は、utf8が返ります。

文字コードの変換がきちんとおこなわれていないようなのですが、
"毛蟹"をきちんとsjisへと変換させる方法はないでしょうか?

ちなみに、さっきから毛蟹毛蟹言ってますけど
その文字列はユーザが入力する文字列と考えてください。
485475:2006/04/03(月) 22:41:23 ID:OQWMmdli

use Jcode;
が抜けてました
486nobodyさん:2006/04/03(月) 23:07:47 ID:???
>>484
use URI::Escape;
use Jcode;

my $convstr = '毛蟹';
my $str = uri_escape(jcode($convstr,'utf8')->sjis); # icodeを指定する

print uri_escape($convstr),"\n"; # %E6%AF%9B%E8%9F%B9
print $str; # %96%D1%8AI

まだ「毛蟹」で笑ってる自分が嫌です。
487475:2006/04/03(月) 23:36:11 ID:???
>>486
そんなオプションがあったのですね!
完璧です。ありがとうございました。
488nobodyさん:2006/04/03(月) 23:40:37 ID:???
問題解決したトコで、毛蟹にこだわった理由を2行でw
489nobodyさん:2006/04/03(月) 23:51:28 ID:???
毛蟹、タラバなどの取引量、価格情報等を取り扱うwebサービスからデータを随時取得して
向こう1週間のおかずを決めるアプリを開発中なためです。
490nobodyさん:2006/04/03(月) 23:52:20 ID:???
そんなに毛蟹食いたいんだな
つ【\20000】
491460:2006/04/03(月) 23:53:46 ID:???
>>471
PurePerl版でパソコンの上で動かせるようにはなりました。
プログラムの別の部分ですが、再帰呼び出しというのも便利で、勉強になりました...
ありがとうございました。
492nobodyさん:2006/04/03(月) 23:55:29 ID:???
ちょっと待って! カニカマには毛蟹はいってないよ!
493nobodyさん:2006/04/04(火) 00:09:48 ID:???
カニカマはフランスで大人気なのを知ってるか?
ばかにすんなよ!
494nobodyさん:2006/04/04(火) 00:29:28 ID:???
ネカマは2chで大人気なのを知ってるか?
ばかにすんなよ!
495nobodyさん:2006/04/04(火) 00:32:56 ID:???
改変するならもっと面白く改変しようぜ。
496nobodyさん:2006/04/04(火) 01:01:34 ID:???
レンタルスペースにあげたら動くのに
AN HTTPで試したら500エラーてどういうコトなんだろうか('A`)
文字コード・Perlパス いろいろ試してすでに2週間・・・
497nobodyさん:2006/04/04(火) 01:30:52 ID:???
エラーメッセージも書きませんかそうですか
498nobodyさん:2006/04/04(火) 01:47:10 ID:???
ページを表示できません
検索中のページには問題があるため表示できません。

--------------------------------------------------------------------------------

次のことを試してください:

127.0.0.1 ホーム ページを開き、 必要な情報へのリンクを探してください。
[更新] ボタンをクリックするか、後でやり直してください。

[検索] ボタンをクリックして、インターネット上の情報を検索してください。
関連したサイトの一覧 も表示できます。

HTTP 500 - 内部サーバー エラー
Internet Explorer


しか出ないんだ ごめん(´・ω・`)
トレースのログ 晒したらわかるかな?
499nobodyさん:2006/04/04(火) 01:51:42 ID:???
<<< s=444: Tue Apr 04 01:49:26 2006 <<<
GET /cgi-bin/uhouho.pl HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/msword, */*
Accept-Language: ja
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)
Host: 127.0.0.1
Connection: Keep-Alive

>>> s=444: Tue Apr 04 01:49:26 2006 >>>
HTTP/1.1 500 Server Error
MIME-Version: 1.0
Server: AnWeb/1.42n
Date: Mon, 03 Apr 2006 16:49:26 GMT
Content-Type: text/html
Content-Length: 196

<HTML><HEAD><TITLE>Error </TITLE></HEAD>
<BODY>
<H1>Error 500</H1>
CGI エラー - CGIを実行できません <HR><ADDRESS><a href="http://www.st.rim.or.jp/~nakata/">AnWeb/1.42n</a></ADDRESS>
</BODY></HTML>
500nobodyさん:2006/04/04(火) 01:56:50 ID:???
>>496
落ち着いて↓これ読んで試してください。>>498-499みたいのは貼られても困る。
http://pc8.2ch.net/test/read.cgi/php/1104624784/2

Un*x→Winだったらsymlinkとかでばくばくコケるのかな。
501nobodyさん:2006/04/04(火) 01:58:39 ID:???
>>500
119番の応対みたいでワロタ
502nobodyさん:2006/04/04(火) 03:19:49 ID:???
>>500
スマソ あんまこの板こないからよくわからんけどスレ違いだったかな(´・ω・`)
もう一度 落ち着いて試してみる d
503nobodyさん:2006/04/04(火) 09:52:27 ID:???
ここは毛蟹スレですよ
504nobodyさん:2006/04/04(火) 13:19:03 ID:???
ファイルを作成して指定した日に削除するプログラムを作りたいんですが
どうしたらorz










(´・ω・)がいしゅつ?
505nobodyさん:2006/04/04(火) 13:25:40 ID:???
>>504
いろいろとやり方はあるだろうけど、もっと、用途というか、
どういう環境でどんなふうにやりたいかとか詳しく書いた方が答えやすいかも。
506nobodyさん:2006/04/04(火) 13:47:30 ID:???
ファイル作成まで含めるのか
削除する日付はどう指定するのか
507nobodyさん:2006/04/04(火) 14:05:40 ID:0uJ/AX+F
CGI(Perl)でフォームメールを扱っているんですが、
ごく一部のユーザーからのフォームデータが欠けているのです。

そのうちの一人と連絡がとれ、そのユーザーがMacユーザーである事が確認できました。
Macユーザーのフォームデータは受け取れないというような事例はあるのでしょうか?

コードはS_JISで書いてます。
508nobodyさん:2006/04/04(火) 14:12:43 ID:???
うんこなブラウザがあるということは聞いています。
509nobodyさん:2006/04/04(火) 14:44:06 ID:???
safari
510507:2006/04/04(火) 15:32:54 ID:0uJ/AX+F
解決しました。ありがとうございました。
511nobodyさん:2006/04/04(火) 15:33:23 ID:???
そういや昔のケータイでアンダースコアを含んだ名前だと送信できねえってのがあったな。
512nobodyさん:2006/04/04(火) 15:33:29 ID:???
>>507
STDINの中身ダンプしてみたら?
513nobodyさん:2006/04/04(火) 16:09:53 ID:???
>>498
いろいろ考えられるけど、

1. そもそもCGI不許可の鯖
2. 特定のディレクトリに置かないと動かない(例:cgi-bin等)
3. .htaccess ファイルの記述ミス。ちゃんとCGI実行されるようにする。
4. スクリプトファイルの文字コードがsjis になっちゃってたりする。eucにする。
5. perl インタプリタのパスが間違っている。1行目を見直す。
6. 出力で、最初に"\n"を出力していない。
7. パーミッションの設定ミス。701、755等にしてみる。

まぁ、自宅鯖で動いているなら 6 はなさそうかな。
まず、以下のようなごくシンプルなスクリプトで試してみ。

---
#!/usr/bin/perl
print "\nOK!";
514nobodyさん:2006/04/04(火) 18:33:02 ID:???
多次元配列なんですけど、途中で数字でなく文字列を使うようにすることは可能でしょうか?

$a = $array[0]{abc}[1];

数字だけならこんな↓感じの代入でできたんですけど。

@array = ( [ ["a", "b"], ["c", "d"] ],
[ ["e", "f"], ["g", "h"] ],
[ ["i", "j"], ["k", "l"] ],
[ ["m", "n"], ["o", "p"] ] );
515nobodyさん:2006/04/04(火) 18:48:07 ID:???
ヒント:リファレンス
516nobodyさん:2006/04/04(火) 20:46:17 ID:???
>>513
こんなとこで油売ってないで、今日納期のやつ仕上げろよ。
517nobodyさん:2006/04/05(水) 06:02:50 ID:???
>>514
普通にハッシュ使えばいいのでは?

my @array = (
{abc=>[1,2,3], def=>[4,5,6]},
{abc=>[7,8,9], def=>[1,2,3]},
);

http://www.kt.rim.or.jp/%7Ekbk/perl5.005/perldsc.html
518nobodyさん:2006/04/05(水) 09:05:23 ID:???
>>517
サンクス。
519nobodyさん:2006/04/05(水) 19:24:19 ID:???
use Fcntl;
このモジュールの宣言をしないとflockは使えないんですか?
宣言無しでflockの1,2,8使えてるのは
evalでトラップされてるからなのでしょうか?
520nobodyさん:2006/04/05(水) 19:45:46 ID:???
flock FH, 2; # 数字を使う場合は「use Fcntl;」は不要。
flock FH, LOCK_EX; # 定数を使う場合は「use Fcntl;」が必要。

宣言無しでflockの1,2,8が使えてるのは、定数を使ってないから。

521nobodyさん:2006/04/05(水) 20:11:28 ID:???
>520
ありがとうございます。

調べても分からなかったんですが、
定数を使うと何か他の処理ができるようになるんですか?
522nobodyさん:2006/04/05(水) 20:36:20 ID:???
> 定数を使うと何か他の処理ができるようになるんですか?

はつみみです。
523nobodyさん:2006/04/05(水) 20:49:31 ID:???
>>521
定数を使うと移植性が高くなるだけで、処理内容は同じですよん。
524nobodyさん:2006/04/05(水) 20:59:48 ID:???
> 定数を使うと移植性が高くなるだけで、

だけ?
525nobodyさん:2006/04/05(水) 21:13:52 ID:???
どき!
526nobodyさん:2006/04/05(水) 21:28:35 ID:???
レベル低いな〜
webprog行けよ・・・
って思ってたらここがwebprog板だった
527 ◆aiY4htt2.2 :2006/04/05(水) 21:36:25 ID:??? BE:4356858-#
>>526
わろす♪
528521:2006/04/05(水) 21:38:06 ID:???
>523
そうですか。
ありがとうございました。



>519でモジュールと言いましたがプラグマの間違いです。
529nobodyさん:2006/04/06(木) 05:19:58 ID:???
プラグマなん?

package Fcntl;

=head1 NAME

Fcntl - load the C Fcntl.h defines

=head1 SYNOPSIS

use Fcntl;
use Fcntl qw(:DEFAULT :flock);

=head1 DESCRIPTION

This module is just a translation of the C F<fcntl.h> file.
530nobodyさん:2006/04/06(木) 09:03:53 ID:???
Fcntlは明らかにモジュール。

プラグマは「useするとプログラムの挙動が変わるモジュール」のことだからの。
531nobodyさん:2006/04/06(木) 12:47:22 ID:???
>530
それなら両方正解か
532nobodyさん:2006/04/06(木) 13:06:07 ID:???
プラグマ名は小文字から始まるんじゃなかったっけ…?
533nobodyさん:2006/04/06(木) 13:36:04 ID:???
プログラマはwarningsとかstrictだぬぁ。
534nobodyさん:2006/04/06(木) 13:36:42 ID:???
そこで5.8.8で追加されたperlglossaryですよ。
ttp://search.cpan.org/~nwclark/perl-5.8.8/pod/perlglossary.pod

・プラグマ
実用的なヒントや指示がコンパイル時に受け取られる(時に無視すれる)標準モジュールです。
プラグマは全て小文字で命名されます。

で、訳あってる?英語苦手だから自信ない(´・ω・`)
535nobodyさん:2006/04/06(木) 15:14:11 ID:???
>>533
!!!
536nobodyさん:2006/04/06(木) 18:12:22 ID:9PXV35kY
perl書いたり編集したりしているとき、スクロールして
場所探すのが大変です
これを部分部分に分けてタブで切り替えて作業するとか、
そういうのありませんかね?

あったら便利だなぁと思ったもので
537nobodyさん:2006/04/06(木) 18:15:20 ID:???
>>536
Perl書くのにどんなエディタ使ってる?
http://pc8.2ch.net/test/read.cgi/php/1014357485/

色々ある
538nobodyさん:2006/04/06(木) 22:07:28 ID:???
質問です。
掲示板の今見ているレスから10件前のを表示させようと思ったのですが、
「自分の今見ているところを取得して、そこから10件引いたリンクをつくる」(当たり前のことですが)まで考えました。
ですが、自分の今見ているレス(何番から何番)を「取得するにはどうしたらいいのでしょうか?
539nobodyさん:2006/04/06(木) 22:16:28 ID:???
>>538
言葉どおりに捉えるなら、「自分が今見ているレス」なんて分かるはずもなく。
むしろ「自分が今見ているレス」をどうやって指定するかがミソ。
指定できれば、あとは10件遡るだけですね。
こういうのは決まったやり方があるわけじゃなくてアルゴリズム次第なんで
考えるのが面倒くさいとか分からないとかのレベルじゃPerlに限らず何にも作れません。
540nobodyさん:2006/04/06(木) 22:20:49 ID:???
それは既製品を改造しようとしてるのか
まだ構想段階でその機能を付けようと思ったのか
541nobodyさん:2006/04/06(木) 22:27:55 ID:???
>>539
そうだったんですか・・。
すみませんでした。ありがとうございました。
>>540
一応配布されているのを改造しようと・・。

2ちゃんねるとか他のをみていると
スレ一覧からスレを見るとスレ番/|10で、前を押すと/988-998とかになっているので、簡単にできるのかなーと思ってました。
542nobodyさん:2006/04/06(木) 22:40:35 ID:???
>>538
例えば「20〜30を表示」してる時に、そこに「10〜20を表示させるリンク」を仕込めるのは自明。
改造という視点なら>>2
543nobodyさん:2006/04/06(木) 22:44:59 ID:???
11件表示とは変わってるな
544nobodyさん:2006/04/06(木) 22:48:15 ID:???
>>542
改造は別でしたか、すみませんでいsた。調べてみます。
情報ありがとうございました。

>>543
あれ・・・?たしかに・・。

545nobodyさん:2006/04/07(金) 03:14:09 ID:???
2進数のExcluslveOR計算をPerlで行うことは可能でしょうか。
具体的には、

1010 1000 0001 0011
1100 1101 1000 1110
---------------------
0110 0101 1001 1101

こういった計算ができないかということでございます。
ご教示いただけますと幸いです。
546nobodyさん:2006/04/07(金) 03:41:32 ID:???
547nobodyさん:2006/04/07(金) 17:48:12 ID:???
Perlで画像を結合するにはどうしたらよいのでしょうか
教えてください
548nobodyさん:2006/04/07(金) 19:27:23 ID:???
>>547
gifcatで検索

>>504です。レス遅れてすいません

テキストをフォームに書いてそれをアップロードするという内容なんですが
そのアップロードしたテキストを30日後に削除したいんです
549nobodyさん:2006/04/07(金) 19:28:28 ID:???
>>547
gdでもimでも好きなの使えや
550nobodyさん:2006/04/07(金) 19:32:03 ID:???
perlで最大7元くらいの連立一次方程式を解きたいと思っています。
調べてみたのですがコードを載せている所が見当たらなくて...
よろしくお願いします
551nobodyさん:2006/04/07(金) 19:45:56 ID:???
>>550
アルゴリズムが知りたいのかすぐに使えるコードが知りたいのかどっちだ?
552550:2006/04/07(金) 19:53:52 ID:???
おそらく、既にある程度定式化された事だと思うので、
コードを教えていただくのが早いと思ってます。
コードが分かればアルゴリズムは自分で解析できると思います。
553nobodyさん:2006/04/07(金) 20:15:40 ID:???
なにもPerlでそんな連立方程式を解かせる事は無いような…。
本だか雑誌だかはあるはずだよ。数学系に特化したやつ。
コードはCだったような気がするけど。
554nobodyさん:2006/04/07(金) 20:26:44 ID:???
>>548
どうもありがとうございます。

>>549
gdとimというものを使用した画像連結例などございましたらご教示ください
555nobodyさん:2006/04/07(金) 20:37:03 ID:???
>>554
Image::Magickでぐぐる
556nobodyさん:2006/04/07(金) 20:52:13 ID:???
KENTさんのスクリプトにあったのですが、以下に出てくる *_ って何を表しているのですか?

foreach ( split(/\n/, $mbody) ) {
&jcode'convert(*_, 'jis', 'sjis');
print MAIL $_, "\n";
}
557nobodyさん:2006/04/07(金) 21:00:14 ID:???
>>556
型グロブだがいまどきそんな古いもの覚えてもしょうがないと思うぞ...
558nobodyさん:2006/04/07(金) 21:05:39 ID:???
559nobodyさん:2006/04/07(金) 21:17:32 ID:???
>>557-558
ありがとうございます。
560nobodyさん:2006/04/07(金) 21:19:43 ID:???
すみません、もう一つお願いします。
この型グロブというのを使わないとすれば、>>556はどのような記述にすればいいのでしょうか?
561nobodyさん:2006/04/07(金) 21:23:12 ID:???
知らないが・・・リファレンスで渡すと思う・・・たぶん・・・おそらくは・・・
562nobodyさん:2006/04/07(金) 21:30:33 ID:???
型グロブでなくリファレンスで書いても動くでしょう、という話でなくて、
jcode.pl自体が古いんですよ。

この辺を読んでおくといいのかな?今はどうするもんなのかについても触れられてるよ。
ttp://openlab.jp/Jcode/index-j.html
563nobodyさん:2006/04/07(金) 21:31:00 ID:???
>>555
モジュールがあるのですね。ありがとうございました。
gdとはどのように使えば宜しいのでしょうか
564nobodyさん:2006/04/07(金) 21:36:51 ID:???
>>552
連立一次方程式といえば行列が思い浮かぶな。
ttp://search.cpan.org/~ulpfr/Math-Matrix-0.5/Matrix.pm
use Math::Matrix;
my $m = Math::Matrix->new(
[ 1, 1, 1, 6], # x + y + z = 6
[ 2, -1, 4, 12], # 2x - y + 3z = 9
[ 5, 6, -5, 2], # 5x + 6y - 5z = 2
);
print $m->solve();
こっちのほうにはあまり詳しくないから一般的な解き方は知らん。スマン。
565nobodyさん:2006/04/07(金) 21:39:23 ID:???
>>561-562
サンクス。
566nobodyさん:2006/04/07(金) 21:48:25 ID:???
>>563
GDもモジュール
ぐぐれ
567nobodyさん:2006/04/08(土) 01:15:57 ID:???
>>566
ありがとうございます。
ぐぐってみます
568nobodyさん:2006/04/08(土) 01:42:34 ID:???
画像を連結じゃなくて、画像を重ねるときはどうしたらいいでしょうか。
569nobodyさん:2006/04/08(土) 01:51:51 ID:???
ぐぐれ。
570非568:2006/04/08(土) 01:55:19 ID:???
ImageMagickは本家のところしか今まで見てなくてコマンドラインが分かりにくいなと思ってたが
日本語で解説してるとこのほうがはるかに内容充実してるんだな
先にこっち見ればよかった

perlと関係ないけど
571nobodyさん:2006/04/08(土) 08:25:36 ID:???
>>570
いいの紹介、サンクス。
572550:2006/04/08(土) 23:38:24 ID:???
有り難うございます。
>>553
perlスクリプト中で方程式の解が必要になってくるんです。
perl以外の言語で探すとひとまず見つかりました。
本の方も調べてみます。
>>564
行列の方は目に入っていたのですが、時間がかかるという話を読んで避けていました。
実際の所どうなんでしょう?
573nobodyさん:2006/04/08(土) 23:41:36 ID:???
> perlスクリプト中で方程式の解が必要になってくるんです。

外部コマンド呼ぶなり、ライブラリ使って XS 書くなり...
574nobodyさん:2006/04/09(日) 18:45:31 ID:yjpSMuEB
変数値を変数名にする方法ってありますか?
たとえば$test = "filename";
という変数をみて
$filenameという変数を作成したいのです。
$$testです。
エスパーの方お願いします。
575nobodyさん:2006/04/09(日) 18:48:13 ID:???
次の質問どうぞ
576nobodyさん:2006/04/09(日) 18:48:53 ID:???
>>574
いきなりエスパーを求めるなよ。つかエスパーじゃなきゃわからん質問をしようとするなよ。
${$test}
577574:2006/04/09(日) 19:02:04 ID:???
>>576
ありがとう!!できたよー。

本当に有難うございます。
578nobodyさん:2006/04/09(日) 19:11:41 ID:???
>>576はエスパー
579nobodyさん:2006/04/09(日) 20:04:09 ID:???
自分で書いてる$$testでも正解だったわけだが...
580nobodyさん:2006/04/09(日) 20:19:36 ID:???
いい釣り堀ですね
581nobodyさん:2006/04/09(日) 20:51:51 ID:???
>>579
ミスに繋がるからお勧めはできんがな。
ていうかそもそも変数名を変数にしようという時点で(ry
582nobodyさん:2006/04/09(日) 20:54:32 ID:???
>>581
perlの場合 ある程度は仕方がないだろ
583nobodyさん:2006/04/09(日) 20:56:49 ID:???
>>582
その程度をうp!
584nobodyさん:2006/04/09(日) 21:26:44 ID:???
デバッガの類を作ろうというのでない限りはハッシュ使ったほうがいい
585nobodyさん:2006/04/09(日) 21:40:11 ID:bLVoNdT6
こんな感じでハッシュ変数を使ってフォームを作成しています。
ifで比較している$iconは手前で読み込んでいるデータです。
キーと比較して、同じならselectedにしています。
動作自体は希望通りに動くのですが、プルダウンメニューの並び順が滅茶苦茶になってしまいます。
その01,02...としたいのですが、その10,01,20...となってしまいます。
キーをソートすれば良いと言う事までは解ったのですが、上手く行きませんでした。
どのようにsort関数を挟めば良いのでしょうか?

%icon=(
'icon_00.gif','指定しない',
'icon_01.gif','その01',
'icon_02.gif','その02',
'icon_03.gif','その03',
'icon_04.gif','その04',
'icon_05.gif','その05',
※これが"その30"まで続きます。"
);

foreach $key(keys(%icon)){
if ($icon eq $key) {
print "<OPTION value=\"$icon{$key}\" selected>$key</OPTION>\n";
} else {
print"<OPTION value=\"$icon{$key}\">$key</OPTION>\n";
}
}
586nobodyさん:2006/04/09(日) 21:55:42 ID:???
foreach $key(sort(keys(%icon))){
587 ◆aiY4htt2.2 :2006/04/09(日) 22:04:45 ID:??? BE:5880896-#
print map {
 sprintf qq|<OPTION value="%s"%s>$key</OPTION>\n|,
  $icon{$key},
  $icon eq $key
   ? ' selected'
   : ''
 } sort keys %icon;

って書いちゃうよなぁ、、、@わるいくせ?
588nobodyさん:2006/04/09(日) 22:16:58 ID:???
V と C くらい分けろ。
589585:2006/04/10(月) 02:07:12 ID:JCUetGcd
>>586
どうも有り難うございます。
問題なく動きました。

>>587
こんなやり方もあるんですね。
まだ超初心者なので、細かい意味は不明なんですが。
勉強します。
590nobodyさん:2006/04/10(月) 08:46:55 ID:???
> まだ超初心者なので、細かい意味は不明なんですが。

何も細かい意味なんてありませんよ。
591nobodyさん:2006/04/10(月) 10:50:22 ID:???
ファイルパスを指定すると深い階層にファイルを生成してくれるモジュールないでしょうか?
ディレクトリ生成ならFile::Pathでいけるんですが。
ディレクトリ作った後にファイル生成するのが早いかな・・・
592nobodyさん:2006/04/10(月) 10:53:28 ID:???
my $buf = "/prefix/to/data/dir";
my $f = "/fuck/you/i/do/want/fucking";
foreach (split(m|/|, $f)) {
next unless $_;
$buf .= "/" . $_ ;
mkdir($buf);
}
593nobodyさん:2006/04/10(月) 11:15:40 ID:???
>>592
ありがとうございます。
ただそれだとFile::Pathと同じことですよね?
ファイル生成までを一気にやってくれる既存モジュールを探しています。
自分で書いたほうが早いとは思うんですが、ご存知でしたら後学のために教えてください。
594nobodyさん:2006/04/10(月) 17:04:46 ID:???
やべえ無限ループやっちまった
シェルでログインできん
595nobodyさん:2006/04/10(月) 17:09:16 ID:???
別のコンソールを開いて、そっちからkill
…それすらできない状態?
596nobodyさん:2006/04/10(月) 17:21:20 ID:???
コンソール?サーバセンター行き?
597nobodyさん:2006/04/10(月) 17:37:13 ID:???
再帰処理のばかあああああああああああああああ
598nobodyさん:2006/04/10(月) 17:51:06 ID:???
あ〜あ
599nobodyさん:2006/04/10(月) 17:57:44 ID:???
local で試せよと。
600nobodyさん:2006/04/10(月) 18:04:26 ID:???
散々試した処理をちょっと変更してしまったのです・・・
601nobodyさん:2006/04/10(月) 18:26:17 ID:???
で、もう kill したんだよな?
まだならさっさとしる。
602nobodyさん:2006/04/10(月) 18:29:05 ID:???
サーバセンターに電話して電源ぽちっとしてもらいました・・・
テストサーバなので実害はありませんでしたが、以後同じ過ちを繰り返さぬよう(略

orz
603nobodyさん:2006/04/10(月) 18:57:13 ID:???
HTML::TemplateのTMPL_LOOPでテーブルセルの三段組作る方法ないの?
面倒だからモジュール直で書き換えちゃったよorz
604nobodyさん:2006/04/10(月) 20:19:31 ID:???
>>603
テーブルセルの三段組ってのがわからんのでなんとも。
どういう変数があってそれををどういうHTMLにしたいのかね。
605nobodyさん:2006/04/10(月) 23:36:36 ID:???
>>602
頼むから開発から手を引いてくれ
606nobodyさん:2006/04/11(火) 00:35:41 ID:???
>>605
i|!| |i┏┓! i!┏┳┓| |||i|!i| ||!i|| |||ii| ||| ||| |i||!|i│i!┏┓i!|
|i|┏┛┗━╋┻┛|i!||!|ii|| i|!i||i|┏━┓ ┏┓i|i| i┃┃i!|
i||┗┓┏┓┃||i┏━━━━┓┗━┛ ┃┃|i||!i┃┃i!|
|i |!|i┃┃┃┃i||┗━━━━┛|i|| || ||||!┃┃i|i| i┗┛!i|
i||i ||┃┃┃┃|! |||i ||i    !|||!|┏━━┛┃|i||!i┏┓i|!
|i!i |!┗┛┗┛i|!i|  / |   / | ┗━━━┛i|i| i┗┛i!|
i| |||i|!i| ||!|i||i!   /,_ ┴─/ ヽ      |!i| ||| |i||!|i|i|||| ||i
|i|| ||i!i||     (_゜.,》.'(_゜,》)ミ ヽ       ! | |!i||!|ii||!|ii|
i|ii        / ,,__,ニ、、 ノ( |           i|i!|i|
|i        | Y~~/~y} `, ~ |  そ、そんなー…   |i
!.          | ,k.,.,!,.,.,r| ,!  く                 .!
i        / <ニニニ'ノ    \               l
607nobodyさん:2006/04/11(火) 07:13:56 ID:???
>>602
まずはシェルの基本的な使い方勉強しる。
telnet と kill くらいでもいいから。

サポセンに電話しなくても自分で対処できるようになるから。
608nobodyさん:2006/04/11(火) 09:05:56 ID:???
forkしまくってプロセスが爆発的に増えるような奴だと
ログインすら満足にできなくなることがあるよ。昔やっち
まったことがある(笑)
609nobodyさん:2006/04/11(火) 10:04:30 ID:???
>>607
ターミナルすら繋がらない状態でした
鯖が手元にあればコンソールで入れたかもだけど
たぶんメモリ使用量が限界いってたと思われます

>>605
ほんとそう思いますよね(つд`;)
610nobodyさん:2006/04/11(火) 16:06:02 ID:???
ファイル作りまくっても反応返ってこなくなるよ。
鯖に入ってても、lsすら返ってこなくなる。
forkよりましだけどね。
611nobodyさん:2006/04/11(火) 18:59:01 ID:???
連想配列の配列
my $aaa = [
{bbb=>1,ccc=>2,ddd=>3,},
{bbb=>4,ccc=>5,ddd=>6,},
{bbb=>7,ccc=>8,ddd=>9,},
];
をcccでソートして順番に出したいんですが
どうしたらよいでしょうか?
612nobodyさん:2006/04/11(火) 19:05:38 ID:???
>>611
sortにcccで比較するように書いたブロックを渡す
sort { $a->{ccc} <=> $b->{ccc} } @$aaa
613nobodyさん:2006/04/11(火) 22:21:41 ID:???
SQL につっこめめばー?
614nobodyさん:2006/04/12(水) 01:19:55 ID:???
>613
ソートするためにわざわざSQL使うの?
SQL使わないとソートできないの?
615nobodyさん:2006/04/12(水) 01:26:35 ID:???
規模がでかくなるとまんどくさくね?
616nobodyさん:2006/04/12(水) 07:12:28 ID:???
>615
規模がでかくなっても
sort { $a->{ccc} <=> $b->{ccc} } @$aaa
のままだと思うのですが、なにか特殊なことをする必要があるのでしょうか?
617nobodyさん:2006/04/12(水) 09:54:34 ID:???
「SQL につっこむ」ってどういう意味?
RDBMS でも使えば、っていうのならわかるけど。
618611:2006/04/12(水) 10:01:24 ID:???
>>612
ありがとうございます!勉強になりました。
619nobodyさん:2006/04/12(水) 10:45:00 ID:???
>>617
無理して知る必要もないかと。
620nobodyさん:2006/04/12(水) 11:21:30 ID:???
>>619
誤爆?
621nobodyさん:2006/04/12(水) 13:51:21 ID:???
>>617
無理して知る必要もないかと。
622nobodyさん:2006/04/12(水) 14:15:01 ID:???
>>621
誤爆?
623nobodyさん:2006/04/12(水) 14:16:59 ID:???
>>622
無理して知る必要もないかと。
624nobodyさん:2006/04/12(水) 14:22:38 ID:??? BE:72171623-#
相変わらずレベル低くてイイヨイイヨーw
625nobodyさん:2006/04/12(水) 14:23:30 ID:???
>>624
誤爆?
626nobodyさん:2006/04/12(水) 15:16:50 ID:Cw1Ovj1p
s関数についての質問です。
参考書には、(s/検索文字/置換文字/)という形で書かれているのですが。
コードを読んでいると、以下のような書き方を見つけました。

$datadir =~ s!/$!!

ググって見たんですが、この書式について書かれたドキュメントを
見つけることが出来ませんでした。
この命令がどのような挙動をするか教えてください。
627nobodyさん:2006/04/12(水) 15:17:32 ID:???
実行してみればよいのでは?
628nobodyさん:2006/04/12(水) 15:19:08 ID:???
>>626
つperlop
ttp://perldoc.jp/docs/perl/5.6.1/perlop.pod
Quote and Quote-like Operatorsのところ
629nobodyさん:2006/04/12(水) 15:38:52 ID:???
「!」をデリミタとしてるわけですか
630nobodyさん:2006/04/12(水) 17:45:11 ID:ZYfftFgu
すみません
Microsoft WORD の MIME typesはなんになるのでしょうか?
アップローダに認識を追加したいのです
631nobodyさん:2006/04/12(水) 17:55:54 ID:0tB7vJSs
PATH_INFOで
http://example.com/index.pl/hogehoge/

http://example.com/hogehoge/
でアクセスできるようにするにはどうすればいいですか
index.plを省略したいんです
632nobodyさん:2006/04/12(水) 17:58:25 ID:Sri0F7ev
633nobodyさん:2006/04/12(水) 18:07:23 ID:???
>>630

      , イ)ィ -─ ──- 、ミヽ
      ノ /,.-‐'"´ `ヾj ii /  Λ
    ,イ// ^ヽj(二フ'"´ ̄`ヾ、ノイ{
   ノ/,/ミ三ニヲ´        ゙、ノi!
  {V /ミ三二,イ ,  /,   ,\  Yソ
  レ'/三二彡イ  .:ィこラ   ;:こラ  j{
  V;;;::. ;ヲヾ!V    ー '′ i ー ' ソ
   Vニミ( 入 、      r  j  ,′
   ヾミ、`ゝ  ` ー--‐'ゞニ<‐-イ
     ヽ ヽ     -''ニニ‐  /
        |  `、     ⌒  ,/
       |    >┻━┻'r‐'´
      ヽ_         |
         ヽ _ _ 」

  ググレカス [ Gugurecus ]
  ( 2006 〜 没年不明 )
634nobodyさん:2006/04/12(水) 18:12:50 ID:???
>>633
      、ヾ:;:::::::::::::::::::::':::::::-、
     、ミ::::::';:::::::::::::::::;';:::::::::::::::::ヾ、
    i':::::::::::::::::::::::::::::::::::::::::::::::::::::::ヽ
    ミ:::::::::::::::::;:;;::::::r -‐'''"'ヽ::::::::::!;!
     ミ::;r--‐'  `ヾ     ミ::::::::::i
     .l::!           ;.:ミ、:::;::::l,r‐、
     ヾ         _,......::::/'ヾ:::: ;.!
       !      .::'r t.j;、:::/:::: ::' ' !
       i.llir_,=:ll!,.- :l:. ::::'::',!:::::::; ...!-'!:ヽ
        _! ``´' l! ' ,`−´ .::::: ::::::::l:::::::`:::
        ヾ ‐ '´;  ,ィ:.,    .::::::::::::l:::::::::::::
         ヽ  ,r';';":;:::";';;! ..:::::::::::/:::::::::::::
       ,r::::::::ヽ ''-''.二-‐'"..:::::::::;:::::::::::::::::::
      /::::::::::::::::::::ヽ、 __,...::::::::::;:::::::::::::::::::::::
      l:::::::::::::::::::::::::! /::::!:::::. /::::::::::::::::::::::::
     /:::::::::::::::::::::::::l ./::::::::ヽ /:::::::::::::::::::::::::::

         ツ・レタ [T .Reta]
          (1940〜 ウガンダ)
635nobodyさん:2006/04/12(水) 19:26:44 ID:EyVZ0TsJ
すいませんどなたかお願い致します。
CGI.pmによる、「アップロードされたファイルのサイズ取得方法」
ですがどのようにすれば良いのでしょうか?
636nobodyさん:2006/04/12(水) 19:57:04 ID:??? BE:144342926-#
>>630
application/msword

>>631
mod_rewriteでも使えや
637nobodyさん:2006/04/12(水) 20:17:17 ID:???
>>635
statの7
638nobodyさん:2006/04/12(水) 22:32:12 ID:???
>>636
有り難うございます

ずるぼんアップローダですが、本体スクリプトのMINE typesの部分に追加
するだけじゃだめなようですね
639nobodyさん:2006/04/13(木) 04:37:15 ID:???
ごめん、ちょっと教えて。

ローカルサーバ (Win+Apache) で、Perl を C:\Perl にインストールしたとすると、
普通は 1行目を #!C:/Perl/bin/perl って書かないとじゃんね。
これ1行目 #!/usr/bin/perl のまま変更しなくてよくするにはどうするんだっけ?
いつか見た記憶があるんだけど忘れちゃったw

C:\usr\ に Perlインストールする、とか、
C:\usr\bin に perl.exe コピーすればなぜか使える、とか、
Apache じゃなく ANHTTPD ならイケル、とか、は知ってるけど、それ以外で何とか。
640nobodyさん:2006/04/13(木) 06:02:52 ID:???
とか言ってたらごめん自己解決 orz

httpd.conf で 「ScriptInterpreterSource registry」 を有効にして、
レジストリで 「HKEY_CLASSES_ROOT」 の 「.pl」 のとこのを 「.cgi」 にコピーしたらできたー。

#!/usr/bin/perl  討 伐 完 了
641nobodyさん:2006/04/13(木) 08:39:20 ID:???
C:にインスコする時点で終っとる
642nobodyさん:2006/04/13(木) 13:40:43 ID:???
いや、実際インスコしてんのは D: だけど、今回は C: のがわかりやすいと思ってそうしたんだけどね。
検索かける分にも "d:\perl" より "c:\perl" のが多いわけだし。
わざわざツッツキあり^^
643nobodyさん:2006/04/13(木) 14:04:20 ID:???
#!/
がどこを指すか、わかるよな?
644nobodyさん:2006/04/13(木) 14:07:00 ID:???
>>643
それはわかるが、言いたいことがわからんしw
645nobodyさん:2006/04/13(木) 14:31:04 ID:???
>>644
無理して知る必要もないかと。
646nobodyさん:2006/04/13(木) 14:41:03 ID:???
Winの場合PATH通ってれば#!perlでも大丈夫じゃん
647nobodyさん:2006/04/13(木) 14:56:09 ID:???
そこでlighttpdですよ
648nobodyさん:2006/04/13(木) 15:16:42 ID:???
つシンボリックリンク
649nobodyさん:2006/04/13(木) 17:10:34 ID:???
つシボリクリック
650nobodyさん:2006/04/13(木) 17:52:38 ID:???
shebangを #!/usr/bin/perl にしたままWin鯖で動かすのが目的って質問文に書いてあるだろ
651nobodyさん:2006/04/13(木) 18:05:56 ID:???
C:\usr\bin
ここにシンボリックリンクを置けばいいんじゃないの?コピーではなく。
652nobodyさん:2006/04/13(木) 18:11:12 ID:???
うん。ショートカットとかいうのを
\usr\bin\perl
\usr\local\bin\perl
として転がしておけば #!/usr/local/bin/perl -w みたいなオプションつきのも
記述どおりの動きになるんじゃないのかな。
653nobodyさん:2006/04/13(木) 18:14:16 ID:???
ショートカットじゃ無理だと思う。
654652:2006/04/13(木) 18:20:22 ID:???
あら、無理なんですか。ウニクスのsymlinkみたいなものかと思ってました。
# 普段は /usr/local/bin/perl が本体、 /usr/bin/perl -> /usr/local/bin/perl で使用。

Win機で試してみます。
655652:2006/04/13(木) 18:36:43 ID:???
>127.0.0.1 - - [13/Apr/2006:18:25:47 +0900] "GET /test.cgi HTTP/1.1" 500 1183

>[Thu Apr 13 18:25:47 2006] [error] [client 127.0.0.1] (OS 2)指定されたファイルが見つかりません。 :
> couldn't create child process: 720002: test.cgi

ショートカットでは無理なんですね。
perl.exeのコピーを置かないとダメみたいです。こちらは200 OK。

自分であまり使わない環境なのになんでテストしてるんだろう…。
656nobodyさん:2006/04/13(木) 18:46:11 ID:???
ショートカット    ×
シンボリックリンク ○
コピー         ○

Winにもsymlinkがあるからそれを使えばコピーじゃなくておk、ということです。
657nobodyさん:2006/04/13(木) 18:53:08 ID:???
すごく突っ込まれそうなレスになってしまったがまあいいや。

ttp://eside.homeip.net/free/symlink2k.html
これ、便利です。
658nobodyさん:2006/04/13(木) 19:01:09 ID:???
起動するインタプリタを設定によって変えるモジュールあっても良いな…作るか便利そうだし
659652:2006/04/13(木) 19:09:25 ID:???
横レスから板違いになってすみません。

>>656-657
情報ありがとうございます。
ショートカットでない、ジャンクションっていうのがあるのを知りませんでした。
自分でも調べてみます。
660nobodyさん:2006/04/13(木) 19:39:25 ID:???
Cygwin のシンボリックリンクってコレだったのか。
661639:2006/04/13(木) 20:04:21 ID:???
えええ、Win でもシンボリックリンクっぽいのできたんかーΣ(゚Д゚)
みんな良レスありがとないー。
662nobodyさん:2006/04/13(木) 23:42:55 ID:???
なにもそこまでがんばらんでも、管理するwebサイトの配置をD:\のどこかにして、
perlインスコ先をD:\usrにすれば/usr/bin/perlって指定出来るじゃん
663nobodyさん:2006/04/13(木) 23:49:06 ID:???
まあ、Windows なんかで鯖やるようなやつはばかです。
それがたとえ実験環境であってもです。
664nobodyさん:2006/04/14(金) 00:25:23 ID:???
レン鯖で実験されるよりは遥かにマシだから俺は許す
665nobodyさん:2006/04/14(金) 00:26:48 ID:???
VMware player 使うべきなんじゃないかと思う。
666nobodyさん:2006/04/14(金) 00:30:55 ID:???
レン鯖で実験するような人間がVMware使えるわけがない
ましてやLinuxインスコなんてとてもとても
667nobodyさん:2006/04/14(金) 00:40:26 ID:???
という固定観念。
668nobodyさん:2006/04/14(金) 00:57:40 ID:???
>>662
だって、php とか c++ とかを D\:php とか D:\cpp とかにいれてるのに、perl だけ1行目のためだけに D:\usr にするとかありえなくね?
レジストリとかリンクいじるだけでできるんならそっちのがイイヨ(´・ω・`)
669nobodyさん:2006/04/14(金) 01:05:31 ID:???
ぷげらっちょ
670nobodyさん:2006/04/14(金) 02:34:19 ID:???
.cgiをperlに関連付けして使ってる。
1.3系列だけど。
671658:2006/04/14(金) 03:34:06 ID:???
ということでmod_shebang作った。
ttp://www.42ch.net/UploaderSmall/source/1144953006.zip
モジュールをロードして
ShebangAlterCommand /usr/bin/perl perl.exe
こんな感じ
672nobodyさん:2006/04/14(金) 04:18:43 ID:???
はやっ。乙…なんだけど、テストするスキもないまま書いててすまんです。

ある日、apacheのdistから取ってきたtar玉ほどいて mod_shebang.c が入ってたら
腹抱えて笑うんだろうね。
673nobodyさん:2006/04/14(金) 12:37:47 ID:???
>668
俺は PHP を /usr/php に入れてるしなぁ

運用のときの事を考えないやつ多いんだな・・・
674nobodyさん:2006/04/14(金) 12:54:18 ID:???
shebang 行は、ふつー #! @PERL@ じゃネーノ?
675nobodyさん:2006/04/14(金) 13:45:24 ID:???
>>673
php って mod_php 環境で使うのがふつーだとおもてた。
676nobodyさん:2006/04/14(金) 14:10:16 ID:???
いい加減スレ違いだから消えてくれないか
あくまでコーディングの質問のスレだから。
677nobodyさん:2006/04/14(金) 14:11:00 ID:???
コマンドラインツールとして PHP を使ってる酔狂なひととみた。
678nobodyさん:2006/04/14(金) 14:44:54 ID:???
たとえば .svn/ を消すためにウンコスクリプトをでっちあげてしまったがために
dis られるような、そんな「酔狂」なひと?
679nobodyさん:2006/04/14(金) 16:41:08 ID:???
はてな以外ではじめて「disる」の表現をみた
680nobodyさん:2006/04/14(金) 16:49:09 ID:???
681nobodyさん:2006/04/14(金) 19:02:36 ID:???
682nobodyさん:2006/04/15(土) 14:22:44 ID:WxXRjWCr
Shift_JISの掲示板で半角の「¥」を入力すると、
データファイルでは「¥」になっているのに、
半角「\」で表示されてしまいます。
これを退避する方法はありますか?
683nobodyさん:2006/04/15(土) 14:40:49 ID:???
エンコードとか関係ない。
フォントによる。
684nobodyさん:2006/04/15(土) 15:18:27 ID:TyfvpvYA
正規表現についての質問です。
文字aから始まって文字bで終わる文字列のなかでも、
文字zが入らないような文字列にマッチさせるにはどうしたらいいでしょうか。
a.*[^z].*b
ではまったく意味をなしませんよね・・・。
685nobodyさん:2006/04/15(土) 15:21:49 ID:???
a[^z]*?b
686nobodyさん:2006/04/15(土) 15:49:39 ID:???
>>684
こう
^a[^z]*b$
687nobodyさん:2006/04/15(土) 16:11:35 ID:c44RBImj
JPG、GIF、および PNG 画像を、単にピクセル リサイズではなく、きれいに縮小してくれる Perl モジュールを探しています。
688nobodyさん:2006/04/15(土) 16:14:12 ID:???
ImageMagick
689nobodyさん:2006/04/15(土) 18:06:11 ID:c44RBImj
単にピクセル リサイズではなく、きれいに縮小
690nobodyさん:2006/04/15(土) 18:07:08 ID:???
ImageMagick
691カシス:2006/04/15(土) 18:44:04 ID:???
質問スマソ。
自作Perl・CGIで作るマガをwebを通して発行する。
outlook2000で見ると改行できない。
他のbeckyとかoutlookexpressならちゃんと改行出来ている。
・・・そこで一度FTPを通してアップするとちゃんと改行出来ている。

自分PerlもCGIも詳しくないのでナゼなのかわからないのです。
CGI・Perlの両方のデータ持ってるんで誰か心優しい方教えてください。
692nobodyさん:2006/04/15(土) 18:46:15 ID:???
日本語でもう一度質問して下さい
693nobodyさん:2006/04/15(土) 18:58:32 ID:c44RBImj
では、もう一度質問します。
JPG、GIF、および PNG 画像を、単にピクセル リサイズではなく、きれいに縮小してくれる Perl モジュールを探しています。
694nobodyさん:2006/04/15(土) 19:04:10 ID:???
ImageMagick
695nobodyさん:2006/04/15(土) 19:04:11 ID:???
IMは綺麗に縮小してくれますよ
696nobodyさん:2006/04/15(土) 19:32:16 ID:???
つ optpix
697nobodyさん:2006/04/15(土) 20:24:26 ID:q8gKpXSp
Perlで変数名を動的に付ける方法を教えてください; たとえば、「yamada」と入力があった場合は「$yamada」なる変数を作るという意味です(「入力」というのは、あくまで例です)。
「なんでそんなこと考える必要がある?代替法を考えてやるから、やりたいことを書いてみろ」というのではなく、所期の目的を達成する方法だけを教えてください。
698nobodyさん:2006/04/15(土) 20:33:36 ID:???
>>697
なんでそんなこと考える必要がある?代替法を考えてやるから、やりたいことを書いてみろ



>>574-581
699nobodyさん:2006/04/15(土) 20:37:39 ID:q8gKpXSp
エスパーの方、お願いします。
700nobodyさん:2006/04/15(土) 20:44:07 ID:???
${'yamada'} = 'vip';
print $yamada;
701nobodyさん:2006/04/15(土) 20:44:33 ID:???
次の質問どうぞ
702nobodyさん:2006/04/15(土) 20:49:22 ID:???
もう来ねぇよ
703nobodyさん:2006/04/15(土) 20:53:54 ID:???
オレ697だけどもう来ねぇよ
704nobodyさん:2006/04/15(土) 21:03:35 ID:???
>>703
ID出せよm9(^Д^)プギャー
705nobodyさん:2006/04/15(土) 22:04:00 ID:???
>>687-690, >>693-694
お前ら、おもろいな。
706nobodyさん:2006/04/15(土) 22:23:24 ID:???
>>687-690, >>693-694
爆笑したwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwww
707nobodyさん:2006/04/15(土) 22:27:10 ID:???
>>687-690, >>693-694

ここまで頭の悪い質問者と、律儀な回答者は、初めて見た。
708nobodyさん:2006/04/15(土) 22:53:42 ID:???
そんなに面白いか?
709nobodyさん:2006/04/15(土) 23:14:40 ID:???
ややウケ
710nobodyさん:2006/04/15(土) 23:30:23 ID:oGexcrlz
http://www3.pref.yamanashi.jp/uryo/i/C06.htmlにアクセスしてデータを取得するCGIを作ってます

サーバーにアクセスすると、サーバーがデータをよこさない様子で
下のスクリプトの最後の行の手前までは問題なく動くのですが、最後の行で止まります。
どうやらwww3.pref.yamanashi.jpのサーバー全てで同じく止まるようです。

このスクリプトでwww.pref.yamanashi.jpはじめ他のサーバーなら問題なくデータが取得できているので
スクリプトの基本はできているはずなんですが何が問題なんでしょうか?どうぞよろしくお願いします。

print SOCK "GET @_[1] HTTP/1.1\n";
print SOCK "Host: @_[0]\n";
print SOCKET "Connection: close\n\n";
print SOCK "User-Agent: @_[2]\r\n";
print SOCK "\r\n";
@SOCK = <SOCK>;
711nobodyさん:2006/04/15(土) 23:36:47 ID:???
あーもうめんどいから
use LWP::Simple;
して
$data = get 'http://www3.pref.yamanashi.jp/uryo/i/C06.html';
でもしとけ
712nobodyさん:2006/04/15(土) 23:53:56 ID:???
突っ込み所が多すぎてもうどこから突っこんでいいやら
スライシングになってるのとか\r\nと\nの混在とか一つだけSOCKETとか…
配列の要素一つを表すには$_[0]…というか名前付けろよ

まあLWP使って置いた方が確実
713nobodyさん:2006/04/16(日) 01:09:21 ID:???
確かに、つっこみたい点は多いのだが、試しに
perl -MLWP::Simple -e "print get 'http://www3.pref.yamanashi.jp/uryo/i/C06.html';"
してみると、確かに何も出ない。
どういうことだ?
714nobodyさん:2006/04/16(日) 01:16:23 ID:???
Windows XP SP2 Active Perl 5.8
715nobodyさん:2006/04/16(日) 01:18:01 ID:???
ではちゃんと取得できるけど。
716nobodyさん:2006/04/16(日) 01:23:03 ID:???
>713
今試したら出てきたよ
717713:2006/04/16(日) 01:41:35 ID:???
単なるPMTUブラックホールでした。スマソ。
おそらく710も同じ原因だと思われ。
でも、スクリプトが酷すぎるので、LWPを使うのをお勧めする。
718710:2006/04/16(日) 03:09:37 ID:???
皆さんありがとうございます。
細かい文法もわからずコピペで作ったので
これを機に直してみます。

とりあえずLWPというのをやってみます。
719nobodyさん:2006/04/16(日) 05:48:11 ID:???
コピペで作ったって?えらい度胸あるな。
どうしても実現したいという気持ちはわかるが。
720nobodyさん:2006/04/16(日) 10:26:11 ID:???
Windows ActiveOerl 5.8.7なんですが、

ABC[CR][LF]
ABC[CR][LF]
ABC[CR][LF]
([CR]は\x0Dで[LF]は\x0Aです)

こんなファイルを

open(DAT,"TEST.txt");
binmode(DAT);
print while( <DAT> );
close(DAT);

として読み出すと、なぜか
ABC[CR][CR][LF]
とCRが増えるんですが何故でしょうか?
[LF]を[CR][LF]に変換しちゃってるようなんですが、binmodeにしても変換が行われるのですか?
721nobodyさん:2006/04/16(日) 11:04:54 ID:???
>>720
Perlは入力と出力、両方で改行コードをいじる機能がONになっている。
どういう用途か知らんが、(binmodeしてない)テキストモードなら入力のCRLFをちゃんと\nとして認識してくれるぞ?
722nobodyさん:2006/04/16(日) 11:21:18 ID:???
おおなるほど、binmode(STDOUT)でうまくいきました。

CGIのヘッダとして常に出力する定型文があるのですが、それはLFで保存されています。
ついでにHTTPレスポンスも外のファイルにしたいと思いまして。
そこで、HTTPの応答はCRLFだったので、外部ファイルにCRLFで保存して試したところ
上のような状態になりまして…。

よく見れば定型文の方もLFが全てCRLFになっていたのですが、こっちは気がつきませんでした。
どうもありがとうございました。
723nobodyさん:2006/04/16(日) 11:49:38 ID:???
ActiveOerl
724nobodyさん:2006/04/17(月) 20:57:23 ID:???
このスレで
変数名の内容の変数を作る
ってのを見たんだけど、これを関数で出来ないんですか?

たとえば
my($funcname) = 'calc';
ってしたあとに
&{$funcname}
ってやると
sub calc
が呼ばれるみたいな感じ

何がやりたいのかっていうと、自分で書いてるスクリプトに plugin で機能追加できるように
したいんですけど、イマイチやりかたが思い浮かばないので上記の方法が出来れば簡単かなって・・・
725nobodyさん:2006/04/17(月) 21:03:38 ID:???
ごめん自己解決しました

my($funcname) = \&{'test'};

で関数名を入れて、

&$funcname;

で呼び出せました

plugin を実現するには require とか use しないといけないかなぁ・・・とか思ってたけど、
これでなんとかperlでもっともっと遊べそうです
726nobodyさん:2006/04/17(月) 21:05:31 ID:???
あっ、require とか use はしなくちゃいけないんだよ
何書いてんだか orz


package でスクリプト書ける人はこんな回りくどいやり方とかはしないのかしらん?
plugin とか実装したことのある人の意見とかアドバイスがあったらよろしこです m(_ _)m
727質問:2006/04/17(月) 21:09:36 ID:fgM7OcPI

正規表現にて
&str1 = "ZZZZ"
&str2 = "YYYY"
$bufの値の中で
value="xxxZZZZxx"
を見つけたら
value="YYYYxxxZZZZxx"
に一括変換したい。
(xは任意の文字列、英数字および.~-/?&+=:@%;#%)

いろいろ試しましたが
$bufから"value="が消滅したりしてだめでした。

だれか力を貸してください。
728727:2006/04/17(月) 21:25:52 ID:fgM7OcPI

正規表現でもなくともいいのですが・・・
729nobodyさん:2006/04/17(月) 21:27:37 ID:???
>>724
「require」「package」「シンボルテーブル」あたりの知識が足りないの分かってんなら調べりゃいいじゃん。
そもそもplug-inで追加される機能が誰に対してのものなのか。

>>727
$bufの文字列内に$str1が存在すれば$bufの7文字目と8文字目の間に$str2を挿入するってこと?
substrを左辺値にして使うといい。
どうしても置換でしたければ s/^(value=")(.*$str1.*")$/$1$str2$2/;
730nobodyさん:2006/04/17(月) 22:01:31 ID:???
よく >>727の壊れた質問の意味が分かったねぇ。。。
大体&str1, &str2って何よw
731727:2006/04/17(月) 22:08:29 ID:fgM7OcPI

>>730
$str1,$str2でした。
732727:2006/04/17(月) 22:33:27 ID:fgM7OcPI

>>729
>$bufの文字列内に$str1が存在すれば$bufの7文字目と8文字目の間に$str2を挿入するってこと?
という意味ではなく、
$bufの文字列内の任意位置に「value="xxxZZZZxx"」(xは0文字以上の英数字(.~-/?&+=:@%;#%))
という文字列部分を
「value="YYYYxxxZZZZxx"」に変換したかった。

ありがとうございます。
$buf =~ s/(value\=\")([\w\.\~\-\/\?\&\+\=\:\@\%\;\#\%]*$str1[\w\.\~\-\/\?\&\+\=\:\@\%\;\#\%]*\")/$1$str2$2/g;
にて動作いたしました。(テストパターンが万全ではないですが・・・)

何か間違いなどがございましたら、ご指摘ください。
733nobodyさん:2006/04/17(月) 22:43:52 ID:???
pluginて書いたこと無いが、
opendirでpluginディレクトリ開いて順に名前を取得したらrequireなりuseなりすりゃいんじゃないの?

てか明らかにuse strict;したこと無いやつにそこまで無理するなと言いたい
734nobodyさん:2006/04/17(月) 23:01:48 ID:???
これ参考にすればよくなくね?

sub load_plugin {
my($self, $config) = @_;

my $module = delete $config->{module};
$module =~ s/^Plagger::Plugin:://;
$module = "Plagger::Plugin::$module";

if (my $path = $self->plugins_path->{$module}) {
eval { require $path } or die $@;
} else {
$module->require or die $@;
}

$self->log(info => "plugin $module loaded.");

my $plugin = $module->new($config);
$plugin->cache( Plagger::CacheProxy->new($plugin, $self->cache) );
$plugin->register($self);

push @{$self->{plugins}}, $plugin;
}
735nobodyさん:2006/04/17(月) 23:22:47 ID:???
無意味なエスケープ大杉
736nobodyさん:2006/04/17(月) 23:23:20 ID:???
735は>>732
737nobodyさん:2006/04/17(月) 23:38:05 ID:???
うごきゃええねんうごきゃ
738nobodyさん:2006/04/18(火) 00:03:22 ID:???
>>734
はてブからきますた
739nobodyさん:2006/04/18(火) 00:49:34 ID:???
740nobodyさん:2006/04/18(火) 00:52:31 ID:???
>733
require した際に各プラグインが最初に実行する関数をたとえば pluginmain としたとして、
そうすると複数のプラグインで関数名がだぶることになって -W 付で実行してるとエラー吐かれるんですよ
だから各プラグインで実行される関数名をプラグインから指定すりゃまぁなんとかなるかなって思った次第です

>734
その関数に渡される値が何なのかわからないからどうとも言えないかなぁ


とりあえず真面目にパッケージとか学んでみようかと思う
741nobodyさん:2006/04/18(火) 01:07:27 ID:???
>>740
> その関数に渡される値が何なのかわからないからどうとも言えないかなぁ

調べればわかるのでは?
742nobodyさん:2006/04/18(火) 02:36:43 ID:???
>>740
#!/usr/bin/perl -W
use strict;
{ package Foo; sub new { bless { foo => 'foo' } } sub var { $_[0]->{'foo'} } }
{ package Bar; sub new { bless { bar => 'bar' } } sub var { $_[0]->{'bar'} } }
{ package Baz; sub new { bless { baz => 'baz' } } sub var { $_[0]->{'baz'} } }
print join ',', Foo->new->var, Bar->new->var, Baz->new->var;
__END__
http://www.kt.rim.or.jp/~kbk/perl5.005/perlmod.html
http://www.kt.rim.or.jp/~kbk/perl5.005/perlobj.html
http://www.kt.rim.or.jp/~kbk/perl5.005/perlbot.html
http://perl.infoware.ne.jp/documents/perlboot.ja.html
http://search.cpan.org/~miyagawa/Plagger-0.6.3/
743nobodyさん:2006/04/18(火) 10:30:14 ID:???
733です。

パッケージなんて簡単だろ。
package Plugin::Foo
sub baa{

}
....

て書いてrequire Plugin::Foo;
名前空間を無かったことにしたいなら呼び出し先でuse Exporter;しろ
744nobodyさん:2006/04/18(火) 13:20:05 ID:???
正規表現なんですが・・・、
掲示板等でタグを使用不可にしたいのですが、
&は変換するけど、&はそのままで除外するという場合
どのようにすればよいでしょうか?

$str =~ s/&[^(amp;)]/&/g;

このようにしたのですがうまくいきません。
745744:2006/04/18(火) 13:23:54 ID:???
あれ?表示されなかった。
訂正します。全角にしました。

&は変換するけど、&amp;はそのままで除外するという場合です。
$str =~ s/&[^(amp;)]/&amp;/g;

うまくいきません。
746nobodyさん:2006/04/18(火) 14:13:25 ID:???
s/[^(&amp;)]&/&amp;/ig;
747nobodyさん:2006/04/18(火) 14:16:59 ID:??? BE:281592037-
>>744
それ自体を実現するには否定先読みを使えば良い
$str =~ s/&(?!amp;)/&amp;/g;

が、もしかすると、やりたいことは置換の順序を変えればできたりしない?
$str =~ s/&/&amp;/g;
$str =~ s/</&lt;/g;
$str =~ s/>/&gt;/g;
$str =~ s/"/&quot;/g;
748744:2006/04/18(火) 14:45:53 ID:pGVz01kP
>>746
出来ませんでした。ありがとうございました。

>>747
おぉ!出来ました。ありがとうございました。
否定先読みというのは初めて知りました。
ちなみに「やりたいこと〜」でご指摘されてることは私の想定していたことではありませんが、
よく見るそのやり方の順序に意味があったとは知りませんでした。
なるほど、勉強になります。
749nobodyさん:2006/04/19(水) 16:50:38 ID:YxQG/IvK
外国からのスパムに悩まされてます。
で、ある文字列数以上の長さ以上で
  文字列($comment)に全角がなかったら スパムって判定をしたいと考えてます。

見よう見真似で
---------------------------------------------------------
if(length($comment) > 128){ #128文字以上の場合チェック
$spam_flg = 1;

if ($comment =~ /[\xA1-\xFE][\xA1-\xFE]/){ #全角が含まれてるから日本語
$spam_flg = 0;
}
if($spam_flg > 0){ #多分に外国のお方。
Error("スパムでした");
}
}
----------------------------------------------------------
でやったのですが
判定が成功せずに、全文半角でも $spam_flg= 0 になっちゃいます。
if ($comment =~ /[\x80-\xff]/) {  でもだめでした。
文字コードはEUCです。

 どなたか m(_ _"m)ペコリ
750nobodyさん:2006/04/19(水) 17:41:23 ID:???
751nobodyさん:2006/04/19(水) 17:52:53 ID:???
教えてください。

Jcodeを使うときに、

$str = jcode($str)->mime_encode;

で、メールのヘッダ部分を作れ、

$str = jcode($str)->mime_decode->sjis;

で元に戻りますよね?
で、同じことをEncodeモジュールでやろうとして

use Encode 'decode', 'encode';
my $str = 'ソース焼きそば十杯おいしいな☆';
my $header = encode('MIME-Header-ISO_2022_JP', $str);

だとエンコードされた文字列がおかしく(Jcodeと比較して)、さらにデコードの方法がわかりません。

my $str =
'=?ISO-2022-JP?B?P1w/Wz9YPxskKEQ/PxsoQj8/Pz8bJChEPz8bKEJcP3Q/Pz8/Pz8/Pz8/?=
=?ISO-2022-JP?B?Pz9cPz8/GyQoRD8/GyhCPz8/Pz8/Pz8/Pz8/?=';
$str = decode('MIME-Header-ISO_2022_JP', $str);

だと、”MIME B unsupported..”

Encode::from_to($str,'MIME-Header-ISO_2022_JP','shiftjis');
でも同じ・・・
ソースはsjis書いています。
よろしくお願いします・・・。
752nobodyさん:2006/04/19(水) 18:11:24 ID:???
encodeはUTFフラグ付しか受け付けなかった希ガス
753749:2006/04/19(水) 20:40:17 ID:tcTD8ojr
>>750さん、ありがとうです。
でも、全角文字の判別がよくわかんないです
 もうちょっと。。 m(_ _"m)ペコリ
754nobodyさん:2006/04/20(木) 11:17:19 ID:???
>751
# Shift_JISで保存
use Encode qw/encode decode/;
use Jcode;

my $str = 'ソース焼きそば十杯おいしいな☆';

# Jcode
my $header_jcode = jcode($str)->mime_encode;
print "$header_jcode\n";
print jcode($header_jcode)->mime_decode->sjis, "\n";

# Encode
my $header_encode = encode('MIME-HEADER-ISO_2022_JP', decode('Shift_JIS', $str));
print "$header_encode\n";
my $decoded = encode('Shift_JIS', decode('MIME-HEADER', $header_encode));
print "$decoded\n";
755751:2006/04/20(木) 17:25:34 ID:???
>>752
>>754

754でできました。ありがとう。
756nobodyさん:2006/04/20(木) 17:58:44 ID:???
千奈美にdecodeでフラグ付UTFに変換してる
757nobodyさん:2006/04/20(木) 22:59:54 ID:???
>>749
128文字以上。って条件を忘れてテストしてないかい?
758nobodyさん:2006/04/21(金) 16:34:52 ID:c29HAKrq
ある変数に全角文字が1文字入ってるのですが、
この1文字が「漢字」か「漢字以外」かを判別する方法を教えて下さい。
文字コードはEUC使ってますが、UTF-8でも良いです。
よろしくお願い致します。
759nobodyさん:2006/04/21(金) 16:39:19 ID:???
/[亜-熙]/ 漢字の範囲
JperlかPerl5.8以降を使ってねん
760nobodyさん:2006/04/21(金) 16:40:03 ID:???
あ、Jperlはshiftjisだっけ。条件からいきなり外れて失礼。
761nobodyさん:2006/04/21(金) 17:12:42 ID:???
>>758
1バイト目が\xB0以上だったら漢字でいいんじゃない
762nobodyさん:2006/04/21(金) 17:17:29 ID:???
>>758
\x8Fで始まる3バイト漢字を忘れていた
763nobodyさん:2006/04/21(金) 17:20:11 ID:c29HAKrq
>>759
ありがとうございます。やってみたのですが、上手く動きません。
ひらがなにもカタカナにもマッチしてしまいます。

試しに

/あ/

だと、ちゃんと「あ」にマッチするのですが、

/[あ]/

だと、「あ」以外の全ての文字にマッチしてしまいます。
どうも日本語で文字クラスが使えないっぽい…。

Perlのバージョンは5.8.5、EUC環境です。
何か初歩的なまちがいをしてるような気もしますが、
もしありがちなミスなどあれば教えて下さい。
よろしくお願い致します。
764763:2006/04/21(金) 17:51:19 ID:???
すいません。うまくいかないのでutf-8でやったら
全て解決しました。
みなさん、ありがとうございました。
765nobodyさん:2006/04/21(金) 23:19:35 ID:???
あるフォルダαに入っているファイルA、B、C のパーミッションを全て統一したい時はどういった方法があるのでしょうか?
ABCは数が変動する為指定する事ができずお手上げで…。
766nobodyさん:2006/04/21(金) 23:20:59 ID:???
そういう質問はお手上げで。w
767nobodyさん:2006/04/21(金) 23:32:11 ID:???
system 'chmod -R 000 /path/to/folder';
768nobodyさん:2006/04/22(土) 00:07:01 ID:???
>>767
頭が悪い例を示してますね。
769nobodyさん:2006/04/22(土) 00:27:08 ID:???
まぁ、君よりはマシだけどね
770nobodyさん:2006/04/22(土) 00:40:06 ID:???
>ABCは数が変動する為
ファイル数が変動するってことか?
readdirでファイル一覧取得してchmodじゃだめなのか?

いいたいことを勘違いしてたらすまそ
771nobodyさん:2006/04/22(土) 04:40:48 ID:???
File::chmod使って

use File::chmod;

chmod(0666, <*>);

とか?
772nobodyさん:2006/04/22(土) 08:49:21 ID:???
すみません、お願いします。

ファイル名を変えるのに、単純に、
rename "AB1234.txt","AB0000.txt";
は上手くできるのですが、

ディレクトリ内のファイルの探してから名前を変えようと
したら上手くいきません。何がダメなんでしょうか?
use File::Find;
$dir="./";
find(sub { push @files, $File::Find::name if -f }, $dir);
foreach(@files){
if(substr($_,2,2) eq "AB"){
$file1=$_;
}
}
$file2="AB0000.txt";
rename "$file1","$file2";

よろしくお願いします。
773nobodyさん:2006/04/22(土) 11:03:29 ID:???
if(substr($_,2,2) eq "AB")

この条件に当てはまらなかった時、$file1はどうなる?
774nobodyさん:2006/04/22(土) 11:12:22 ID:???
っていうか、そもそもsubstrのパラメータがおかしいじゃん。

print substr("AB1234.txt", 2, 2);

を見てみる所から始めないと。デバッグの基本だよ。
Perl以外の言語経験があるかどうかは分からないけど、このレベルだと
何かプログラムと呼べる物を完成させるのは難しいと思う。
775nobodyさん:2006/04/22(土) 11:33:07 ID:???
if(substr($_,2,2) eq "AB") からして間違ってたか。→ "12"
ただしこれでも、/^..12(.*)/のファイルが全部条件に当てはまるので
どっちにしてもダメ。
やりたい事をぼかすのではなく、もっと正確に書かないと…。

カレントを見るならFile::Findなんか使う必要もないし、全体的に意味不明。
776751:2006/04/22(土) 12:35:38 ID:???
>>756
SJISやEUCでソース書く限り、その処理が全部について回るのか・・・
ありがとう。

>>772
単純にforeach(@files)の中で

if($_ =~ /^AB/){
  ・・・
}

でだめなん?

$_ =~ /^AB\d{4}/
$_ =~ /^AB\d{4}.txt$/

とか、大文字小文字区別したくなかったら最後に/iとか。
意味が違う?
777772:2006/04/22(土) 19:08:13 ID:???
レスありがとうございます。

if(substr($_,2,2) eq "AB"){ の件なんですけど、

@filesで格納されているのは、 "./AB1234.txt" となるので、
"./"を外すためにやってます。

カレントディレクトリの中に入っている ABで始まるファイルを
見つけて、それのファイル名を変更したいのです。
778nobodyさん:2006/04/22(土) 19:18:24 ID:???
ああ、申し訳ない。「./」が入るんだね。
じゃあこれでどうよ。

@files = grep /^AB/, glob "*";
rename shift @files, "AB0000.txt";
779772:2006/04/22(土) 19:35:58 ID:???
すみません、ありがとうございました。
じっくり考えたらこういうやり方がある事がわかりました。

@files=glob("AB*.txt");
$file1=$files[0];
$file2="AB9999.html";
$res = rename "$file1","$file2";

まだまだ勉強不足を痛感しました。(汗)
780 ◆TWARamEjuA :2006/04/22(土) 21:10:54 ID:??? BE:4900695-#
(´-`).。oO(ファイル名が存在しなかったときはどうなるんだろう。。。)
781772:2006/04/22(土) 21:13:23 ID:???
>>780
ファイルは必ずあるので大丈夫です。
782 ◆TWARamEjuA :2006/04/22(土) 21:45:39 ID:??? BE:2287837-#
opendir my $dir_handle, './' or die "Can not open directry.:$!";
foreach my $source_file (grep /^AB/, readdir $dir_handle) {
 $source_file or die "file not found.:$!";
 rename $source_file, $dist_filename
  ? last
  : die "Can not rename file.:$!"
}
closedir $dir_handle;

こんな感じかしら。。。
と思ったら、、、

>>781
そうですか。スマソ。
783nobodyさん:2006/04/23(日) 00:45:55 ID:???
772じゃないけど・・・

>782
くじけずにこれからもよろしこですm(_ _)m
784nobodyさん:2006/04/23(日) 06:58:39 ID:???
>>782
メンテナンス性のわるいコードでつね。
785nobodyさん:2006/04/23(日) 07:31:46 ID:???
>>784
とてもわかりやすいと思います。
メンテナンス性のいい例を提示してください。
786nobodyさん:2006/04/23(日) 07:33:44 ID:???
>>785
馬鹿が背伸びして知る必要もないと思われ。
787nobodyさん:2006/04/23(日) 07:38:00 ID:???
目くそうんこだな
788nobodyさん:2006/04/23(日) 07:44:07 ID:???
めくそはなくそではなく、うんこなのか。
789nobodyさん:2006/04/23(日) 07:45:46 ID:???
AWK Pythonだな
790nobodyさん:2006/04/23(日) 07:47:08 ID:???
それなんてスレ違い言語?
791nobodyさん:2006/04/23(日) 11:07:48 ID:???
>>784-790
            _,,‐─-v‐、,,、
         ,,-‐'": : : : : : : : : : `ヽ
        /: : : : : : : ,,__ : : : : : : \
      r': ,、,,.-─''"゛   ミ : : : : : : : 'i、
       `/ /        ミ_ : : : : : : :,、}
      i l    _,,..-‐^‐-、 `゙i: : : /l.l|
      i、}‐-、 ヽ;;/,rェッ;;'"  ゙ー' 9iリ!
      |  ',tテi  ヽ='"     ゞ t'
       |  'i"´| , -、         ヽ-、,,___
       |  '}、 !,,tu'"  ヽ、  ,l: ‐-‐" }: : : : :
       }   lヽ、__,,,.-‐ヽ  /: : : : : : /|: : : : :
     ,r/  /: : :ヽー‐'  ノ: : : : : : : / .|: : : : :
     /: \ /: : : : : 丶,, -''_: : : : : : /  |: : : : :
    /: : : : :ヽ/: : : : : : : ヾ''‐--‐ヽ   |: : : : :
   /: : : : : : : : : : : : : : : : : : ヽ\: : /   |: : : : :

     ビップ・デ・ヤレー[Vuip De Yale]
         (1955〜 フランス)
792nobodyさん:2006/04/23(日) 13:44:20 ID:???
まだ生きてんのか
793nobodyさん:2006/04/23(日) 16:36:39 ID:???
ム板のスレにもこのシリーズのAA貼り付けるガキが沸いてるな
いい加減寒いしウザいんでやめて欲しいのだが
794nobodyさん:2006/04/23(日) 17:29:00 ID:???
これってハッシュ?というものを引数にしているのですか?
名前の前に”-”がついているのは何か意味があるのでしょうか?
_____________________________________________________________________________________

ほとんどのCGI.pmルーチンはさまざまな引数を受け取ります。
中には20ものオプションの引数を受取るものもあります!
このインターフェースを簡単にするため、すべてのルーチンは以下のような
名前付き引数呼び出しスタイルを使います:

print $q->header(-type=>'image/gif',-expires=>'+3d');
795nobodyさん:2006/04/23(日) 17:35:28 ID:???
書いてある通りなのだが、何がわからんの?
796nobodyさん:2006/04/23(日) 17:50:30 ID:???
CGI.pm と CGI::Session を使ってCGIを組んでいます。

my @hoge;
my $ref = $session -> param('hoge');
if (ref($ref) eq 'ARRAY'){
@hoge = @$ref;
}else{
push(@hoge,$ref);
}

セッションのパラメータから値を受け取りたいのですが、
'hoge'が配列の場合はリファレンスが返り値になってしまい、
上記のように、型を調べなければならず面倒です。

my @hoge = $session -> param('hoge');

このように1行で済ませたいのですが、どのようにすれば宜しいでしょうか?
よろしくお願いします。
797nobodyさん:2006/04/23(日) 18:14:18 ID:???
>>794
是非とも作者に聞いてくれー。
構造的にはCGI.pm内部で使われているCGI::Utilのrearrange()が
パラメータの名前を扱うときは'-'を付ける仕様になってるから。

>>796
せめて二行なら。
push(@hoge, (ref($ref) eq 'ARRAY' ? @{$ref} : $ref));

ずばりその一行だけなら大仰だけどアダプタ作る。
適当にやるなら、サブルーチン作ってそれを呼び出すとか。
798nobodyさん:2006/04/23(日) 20:28:04 ID:???
>>796
試さずに書いてみるけど、ダミーのhogeを2つほどくっつけて、
常にリファレンスを返値にするようにしたらいいんじゃないの?
799nobodyさん:2006/04/23(日) 22:26:00 ID:??? BE:643637568-
>>794
その下にある例の
print $q->header('text/html');
のような形式と明確に区別するためかと
800nobodyさん:2006/04/24(月) 02:29:53 ID:???
公開ディレクトリ外にある画像などにアクセスするためのCGIを作ってみました。
もし画像が存在しなくてopenできないとき、404エラーにすることはできるでしょうか。

適当にSTDERRに「404 File not found」とか書いてみましたが、
apacheのログにはステータスコード500が残ってしまいます(dieとかしたため)。
宜しくお願いします。
801nobodyさん:2006/04/24(月) 02:30:49 ID:???
つ NPH
802nobodyさん:2006/04/24(月) 03:12:31 ID:???
「つ」っての流行ってるんですか(笑)
まさかと思って今ググって僕へのメッセージだと気づきました。
ありがとうございます。
803nobodyさん:2006/04/24(月) 03:13:16 ID:??? BE:201137235-
>>800
ヘッダに
Status: 404 Not Found
って手もある
804nobodyさん:2006/04/24(月) 03:56:30 ID:???
ありがとうございます。Statusのほうが簡単そうなので取り合えずやってみました。
下記のようなエラー処理で、それっぽいログが残るようになりました。これでいいのか
謎ですが。

print "Status: 404 Not Found \n"
print STDERR "File does not exist: $ENV{'DOCUMENT_ROOT'}$ENV{'SCRIPT_NAME'}?f=$filename";
805nobodyさん:2006/04/24(月) 07:47:18 ID:3duczMdL
汎用性の高いものにしようと思い、
吐き出すhtmlのhead要素の属性値を変数にしてみたんですが、
動かず、perlチェックなどに掛けてみると、それを定義する部分にこのようなエラーが出ました。

Name "main::keyword" used only once: possible typo at hospital.cgi line 11.

11行目の定義してる部分です。
何か使ってはいけない変数名とかあるのでしょうか?
分かる方お教え下さいますようお願いします。
806nobodyさん:2006/04/24(月) 08:07:54 ID:???
>>805
use strictしたほうがいい。
それは置いておくとして。

それエラーじゃなくて警告。
$keywordという変数がスクリプト中で一度しか使われてないから打ち間違いじゃない?
とPerlが気を利かせて言ってる。
変数名間違えてるんじゃないの?
807805:2006/04/24(月) 08:32:58 ID:3duczMdL
>>806
レスありがとうございます。
変数はrequireでplファイルを読み込んだ先で使っているのでそのような警告が出ていたようです。

use strict;を入れてチェックにかけると
Global symbol "$keywords" requires explicit package name at index.cgi 行番号 12.
というエラーが全ての変数で出ました。

サーバーのperlチェッカーでは
評価
◎ 所有者は問題ありません
◎ グループは問題ありません
◎ パーミッションに問題はありません
◎ 実行ディレクトリに問題はありません
◎ ヘッダ情報に問題はありません
◎ 改行コードに問題はありません
◎ 文法上の問題はありません

なのに500Internal Server Errorエラーで動きません。
考えられる原因は何がありますでしょうか?
ご教授宜しくお願い致します。
808nobodyさん:2006/04/24(月) 08:48:34 ID:???
>>807
いや、だからstrictが出したエラーが全てなんだが、英語読めないのか?
500が嫌ならstrict外して使えばいいだけだけど。
>>805のメッセージだけなら別に問題ないし。
809805:2006/04/24(月) 08:55:30 ID:3duczMdL
>>808
レスありがとうございます。
strict外して使って500エラーなんです。

外した状態でエラーメッセージは>>805のみです。
810nobodyさん:2006/04/24(月) 08:57:41 ID:???
何も考えずにuse strictいれたのか…。
なにも考えずに書かれたスクリプトでいきなり書いても無理。

んで動かない理由で500サーバエラーとか言われても何もわからない。

500 Internal Server Errorは、適切なContent-Typeヘッダが出力されませんでしたという、Apacheの結果的な応答。
実行したプログラムが出力したエラーはApacheのエラーログに書いてあるからそっちの内容がないとわからないよ。

ついでに、>>805では$keywordなのに>>807では$keywordsなんだけど、変数名大丈夫か…。
811805:2006/04/24(月) 09:06:05 ID:???
>>810
レスありがとうございます。
Content-Typeを確認したら間違っていました。
おかげさまで解決しました。
ありがとうございました。
812nobodyさん:2006/04/24(月) 09:24:55 ID:???
>>811
それ基本w
ついでにPerlコーディングとは関係ねーw
813nobodyさん:2006/04/24(月) 09:30:31 ID:3duczMdL
>>812
基本でしたか。
お手数おかけしました。
みなさん本当に有難う御座いました。
814nobodyさん:2006/04/24(月) 10:48:05 ID:???
>>797
>>799
ありがとうございます。
もう一つの質問の回答もお願いします。

この引数、ハッシュという形式に似ているように思われるのですが、ハッシュなのでしょうか?
815nobodyさん:2006/04/24(月) 10:54:21 ID:???
postさせたいんですがスタイルシート使っても
へんてこりんなデザインになってします。

フォームボタン使わずにgetみたいにpostさせる方法ってありますでしょうか?
816nobodyさん:2006/04/24(月) 10:58:28 ID:???
>>815
つ「Javascript」&「スレ違い」
817nobodyさん:2006/04/24(月) 11:18:38 ID:???
JavaScriptですかぁ。。。 getにするかなぁ
818nobodyさん:2006/04/24(月) 11:34:32 ID:???
つsocket
スレ違わないが、質問者の意図からはすれ違ってる予感
819nobodyさん:2006/04/24(月) 11:41:57 ID:???
スタイルシートって時点で>>816が正しい気がする
820nobodyさん:2006/04/24(月) 12:26:56 ID:???
>>797さんご指摘のrearrange()関数を見ると、引数がハッシュであることがわかりました。

sub rearrange {
my($order,@param) = @_;
return () unless @param;

if (ref($param[0]) eq 'HASH') {
@param = %{$param[0]};
} else {
return @param
unless (defined($param[0]) && substr($param[0],0,1) eq '-');
}
821nobodyさん:2006/04/24(月) 17:24:37 ID:???
すみません。

DOS窓なんかでファイルを結合するとき

copy a.txt+b.txt

でできることを、perl「だけ」でできますか?(=system/exec使用禁止なんです)


open (IN,b.txt);
while(<IN>){
 my $ftmp = $_;
 open (OUT,'>>a.txt');
 print OUT $ftmp;
 close OUT;
 }
close IN;
}

じゃどうにもこうにも・・・(filehandle "IN"は閉じられていますと警告が出て、できるファイルが0バイト)
a.txtは200MBほど、b.txtも5MBほどです。
822nobodyさん:2006/04/24(月) 17:32:21 ID:???
>>821
せめて初歩的なデバッグくらいはしましょう。
INはwhileループの終わりで、次を読む前に閉じてますよ。
それとOUTを一行ずつopen,closeするのは無駄なので
whileループの外に出しましょう。
823nobodyさん:2006/04/24(月) 17:43:02 ID:???
>>820
ハッシュリファレンスも処理するってことで、通常はリストで指定でしょ。

use CGI qw(:cgi);

print header(-type=>'text/html', -charset=>'Shift_JIS'); # リスト
print header('-type', 'text/html', '-charset', 'EUC-JP'); # リスト
print header({-type=>'text/html', -charset=>'UTF-8'}); # ハッシュリファレンス
824nobodyさん:2006/04/24(月) 20:09:00 ID:???
utf8での記述について質問です
perl 5.8.4 です
//-- ソースここから
use utf8;
use strict;
print "content-type: text/html; charset=UTF-8\n\n";
print "run OK\n";
exit;
--// ここまで

ソースをutf8で保存 → 500 Error
上記を BOM 付で試みる → 500 Error

ソースをutf8で保存、use utf8 → 500 Error
上記を BOM 付で試みる → 500 Error

どちらも 「一行目に #! が無い」 といってエラーになっています

utf で記述する際は他に気をつけることってあるのでしょうか?
ググっても 「utf8で保存してuse utf8すりゃいい」とまでしかかかれておらず四苦八苦してます
825nobodyさん:2006/04/24(月) 20:12:31 ID:???
おいwwwwwwwww
826nobodyさん:2006/04/24(月) 20:14:14 ID:???
>>824
実際無いじゃん
それは置いといてBOM無し(UTF-8N)であることは確認済みなんだろうな?
827nobodyさん:2006/04/24(月) 20:18:46 ID:???
>>823
ありがとう。
{ }でくくってはじめてハッシュになるんですね。
828nobodyさん:2006/04/24(月) 20:21:05 ID:???
>824
禿ワロタwwwwwwww
829nobodyさん:2006/04/24(月) 20:23:48 ID:???
    o-o、
    ('A`)  メガネメガネ
    ノ ノ)_
830nobodyさん:2006/04/24(月) 20:32:17 ID:???
ソースに #! の行抜けてました orz

実際のソースでは一行目に #!/usr/bin/perl の行はあり、
EUCで保存しなおすとスクリプトは動くことは確認しています。
UTF8のBOM付、BOM無で保存しなおすと500エラーになります
831nobodyさん:2006/04/24(月) 20:37:18 ID:???
本当にBOM無しなのか?
BOM無しで保存した奴アップして見せてみ?
832nobodyさん:2006/04/24(月) 20:37:23 ID:???
>826
EmEditorにてBOM付、無の2通りにて保存し、その2通りでエラーが出ることを確認しています
EmEditorは5.00.1です。
833nobodyさん:2006/04/24(月) 20:54:55 ID:???
問題解決しました。

メインで編集していたEmEditorは5.00だったのですが、別PCがEmEditor5.00.1で、
こちらで保存したものは動作しました

先ほどの書き込みでEmEditorは5.00.1とは書きましたが、メインPCと別PCとのEmEditorが
同じバージョンだと信じ込んでしまっており、先の書き込みおよびバージョン確認が
別PCだったため5.00.1と書きました
834nobodyさん:2006/04/24(月) 21:35:58 ID:???
( ;∀;) イイハナシダナー
835nobodyさん:2006/04/24(月) 21:46:39 ID:???
( ;∀;) カンドーシタ
836nobodyさん:2006/04/24(月) 22:16:15 ID:???
>>797 >>798

てっきり自分のやり方が不味いと思っていましたが、仕様だと判り安心しました
サクッとサブルーチンを組んで処理させます
ありがとうございました
837nobodyさん:2006/04/24(月) 22:22:39 ID:???
画像などのファイルのアップロードではcgi-libを使うのがもはや常識なのでしょうか?
掲示板程度はようやく作れるようになったので、アップローダーにも手を出してみたいと思ったのですが、
配布されているようなものはcgi-libを使っているのが多くて、
これを覚えてもアップロードの肝心な部分を勉強できないのではないかと思っているのですが。
838nobodyさん:2006/04/24(月) 22:27:49 ID:???
それ CGI.pm でいいんじゃね?
839nobodyさん:2006/04/24(月) 22:29:34 ID:??? BE:241365029-
>>837
それは君がどういう目的でそれを書こうとしているかによる。
規格などを含めて勉強したい(だけ)ならフルスクラッチすることをお勧めするよ。
RFCをあっちこっち読み漁って書くことになるから結構勉強になる。
しかしそれを実用しようと考えているなら、既成モジュールなり何なりを薦めるが。
# ライブラリにcgi-libを使うべきかはフレームの元だから敢えて触れないことにしておく
840nobodyさん:2006/04/24(月) 22:37:01 ID:??? BE:288685038-#
>>837
ttp://www.studyinghttp.net/
ここが勉強するには持って来いだと思う
既存のフルスクラッチのアップローダーとかのソース見てると
ほとんど使う事のない(例:multipart/mixed)とか、省いてるのも多く見られる
841nobodyさん:2006/04/26(水) 04:23:21 ID:hyGH423P
すみません、
http://hp.bird.to/さんの所の「私書箱SP(CGI)」
を使用させて頂こうと思っているのですが
ひとつだけ中をいじりたい事があるんです。
(ちなみに、作者様はいじる事を許可されています。)

で、HTMLでサイトを作るくらいは自分も出来るんですが
Perlの知識はまったく無いので自分なりにやっても
失敗してしまいます。
どうか、知識のある方叶えて頂けないでしょうか?

えっと、長くなるので、何度かレスさせて下さい。

842nobodyさん:2006/04/26(水) 04:24:10 ID:hyGH423P
sub looking_list{
($cookie_name,$cookie_pass,$cookie_number) = get_cookie();
($c_cook,$c_name)=split(/:/,$cookie_name);
($c_cook,$c_pass)=split(/:/,$cookie_pass);
($c_cook,$c_number)=split(/:/,$cookie_number);
print <<END_OF_TEXT;
 <p>
<font color="$titlecolor" size=6>$html_title</font><p>
$error_code<p>
<form method="POST" action="$script_url">
<input type="hidden" name='command' value='access'>
<table border=1>
<TR><TH colspan=2>自分の私書箱にアクセス!!</TH></TR>
<tr><td align=right>登録名</td><td><input type="text" size=20 name="name" value="$c_name"></td></tr>
<tr><td align=right>パスワード</td><td><input type="text" size=20 name="pass" value="$c_pass"></td></tr>
<tr><td align=right>私書箱番号</td><td><input type="text" size=20 name="number" value="$c_number"></td></tr>
<TR><TD align=center colspan=2><input type="submit" value="送信"></TD></TR>
</table>
</form><P>
843nobodyさん:2006/04/26(水) 04:24:41 ID:hyGH423P
<form method="POST" action="$script_url">
<table border=1>
<tr><th>ご用件をどうぞ!!</th></tr>
<tr><td>
<input type="radio" checked name='command' value='write'>私書箱に書き込む</td></tr>
<tr><td>
<input type="radio" name='command' value='mypost_regist'>私書箱の新規登録</td></tr>
<tr><td>
<input type="radio" name='command' value='mypost_delete'>私書箱の登録削除
</td></tr>
<tr><td align=center>
<input type="submit" value="送信">
</td></tr>
</table>
</form>
<form method="POST" action="$script_url">
<table width=90%>
<tr><td nowrap>
<input type="text" size=8 name="secret_pass">
<input type="submit" value="管理人専用">
</td>
<td nowrap align=right>
<font size=2><A HREF="http://hp.bird.to/index.html" target="_top">私書箱SP Ver.1.45(C)HPサービス</A></font>
</td>
</tr></table>
</form>
END_OF_TEXT
}
844nobodyさん:2006/04/26(水) 04:25:41 ID:hyGH423P
>>842>>843はそのまま続いてましてこれを読み込ませると
画面に
「自分の私書箱にアクセス」といったBOXと
その下に「ご用件をどうぞ」のBOXが表示されるんです。

で、僕はこれの上下を入れ替えたいんです。
ただそれだけなんです。

「ご用件をどうぞ」のBOXが上に来て
「自分の私書箱にアクセス」のが下に表示されているといった感じに
したいんです。

でも、単純にプログラム文を上下入れ替えただけでは
駄目みたいで、、、 表示自体は上下変わってくれたんですが
送信押してもうんともすんとも動かず
機能しなくなっているのです。

どういった入れ替え方をすれば
上下変わってくれるんでしょうか?
すみません、ほんと。
845nobodyさん:2006/04/26(水) 06:23:13 ID:???
【 スクリプト改造依頼スレ 】(丸投げ) part5
http://pc8.2ch.net/test/read.cgi/php/1141174205/
846nobodyさん:2006/04/26(水) 06:55:55 ID:hyGH423P
>>845
ここで良いと思ったんですが
質問してるだけですし。

改造というほどのもんじゃ無いと思うんですが。

とりあえず、ここで聞きたいですよ。
専門知識があれば一瞬で解決する問題なはずですから。
847nobodyさん:2006/04/26(水) 08:00:11 ID:???
ググレカス
848nobodyさん:2006/04/26(水) 08:00:25 ID:???
>846
>改造というほどのもんじゃ無いと思うんですが。

Perlのことなにもわかってないし、わかる気すらない。って感じですね。
これは、質問と言ったレベルでなく、丸投げだし。

答えるのは簡単だけど、今後こういう丸投げが増えると困るのでスクリプト改造スレに逝ってください
849nobodyさん:2006/04/26(水) 08:12:06 ID:hyGH423P
>>848
>丸投げだし。

丸投げってなんですか?
「なにもして無い奴が」って事でしょうか?
だったら違いますよ。
このスレに質問しに来たのは
自分なりにはチャレンジしての結果です。

>答えるのは簡単だけど、

そうでしょうね。
HTMLでサイト作るくらいは出来る僕からしたら
知ってる人間から見れば、
しごく簡単な質問をしてると想像出来ます。

だからこそ、教えてほしいんです。
時間をかけたくないんですよ。
「Perlをわかる気すら」って当然ですよ。
覚えたいわけじゃ無いんです。
ただ、そこだけが知りたいんです。

お願いします。
850nobodyさん:2006/04/26(水) 08:13:57 ID:hyGH423P
ってか
>今後こういう丸投げが増えると困るのでスクリプト改造スレに逝ってください

たらい回しって言うんですよね、それ。
面倒だからって事でしょ。
性格悪いですよね、わかるのにそんな理由で教えないなんて。
851質問です。:2006/04/26(水) 08:16:13 ID:hyGH423P
すみません、
http://hp.bird.to/さんの所の「私書箱SP(CGI)」
を使用させて頂こうと思っているのですが
ひとつだけ中をいじりたい事があるんです。
(ちなみに、作者様はいじる事を許可されています。)

で、HTMLでサイトを作るくらいは自分も出来るんですが
Perlの知識はまったく無いので自分なりにやっても
失敗してしまいます。
どうか、知識のある方叶えて頂けないでしょうか?

えっと、長くなるので、何度かレスさせて下さい。

852質問させて下さい:2006/04/26(水) 08:16:46 ID:hyGH423P
sub looking_list{
($cookie_name,$cookie_pass,$cookie_number) = get_cookie();
($c_cook,$c_name)=split(/:/,$cookie_name);
($c_cook,$c_pass)=split(/:/,$cookie_pass);
($c_cook,$c_number)=split(/:/,$cookie_number);
print <<END_OF_TEXT;
 <p>
<font color="$titlecolor" size=6>$html_title</font><p>
$error_code<p>
<form method="POST" action="$script_url">
<input type="hidden" name='command' value='access'>
<table border=1>
<TR><TH colspan=2>自分の私書箱にアクセス!!</TH></TR>
<tr><td align=right>登録名</td><td><input type="text" size=20 name="name" value="$c_name"></td></tr>
<tr><td align=right>パスワード</td><td><input type="text" size=20 name="pass" value="$c_pass"></td></tr>
<tr><td align=right>私書箱番号</td><td><input type="text" size=20 name="number" value="$c_number"></td></tr>
<TR><TD align=center colspan=2><input type="submit" value="送信"></TD></TR>
</table>
</form><P>
853質問させてください:2006/04/26(水) 08:17:22 ID:hyGH423P
<form method="POST" action="$script_url">
<table border=1>
<tr><th>ご用件をどうぞ!!</th></tr>
<tr><td>
<input type="radio" checked name='command' value='write'>私書箱に書き込む</td></tr>
<tr><td>
<input type="radio" name='command' value='mypost_regist'>私書箱の新規登録</td></tr>
<tr><td>
<input type="radio" name='command' value='mypost_delete'>私書箱の登録削除
</td></tr>
<tr><td align=center>
<input type="submit" value="送信">
</td></tr>
</table>
</form>
<form method="POST" action="$script_url">
<table width=90%>
<tr><td nowrap>
<input type="text" size=8 name="secret_pass">
<input type="submit" value="管理人専用">
</td>
<td nowrap align=right>
<font size=2><A HREF="http://hp.bird.to/index.html" target="_top">私書箱SP Ver.1.45(C)HPサービス</A></font>
</td>
</tr></table>
</form>
END_OF_TEXT
}
854質問させてください:2006/04/26(水) 08:18:08 ID:hyGH423P
>>852>>853はそのまま続いてましてこれを読み込ませると
画面に
「自分の私書箱にアクセス」といったBOXと
その下に「ご用件をどうぞ」のBOXが表示されるんです。

で、僕はこれの上下を入れ替えたいんです。
ただそれだけなんです。

「ご用件をどうぞ」のBOXが上に来て
「自分の私書箱にアクセス」のが下に表示されているといった感じに
したいんです。

でも、単純にプログラム文を上下入れ替えただけでは
駄目みたいで、、、 表示自体は上下変わってくれたんですが
送信押してもうんともすんとも動かず
機能しなくなっているのです。

どういった入れ替え方をすれば
上下変わってくれるんでしょうか?
すみません、ほんと。

855nobodyさん:2006/04/26(水) 08:45:34 ID:???
なんだこのヴァカは
856nobodyさん:2006/04/26(水) 08:46:02 ID:???
またあらしか
857nobodyさん:2006/04/26(水) 08:47:28 ID:???
>>849-850を見ただけで教える気が失せた
perlの前に常識学んで来い
858nobodyさん:2006/04/26(水) 08:51:26 ID:???
>>849
>丸投げってなんですか?
>「Perlをわかる気すら」って当然ですよ。
>覚えたいわけじゃ無いんです。
>ただ、そこだけが知りたいんです。

それを丸投げという。
さらに、ここはPerlを覚えたい人達が質問するスレです。
よってスレ違いです。
お帰り下さい。
859nobodyさん:2006/04/26(水) 09:06:17 ID:???
>HTMLでサイト作るくらいは出来る僕からしたら
思いっきりHTMLの範疇なんだけど・・・
860nobodyさん:2006/04/26(水) 09:17:20 ID:???
言っちゃった
861nobodyさん:2006/04/26(水) 09:20:49 ID:???
>>849
perlの知識は要らないから、もう一度見直すこと。

それと、ここを利用する前に
初心者の質問に行って、スレッドフロート型掲示板について
勉強してきた方がいい。

> たらい回しって言うんですよね、それ。

これは、かなり恥ずかしい発言だよ。
862nobodyさん:2006/04/26(水) 09:24:19 ID:hyGH423P
>>857
ほんと困ってるんです。
お願いします。

>>859
>HTMLの範疇
そんな??
なんかおかしいんですよ。
上下を取り替える事は出来るんです、
俺でも。
でも、私書箱が機能しなくなるんですよ。。。
その原因がどこにあるのかがわからないんです。

863nobodyさん:2006/04/26(水) 09:25:37 ID:hyGH423P
>>861
わかるなら、教えてください。
ほんと困ってるんです。
864nobodyさん:2006/04/26(水) 09:36:20 ID:???
Perl関係ねーじゃねーかよ
865nobodyさん:2006/04/26(水) 09:38:55 ID:???
>>862
だから丸投げスレに行けっつってんだろ!
866nobodyさん:2006/04/26(水) 09:46:44 ID:???
>>850
お前みたいなのを相手してるときりがないから、ここ以外のどっか行け。
867nobodyさん:2006/04/26(水) 10:20:13 ID:hyGH423P
すみません、
http://hp.bird.to/さんの所の「私書箱SP(CGI)」
を使用させて頂こうと思っているのですが
ひとつだけ中をいじりたい事があるんです。
(ちなみに、作者様はいじる事を許可されています。)

で、HTMLでサイトを作るくらいは自分も出来るんですが
Perlの知識はまったく無いので自分なりにやっても
失敗してしまいます。
どうか、知識のある方叶えて頂けないでしょうか?

えっと、長くなるので、何度かレスさせて下さい。
868nobodyさん:2006/04/26(水) 10:22:56 ID:hyGH423P
sub looking_list{
($cookie_name,$cookie_pass,$cookie_number) = get_cookie();
($c_cook,$c_name)=split(/:/,$cookie_name);
($c_cook,$c_pass)=split(/:/,$cookie_pass);
($c_cook,$c_number)=split(/:/,$cookie_number);
print <<END_OF_TEXT;
 <p>
<font color="$titlecolor" size=6>$html_title</font><p>
$error_code<p>
<form method="POST" action="$script_url">
<input type="hidden" name='command' value='access'>
<table border=1>
<TR><TH colspan=2>自分の私書箱にアクセス!!</TH></TR>
<tr><td align=right>登録名</td><td><input type="text" size=20 name="name" value="$c_name"></td></tr>
<tr><td align=right>パスワード</td><td><input type="text" size=20 name="pass" value="$c_pass"></td></tr>
<tr><td align=right>私書箱番号</td><td><input type="text" size=20 name="number" value="$c_number"></td></tr>
<TR><TD align=center colspan=2><input type="submit" value="送信"></TD></TR>
</table>
</form><P>
869nobodyさん:2006/04/26(水) 10:23:41 ID:hyGH423P
<form method="POST" action="$script_url">
<table border=1>
<tr><th>ご用件をどうぞ!!</th></tr>
<tr><td>
<input type="radio" checked name='command' value='write'>私書箱に書き込む</td></tr>
<tr><td>
<input type="radio" name='command' value='mypost_regist'>私書箱の新規登録</td></tr>
<tr><td>
<input type="radio" name='command' value='mypost_delete'>私書箱の登録削除
</td></tr>
<tr><td align=center>
<input type="submit" value="送信">
</td></tr>
</table>
</form>
<form method="POST" action="$script_url">
<table width=90%>
<tr><td nowrap>
<input type="text" size=8 name="secret_pass">
<input type="submit" value="管理人専用">
</td>
<td nowrap align=right>
<font size=2><A HREF="http://hp.bird.to/index.html" target="_top">私書箱SP Ver.1.45(C)HPサービス</A></font>
</td>
</tr></table>
</form>
END_OF_TEXT
}
870nobodyさん:2006/04/26(水) 10:24:30 ID:hyGH423P
>>868>>869はそのまま続いてましてこれを読み込ませると
画面に
「自分の私書箱にアクセス」といったBOXと
その下に「ご用件をどうぞ」のBOXが表示されるんです。

で、僕はこれの上下を入れ替えたいんです。
ただそれだけなんです。

「ご用件をどうぞ」のBOXが上に来て
「自分の私書箱にアクセス」のが下に表示されているといった感じに
したいんです。

でも、単純にプログラム文を上下入れ替えただけでは
駄目みたいで、、、 表示自体は上下変わってくれたんですが
送信押してもうんともすんとも動かず
機能しなくなっているのです。

どういった入れ替え方をすれば
上下変わってくれるんでしょうか?
すみません、ほんと。

871nobodyさん:2006/04/26(水) 10:28:09 ID:???
NG推奨ID:「hyGH423P」
NG推奨ワード:「私書箱」
872nobodyさん:2006/04/26(水) 10:40:37 ID:??? BE:673596487-#
暇だからコピペ荒らし扱いで規制議論に通報してくるかぁ
873nobodyさん:2006/04/26(水) 10:43:33 ID:hyGH423P
>>872
教えてくれたら、
僕は消えるのに
そっちのが面倒じゃないの?

ってか、僕は間違っていない。
今までのみんながいじわるしてるだけじゃないか。
間違って無い。

874nobodyさん:2006/04/26(水) 10:49:41 ID:???
コミュニケーション障害スレに行ったほうがいい。
875nobodyさん:2006/04/26(水) 10:57:19 ID:??? BE:866052689-#
だってそもそも、自分で少しでも試して分からないのなら

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

このスレに行くべきだし。
君はスレ違いなんだよ。正しくなんかない。間違ってる。
後こっちも

最高にド低脳な発言してください in ム板(XU)
http://pc8.2ch.net/test/read.cgi/tech/1141400056/
876nobodyさん:2006/04/26(水) 11:12:01 ID:???
>>873
もう1つのスレの方で書いておいた。
見て来いハゲ
877nobodyさん:2006/04/26(水) 11:23:49 ID:???
すみません、ちょっと疑問に思ったのですが、
アップローダー作ってまして、cgi-lib.plで送信されたデータを
&ReadParse;する時に、データを全て受信するんですか?
それともperlスクリプトにformデータをsubmitされた時点で
全てのデータを送信し、その後受信し終わってからperlが走るんでしょうか?
初歩的な質問で申し訳ないですが教えてください。
878nobodyさん:2006/04/26(水) 11:25:01 ID:???
ID:hyGH423P はただの荒らしですので、皆さん構わないよう注意して下さい

複数スレマルチポスト・コピペ報告スレ35@全板共通
http://qb5.2ch.net/test/read.cgi/sec2chd/1143873802/478-481
879nobodyさん:2006/04/26(水) 12:32:46 ID:hyGH423P
>>876
書いてねーじゃねーか!!!!!!!!!!!!
この嘘つきが!!!!!!!!!!!!!!
880nobodyさん:2006/04/26(水) 12:35:22 ID:hyGH423P
すみません、
http://hp.bird.to/さんの所の「私書箱SP(CGI)」
を使用させて頂こうと思っているのですが
ひとつだけ中をいじりたい事があるんです。
(ちなみに、作者様はいじる事を許可されています。)

で、HTMLでサイトを作るくらいは自分も出来るんですが
Perlの知識はまったく無いので自分なりにやっても
失敗してしまいます。
どうか、知識のある方叶えて頂けないでしょうか?

えっと、長くなるので、何度かレスさせて下さい。

881nobodyさん:2006/04/26(水) 12:35:53 ID:hyGH423P
sub looking_list{
($cookie_name,$cookie_pass,$cookie_number) = get_cookie();
($c_cook,$c_name)=split(/:/,$cookie_name);
($c_cook,$c_pass)=split(/:/,$cookie_pass);
($c_cook,$c_number)=split(/:/,$cookie_number);
print <<END_OF_TEXT;
 <p>
<font color="$titlecolor" size=6>$html_title</font><p>
$error_code<p>
<form method="POST" action="$script_url">
<input type="hidden" name='command' value='access'>
<table border=1>
<TR><TH colspan=2>自分の私書箱にアクセス!!</TH></TR>
<tr><td align=right>登録名</td><td><input type="text" size=20 name="name" value="$c_name"></td></tr>
<tr><td align=right>パスワード</td><td><input type="text" size=20 name="pass" value="$c_pass"></td></tr>
<tr><td align=right>私書箱番号</td><td><input type="text" size=20 name="number" value="$c_number"></td></tr>
<TR><TD align=center colspan=2><input type="submit" value="送信"></TD></TR>
</table>
</form><P>

882nobodyさん:2006/04/26(水) 12:37:00 ID:hyGH423P
<form method="POST" action="$script_url">
<table border=1>
<tr><th>ご用件をどうぞ!!</th></tr>
<tr><td>
<input type="radio" checked name='command' value='write'>私書箱に書き込む</td></tr>
<tr><td>
<input type="radio" name='command' value='mypost_regist'>私書箱の新規登録</td></tr>
<tr><td>
<input type="radio" name='command' value='mypost_delete'>私書箱の登録削除
</td></tr>
<tr><td align=center>
<input type="submit" value="送信">
</td></tr>
</table>
</form>
<form method="POST" action="$script_url">
<table width=90%>
<tr><td nowrap>
<input type="text" size=8 name="secret_pass">
<input type="submit" value="管理人専用">
</td>
<td nowrap align=right>
<font size=2><A HREF="http://hp.bird.to/index.html" target="_top">私書箱SP Ver.1.45(C)HPサービス</A></font>
</td>
</tr></table>
</form>
END_OF_TEXT
}

883nobodyさん:2006/04/26(水) 12:37:41 ID:hyGH423P
で、これを読み込ませると
画面に
「自分の私書箱にアクセス」といったBOXと
その下に「ご用件をどうぞ」のBOXが表示されるんです。

で、僕はこれの上下を入れ替えたいんです。
ただそれだけなんです。

「ご用件をどうぞ」のBOXが上に来て
「自分の私書箱にアクセス」のが下に表示されているといった感じに
したいんです。

でも、単純にプログラム文を上下入れ替えただけでは
駄目みたいで、、、 表示自体は上下変わってくれたんですが
送信押してもうんともすんとも動かず
機能しなくなっているのです。

どういった入れ替え方をすれば
上下変わってくれるんでしょうか?
すみません、ほんと。

884nobodyさん:2006/04/26(水) 12:40:13 ID:???
しねばいいとおもうよ^^
885nobodyさん:2006/04/26(水) 12:42:07 ID:??? BE:168399072-#
ヒント:完全無視
886nobodyさん:2006/04/26(水) 12:43:58 ID:???
頭終わってる
887nobodyさん:2006/04/26(水) 12:44:02 ID:hyGH423P
>>885
聞き続けますからいいですよ、別に。
優しい人が教えてくれると思うんで。
888超初心者:2006/04/26(水) 12:44:53 ID:???

CGIで書くと ↓これって絶対に必要なんでしょうか?
print "Content-type: text/html\n";

全部のページのソース見たら最初に改行入ってるのって
これのせいですよね?

みなさんはどうしてますでしょうか?
889nobodyさん:2006/04/26(水) 12:47:03 ID:???
>>888
まぁ、大抵の場合は必要だろうね
890nobodyさん:2006/04/26(水) 12:47:55 ID:hyGH423P
すみません、
http://hp.bird.to/さんの所の「私書箱SP(CGI)」
を使用させて頂こうと思っているのですが
ひとつだけ中をいじりたい事があるんです。
(ちなみに、作者様はいじる事を許可されています。)

で、HTMLでサイトを作るくらいは自分も出来るんですが
Perlの知識はまったく無いので自分なりにやっても
失敗してしまいます。
どうか、知識のある方叶えて頂けないでしょうか?

えっと、長くなるので、何度かレスさせて下さい。


891nobodyさん:2006/04/26(水) 12:47:57 ID:???
http://qb5.2ch.net/test/read.cgi/sec2chd/1143873802/

483 :名無しの報告 :2006/04/26(水) 12:34:47 ID:xtIDN3z70
質問者を装ってねーーーーーーーよ!!!!!!!!!!!!!!!!
アホが!!!!!!!!!!!!
ほんとに質問してるのにお前らが答えてくれないんだろーが!!!!!!!

486 名前:名無しの報告[] 投稿日:2006/04/26(水) 12:47:03 ID:xtIDN3z70
>>規制人さんへ
ID:7I8tmvWQ0がスレで
初心者の質問してる僕を
煽ってるんでそこんとこ宜しくです。
892nobodyさん:2006/04/26(水) 12:49:20 ID:hyGH423P
すみません、
http://hp.bird.to/さんの所の「私書箱SP(CGI)」
を使用させて頂こうと思っているのですが
ひとつだけ中をいじりたい事があるんです。
(ちなみに、作者様はいじる事を許可されています。)

で、HTMLでサイトを作るくらいは自分も出来るんですが
Perlの知識はまったく無いので自分なりにやっても
失敗してしまいます。
どうか、知識のある方叶えて頂けないでしょうか?

えっと、長くなるので、何度かレスさせて下さい。


893nobodyさん:2006/04/26(水) 12:50:19 ID:hyGH423P
sub looking_list{
($cookie_name,$cookie_pass,$cookie_number) = get_cookie();
($c_cook,$c_name)=split(/:/,$cookie_name);
($c_cook,$c_pass)=split(/:/,$cookie_pass);
($c_cook,$c_number)=split(/:/,$cookie_number);
print <<END_OF_TEXT;
 <p>
<font color="$titlecolor" size=6>$html_title</font><p>
$error_code<p>
<form method="POST" action="$script_url">
<input type="hidden" name='command' value='access'>
<table border=1>
<TR><TH colspan=2>自分の私書箱にアクセス!!</TH></TR>
<tr><td align=right>登録名</td><td><input type="text" size=20 name="name" value="$c_name"></td></tr>
<tr><td align=right>パスワード</td><td><input type="text" size=20 name="pass" value="$c_pass"></td></tr>
<tr><td align=right>私書箱番号</td><td><input type="text" size=20 name="number" value="$c_number"></td></tr>
<TR><TD align=center colspan=2><input type="submit" value="送信"></TD></TR>
</table>
</form><P>



894nobodyさん:2006/04/26(水) 12:51:01 ID:hyGH423P
<form method="POST" action="$script_url">
<table border=1>
<tr><th>ご用件をどうぞ!!</th></tr>
<tr><td>
<input type="radio" checked name='command' value='write'>私書箱に書き込む</td></tr>
<tr><td>
<input type="radio" name='command' value='mypost_regist'>私書箱の新規登録</td></tr>
<tr><td>
<input type="radio" name='command' value='mypost_delete'>私書箱の登録削除
</td></tr>
<tr><td align=center>
<input type="submit" value="送信">
</td></tr>
</table>
</form>
<form method="POST" action="$script_url">
<table width=90%>
<tr><td nowrap>
<input type="text" size=8 name="secret_pass">
<input type="submit" value="管理人専用">
</td>
<td nowrap align=right>
<font size=2><A HREF="http://hp.bird.to/index.html" target="_top">私書箱SP Ver.1.45(C)HPサービス</A></font>
</td>
</tr></table>
</form>
END_OF_TEXT
}


895nobodyさん:2006/04/26(水) 12:51:13 ID:???
896nobodyさん:2006/04/26(水) 12:51:48 ID:hyGH423P
で、これを読み込ませると
画面に
「自分の私書箱にアクセス」といったBOXと
その下に「ご用件をどうぞ」のBOXが表示されるんです。

で、僕はこれの上下を入れ替えたいんです。
ただそれだけなんです。

「ご用件をどうぞ」のBOXが上に来て
「自分の私書箱にアクセス」のが下に表示されているといった感じに
したいんです。

でも、単純にプログラム文を上下入れ替えただけでは
駄目みたいで、、、 表示自体は上下変わってくれたんですが
送信押してもうんともすんとも動かず
機能しなくなっているのです。

どういった入れ替え方をすれば
上下変わってくれるんでしょうか?
すみません、ほんと。




897nobodyさん:2006/04/26(水) 12:52:42 ID:???
>889
そうですかぁ

print "Content-type: text/html\n";
↑の\n取るとCGIエラー出るのは
何故なんでしょう?
バカな質問ですみません。
898nobodyさん:2006/04/26(水) 12:54:19 ID:???
>>897
print "Content-type: text/html\n\n";
じゃないの? \n が一個少なくない?
エラーになる理由は
ttp://www.studyinghttp.net/
ここら辺見れば分かるよ
899nobodyさん:2006/04/26(水) 13:00:40 ID:???
※ ID:hyGH423P は初心者を装った悪質な荒らしです
※ 完全無視を決め込みましょう
※ 構うと相手を喜ばせるだけです

複数スレマルチポスト・コピペ報告スレ35@全板共通
http://qb5.2ch.net/test/read.cgi/sec2chd/1143873802/478-481,484,485,487
900nobodyさん:2006/04/26(水) 13:05:07 ID:???
>>888
> 全部のページのソース見たら最初に改行入ってるのって
> これのせいですよね?
違う。その二つの改行はHTTPヘッダとその終わりを示すもの。
本来、本文のほうには出てこないよ。もう一個別のところで改行してたりしない?
901nobodyさん:2006/04/26(水) 13:08:40 ID:hyGH423P
解決しました。
あちらで回答してくださった方(>>876さん含め)
ありがとうございました。














>>899 ID:7I8tmvWQ0

死ね
902nobodyさん:2006/04/26(水) 13:09:32 ID:???
>>901
君が死になよw
小学生は2ch来ない方がいいよw
903nobodyさん:2006/04/26(水) 13:10:28 ID:hyGH423P
>>902
あれ?
ムカついてる?ww
904nobodyさん:2006/04/26(水) 13:10:52 ID:???
>>903
全然w
早く消えてよw
905nobodyさん:2006/04/26(水) 13:12:05 ID:???
>>903
君さ、このスレに居ると邪魔だから。
早く消えて欲しいんだよね、ほんと
906nobodyさん:2006/04/26(水) 13:12:33 ID:hyGH423P
>>904
自分で言ってながら
スルー出来て無いしw

おもったより
頭弱いんだね、あんたw
907nobodyさん:2006/04/26(水) 13:13:10 ID:???
>>906
何を言ったのか分からないよw
日本語ちゃんと書いてねw

>頭弱いんだね
君には負けるよwww
908nobodyさん:2006/04/26(水) 13:13:59 ID:???
>>903
解決したんだろ?wwwさっさと死ねよw
909nobodyさん:2006/04/26(水) 13:14:40 ID:hyGH423P
>>907
じゃあな、
根暗の暇人オヤジw

あ〜、
問題が解決して
こっちはスッキリだわ
910nobodyさん:2006/04/26(水) 13:14:57 ID:???
ID:hyGH423P

こいつ本気で可哀想になってきた
どんな教育受けたらこんな非常識になれるんだろう
まさに親の顔が見て見たいな
911nobodyさん:2006/04/26(水) 13:15:20 ID:hyGH423P
なんども自演してまで
書込むなよw

そんな腹立ったんだ?
ごめんごめんww
912nobodyさん:2006/04/26(水) 13:15:30 ID:???
>>909
勝手にオヤジ決めつけですかw
とことん馬鹿ですね君はw
痛いですよ、あなた
913nobodyさん:2006/04/26(水) 13:16:00 ID:???
>>911
自演としか思えないんだ(笑)
都合の悪い事は全部自演扱いなのかな?(苦笑)
914nobodyさん:2006/04/26(水) 13:16:12 ID:hyGH423P
>>910
お前の親は不細工だよねー
不細工ふたりが
お前みたいな不細工産んだw
笑えるw
915nobodyさん:2006/04/26(水) 13:16:49 ID:???
顔も見てないのに不細工決め付けw
どこまで幼稚なんだこいつはw
916nobodyさん:2006/04/26(水) 13:16:54 ID:hyGH423P
今どきこんな→(苦笑)
使わないってw

オヤジじゃんww
917nobodyさん:2006/04/26(水) 13:17:19 ID:???
また決め付けw
そろそろ釣り宣言ですか?w
918nobodyさん:2006/04/26(水) 13:17:32 ID:hyGH423P
>>915
絶対お前不細工だろ
命賭けれるね、俺w
919nobodyさん:2006/04/26(水) 13:18:08 ID:???
また決め付けてるよw
学習能力無いな〜wこいつw
920nobodyさん:2006/04/26(水) 13:18:08 ID:???
>898
どうもです。
よく読んでみます。
\nはいままでずっと一個で書いてました。


#!/usr/bin/perl

require 'XXXX.cgi';
print "Content-type: text/html\n";

>900
やっぱり出てこないんですね!?
間違えてたのかなー。
921nobodyさん:2006/04/26(水) 13:18:33 ID:hyGH423P
>>917
お前の両親の存在が釣りだわw
いつまでも不細工夫婦に迷惑かけんなよ?
早く死ねよ、ひきこもりw
922nobodyさん:2006/04/26(水) 13:19:15 ID:???
次は引きこもり扱いですか
やっぱこういう奴って親の劣等遺伝子しっかり受け継いでるんだろうなぁ〜
勉強になりました
923nobodyさん:2006/04/26(水) 13:19:28 ID:???
お前ら落ち着け。
ただの罵し合いなら他でやってくれ。
924nobodyさん:2006/04/26(水) 13:19:48 ID:hyGH423P
>>919
オツム弱いね、君w
925nobodyさん:2006/04/26(水) 13:19:56 ID:???
だって馬鹿相手にレスするの楽しいんだもんw
926nobodyさん:2006/04/26(水) 13:20:35 ID:hyGH423P
>>922
母のまんこでも舐めてろ
ひきこもりがw
927nobodyさん:2006/04/26(水) 13:21:13 ID:???
使う言葉までレベル低いというか下劣ですね
かわいそう
928nobodyさん:2006/04/26(水) 13:21:37 ID:hyGH423P
929nobodyさん:2006/04/26(水) 13:21:50 ID:???
馬鹿ってちょっと煽ってやるとすぐファビョるから面白いよねw
930nobodyさん:2006/04/26(水) 13:23:01 ID:hyGH423P
>>929
煽られたのお前じゃんw
俺最初からこのノリ。

お前、人格変わってるww
顔真っ赤にして反応すんなやw
931nobodyさん:2006/04/26(水) 13:23:53 ID:hyGH423P
しかもスルー出来ない性格w
これ、ミイラ取りがミイラなってない?w

幼稚な奴w
932nobodyさん:2006/04/26(水) 13:23:57 ID:???
やっぱり馬鹿だから、これで勝ったとか思ってるんだろうなぁ
どこまで哀れなんだ君は
933nobodyさん:2006/04/26(水) 13:24:38 ID:hyGH423P
>>932
やっぱり馬鹿だから、これで勝ったとか思ってるんだろうなぁ
どこまで哀れなんだ君は
934nobodyさん:2006/04/26(水) 13:25:14 ID:hyGH423P
492 :名無しの報告 :2006/04/26(水) 13:24:34 ID:7I8tmvWQ0
>>489
ごめんごめん。
ID:xtIDN3z70 見てたら可哀想になってきちゃって。



謝ってるwwっwwっw(ゲラゲラ
935nobodyさん:2006/04/26(水) 13:25:16 ID:???
ついにコピペしか出来ない脳になってしまいましたよw
君を煽ってるのは一人だけじゃないよw
そんな事も分からないなんてw
936nobodyさん:2006/04/26(水) 13:26:00 ID:???
>wwっwwっw(ゲラゲラ

VIPでやれ
937nobodyさん:2006/04/26(水) 13:26:17 ID:hyGH423P
>>935
ぎゃはははははははw
938nobodyさん:2006/04/26(水) 13:26:32 ID:???
やばい
こっちが何か書く度に反応してくれる
マジ面白い
939nobodyさん:2006/04/26(水) 13:27:40 ID:hyGH423P
489 :名無しの報告 :2006/04/26(水) 13:16:17 ID:tiKIzFym0
>>478-481,484,485,487
報告してくれるのはありがたいんだが、報告先のスレのテンプレを読めよ…

492 :名無しの報告 :2006/04/26(水) 13:24:34 ID:7I8tmvWQ0
>>489
ごめんごめん。

493 :名無しの報告 :2006/04/26(水) 13:25:47 ID:xtIDN3z70
ID:7I8tmvWQ0
意味無く謝ってるwwww
アホ過ぎるwwww
940nobodyさん:2006/04/26(水) 13:27:48 ID:???
こいつ面白いなw
最初規制議論に書かれた時すんげーびびって
486みたいな事書いてるのに
何この態度の変わりようはw
941nobodyさん:2006/04/26(水) 13:28:36 ID:???
ただのビビリじゃんこいつwww
942nobodyさん:2006/04/26(水) 13:28:56 ID:???
>>939
なんだそれw
943nobodyさん:2006/04/26(水) 13:29:26 ID:???
>>924
オムツが濡れてるからって荒らすなよ
ママに交換してもらいな
944nobodyさん:2006/04/26(水) 13:29:30 ID:???
>>940
お前もウザイ
945nobodyさん:2006/04/26(水) 13:30:16 ID:???
こいつ"意味無く"の意味分かってるのかなw
946nobodyさん:2006/04/26(水) 13:31:01 ID:???
ごめん。
もうこんな奴に相手するのやめるよ。
スレ汚してスマソ
947nobodyさん:2006/04/26(水) 13:31:05 ID:hyGH423P
494 :名無しの報告 :2006/04/26(水) 13:29:26 ID:7I8tmvWQ0
これ以上は自分まで荒らしになるので書き込むのやめます
ID:xtIDN3z70 さんももう少し頭を働かせた方が良いですよ



ぎゃっはっはっはっはっっはっはっはw
948nobodyさん:2006/04/26(水) 13:32:13 ID:???
俺もこんな馬鹿相手にするのやめるわw
時間の無駄w
ここまでアホだとは思わんかったw
949nobodyさん:2006/04/26(水) 13:32:55 ID:hyGH423P
>>946
許してやるよ。

さっさと消えとけ
この能無しw
950nobodyさん:2006/04/26(水) 13:33:16 ID:???
次の質問どうぞ〜
951nobodyさん:2006/04/26(水) 13:33:52 ID:???
アホふたり
952nobodyさん:2006/04/26(水) 13:36:10 ID:???
今北
何この伸びようは、って思ったら変な奴が一匹暴れてただけか…
953nobodyさん:2006/04/26(水) 13:38:08 ID:???
専門板でやったからこれぐらいで済んだけど
ニュー速とかでやったら物凄く晒し上げられてるだろうな
954nobodyさん:2006/04/26(水) 13:39:19 ID:???
んなこた無い
955nobodyさん:2006/04/26(水) 13:42:16 ID:???
ID:hyGH423P
956nobodyさん:2006/04/26(水) 13:47:24 ID:???
冷静に考えるとこの一連の流れは全て自演じゃなかったのだろうか
957nobodyさん:2006/04/26(水) 13:50:49 ID:???
変な奴が2匹だよ
958nobodyさん:2006/04/26(水) 13:52:09 ID:???
このスレを嫌う何者かの陰謀...
959nobodyさん:2006/04/26(水) 13:55:23 ID:???
勝った(@w荒
圧倒的に勝った(@w荒
960nobodyさん:2006/04/26(水) 14:02:20 ID:???
伸びてると思ったらなにこの久々の展開
961nobodyさん:2006/04/26(水) 14:02:50 ID:???
>>959
(;^ω^)うわ、コイツつまんね
962nobodyさん:2006/04/26(水) 14:03:05 ID:???
963nobodyさん:2006/04/26(水) 14:16:22 ID:???
ちょっと見ただけで頭のおかしいやつだって分かるのに
誰だよ、どっかのスレで答えちゃったやつw
一生ずっと放置しておけばおもしろかったのに
964nobodyさん:2006/04/26(水) 14:51:05 ID:???
同じ穴だな
965nobodyさん:2006/04/26(水) 15:25:17 ID:???
>>963
答えた奴もバカだが、
ガチで遣り合って無駄スレ消費させた大バカもいたぞw
966nobodyさん:2006/04/26(水) 15:28:36 ID:???
ヒント:自演
967nobodyさん:2006/04/26(水) 16:29:37 ID:xxhiuPmH
965=大バカ
968nobodyさん:2006/04/26(水) 16:43:54 ID:???
無駄スレ←プッw
969nobodyさん:2006/04/26(水) 17:01:09 ID:???
つーか、次スレ誰か立てて
俺は立てれなかった
970nobodyさん:2006/04/26(水) 18:00:06 ID:???
んじゃ、トライしてくる。
971nobodyさん:2006/04/26(水) 18:10:42 ID:???
Perlコーディング初心者質問スレ Part 48
http://pc8.2ch.net/test/read.cgi/php/1146042050/

# 8連投で規制かかるのに、テンプレ9レス必要なのはつらすぎ。
972nobodyさん:2006/04/26(水) 19:02:21 ID:??? BE:433026566-#
973nobodyさん:2006/04/26(水) 19:14:48 ID:???
何この残尿感
974nobodyさん:2006/04/26(水) 20:02:34 ID:???
在チョンが降臨してたのか
975920:2006/04/26(水) 21:08:33 ID:???
解決しました。
どうもサーバーの自動改行らしく
.htaccessいじったら改行消えました。


で、また質問なのですが
IEなんかで他所のホームページ覗くと
半角カナとかソースがばけてるやつありますよね
あれはどうしてあのように見えるのでしょうか?
文字コードとかの関係なのでしょうか?
976nobodyさん:2006/04/26(水) 21:18:13 ID:???
>>975
メモ帳で表示されるからだろ
おそらくcharsetがEUC-JPかUTF-8
Firefoxとか使えばちゃんと表示されるよ
977 ◆TWARamEjuA :2006/04/26(水) 22:00:22 ID:??? BE:436122-#
乗り遅れ(泪)
「パンチ2/3」と「本7」が来たのか?
978nobodyさん:2006/04/26(水) 22:02:33 ID:???
5分の2じゃなかったっけ?
979nobodyさん:2006/04/26(水) 22:04:57 ID:???
また懐かしい名前を・・・まだ生きてるのかな
980nobodyさん:2006/04/26(水) 22:44:15 ID:???
>976
ありがとうございます なるほど
対応したアプリだと見れるんですね
なにか特殊な処理してるのかなかなぁと勘違いしてました。


んでまた疑問なのですが
requireで呼び出すサブルーチンの最後に 1:と書いてるのを
よく見るのですが これは必ず 1:じゃないといけない決まりなんでしょうか?
試したら 2: とか $適当な変数;とかでもいけたのですが・・・
バカな質問ですみません。
981 ◆TWARamEjuA :2006/04/26(水) 22:54:23 ID:??? BE:4900695-#
>>980
perl付属のドキュメントに書いてあったような。。。
最後に「真」を返さなきゃなのですです♪
982nobodyさん:2006/04/26(水) 23:58:01 ID:???
>>981
レスどうもです
さっそく見てみます!

今日は勉強になりましたノシ
983nobodyさん:2006/04/27(木) 00:11:25 ID:???
「真」を返さなきゃいけないというと、-1とか0以外ならなんでもOKなんですか?
984nobodyさん:2006/04/27(木) 00:20:35 ID:???
>983
-1 は「真」です
985nobodyさん:2006/04/27(木) 00:21:00 ID:???
ぼくのちんちんも評価してください。
986nobodyさん:2006/04/27(木) 00:31:02 ID:???
C で if (! (fd = open(...))) error(); とかやって小一時間潰したのを思い出した。
987nobodyさん:2006/04/27(木) 00:46:00 ID:???
掲示板の製作で躓いてる部分があるので質問させていただきますm(_ _)m
if (!$res_flag) {
print "<TABLE width=\"500\" border=\"1\" bordercolor=\"#A9A9A9\" bgcolor=\"#FFFFFF\" cellpadding=\"0\" cellspacing=\"0\"><TR><TD>\n";
print "<dl><dt><b>■$kizi_title  (No.$no)</b><BR>";
print "<dt>日時:$date<BR>";
print "<dt>名前:$name<BR>";
print "<BR><dd>$message\n";
print "<div align=\"right\">";
print "<form action=\"$script\" method=\"POST\">";
print "<INPUT TYPE=\"hidden\" NAME=\"mode\" value=\"res\">";
print "<input name=\" 返信 \" type=\"submit\" value=\" 返信 \">";
print "</form></div>\n";
}
if ($res_flag) {
print "<hr>\n";
print "<dl><dt><b>■$k_title  (No.$no)</b><BR>";
print "<dt>日時:$date<BR>";
print "<dt>名前:$name<BR>";
print "<BR><dd>$message\n";
}
print "</TD></TR></TABLE>\n";
スレッドとレスの区別をつけるのに苦戦しています…
スレッドを立てるときにhiddenでres_flagの値を送信しています(スレッドの時は0、レスは1)

これで実際にやってみるとなぜかレスが上に行ってしまいます
つまり(□=レス ■=スレッド


みたいになってほしいのですが、実際


こうなってしまいます
988nobodyさん:2006/04/27(木) 00:47:18 ID:obiLVGb1
しかも二度目レスするとそのレスが上に行きます
どうしたら正しくできるでしょう?…

レスとスレッドの区別方法が悪いのかな…
989nobodyさん:2006/04/27(木) 00:53:40 ID:???
さっぱり何をおっしゃりたいのか意味がわかりません。
990nobodyさん:2006/04/27(木) 01:17:14 ID:???
テンプレート作れなくてもヒアドキュメントぐらいは使って欲しい。
991nobodyさん:2006/04/27(木) 01:31:41 ID:???
ふつー TT だろ?
992nobodyさん:2006/04/27(木) 01:47:32 ID:???
HTMLの要素と属性で大文字小文字をごっちゃにしてるやつは嫌いだ
993nobodyさん:2006/04/27(木) 02:24:20 ID:???
ヒアドキュメントを使うとソースが汚くなるのはどうにかならんもんか・・・
その逆でPHPとかASPは見栄えはいい
そんな俺はperl一筋
994nobodyさん:2006/04/27(木) 03:48:30 ID:???
ヒアドキュメントなんて使ってないで、MVC を徹底汁。
995nobodyさん:2006/04/27(木) 08:22:39 ID:???
MVCで作ることと、Viewに何を使うかは関係無いと思う。
996nobodyさん:2006/04/27(木) 09:57:02 ID:???
また昨日のが沸いたのかと思った。
初心者スレなんだからprintでいいだろ
普通に考えればどこかの順番が間違ってるに違いない
997nobodyさん:2006/04/27(木) 10:08:50 ID:???
全体をどっかにうpした方が話が早い気がした。
998nobodyさん:2006/04/27(木) 10:29:54 ID:???
>>987
パッと見で気付くのは、
<TABLE> は if 節に入ってるのに </TABLE> は if 節の外にあるから、
!$res_flag なときは <TABLE> タグが表示されないよね。
999nobodyさん:2006/04/27(木) 10:51:00 ID:???
TABLEで順番がおかしいってのはだいたいhtmlでおかしい時が多いよな

次スレ http://pc8.2ch.net/test/read.cgi/php/1146042050/
1000nobodyさん:2006/04/27(木) 11:17:38 ID:???
1000
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。