Perl コーディング初心者質問コーナー Part31

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

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

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

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

過去ログやお勧めサイトは >>2-10
2nobodyさん:04/01/01 03:46 ID:???
関連スレ
【Perl上級者コーナーPart01】
http://pc2.2ch.net/test/read.cgi/php/1024741312/l50
CGI: Common Gateway Interface part 11
http://pc2.2ch.net/test/read.cgi/php/1055597189/l50
【Perl,CGI】参考書籍 第三版
http://pc2.2ch.net/test/read.cgi/php/1030209573/l50
【 スクリプト改造工房 PART 7 】
http://pc2.2ch.net/test/read.cgi/php/1063780103/l50
△▲ WebProg 初心者の質問 Part5 ▼▽
http://pc2.2ch.net/test/read.cgi/php/1060263267/l50
【Perl】ファイルロック(排他処理)について語ろう
http://pc2.2ch.net/test/read.cgi/php/1024795138/l50
★負荷軽減対策委員会(Perl、PHP)★
http://pc2.2ch.net/test/read.cgi/php/1034645635/l50
【Perl】掲示板を使ろう!
http://pc2.2ch.net/test/read.cgi/php/988890976/l50
Perlモジュールについて
http://pc2.2ch.net/test/read.cgi/php/997829243/l50
CGIに依存しないPerlの話題一般/Part2
http://pc2.2ch.net/test/read.cgi/php/1030548610/l50
3nobodyさん:04/01/01 03:47 ID:???
4nobodyさん:04/01/01 03:48 ID:???
5nobodyさん:04/01/01 03:48 ID:???
[総合]
 ・http://www.excite.co.jp/world/ # 英文のページ多いから一応
 ・Perl Com: http://www.perl.com/
 ・CPAN.com: http://search.cpan.org/
 ・ActivePerl: http://www.activestate.com/
 ・CGI-ML:http://forest.ne.jp/cgi-ml/

[お薦め]
 ・Perlメモ: http://www.din.or.jp/~ohzaki/perl.htm ★読んどけ
 ・Perl Recipes: http://www.effectiveperl.com/recipes/ # 死んでるか?
 ・Randal's WebTechniques columns: http://www.stonehenge.com/merlyn/WebTechniques/
 ・Perlの部屋: http://www.cc.rim.or.jp/~midorin/mad-p/perl/index.html
 ・Perl初心者の部屋:http://www.harukaze.net/~mishima/perl/
 ・Perlリファレンス:http://www.big.or.jp/~mio/ga/pl/plref/pl_ref.htm
 ・Perlのページ:http://homepage1.nifty.com/nomenclator/perl/
6nobodyさん:04/01/01 03:49 ID:???
 [Document&Tutorial]
 ・Home - Japanized Perl Resources Project: http://perldocjp.sourceforge.jp/
 ・Perl Monks: http://www.perlmonks.org/
 ・use Perl; : http://use.perl.org/
 ・Learn Perl - Perl Education: http://www.devdaily.com/perl/edu/index.shtml
 ・Perldoc.com: http://www.perldoc.com/
 ・Using Perl5 in Web: http://docs.rinet.ru/Using_Perl5_in_Web/
 ・Rex Swain's Home Page: http://www.rexswain.com/
 ・Robert's Perl Tutorial: http://www.netcat.co.uk/rob/perl/win32perltut.html
 ・Perl Tuts: http://savage.net.au/Perl-tutorials.html
 ・Beginning Perl Tutorials: http://www.pageresource.com/cgirec/index2.htm
 ・jcode.pl の私的な解説書: http://www.mikeneko.ne.jp/~lab/kcode/jcode.html
 ・Logical Choice Software, Home Page: http://www.logsoft.com/perltips/
 ・Perlfect Solutions: http://perlfect.com/
 ・The Perl Archive : http://www.perlarchive.com/
 ・Perl6 & Parrot VM についての情報: http://dev.perl.org/perl6/
 ・use Object; : http://perl.infoware.ne.jp/
7nobodyさん:04/01/01 03:52 ID:???
[Module]
 ・河馬屋二千年堂's Page: http://member.nifty.ne.jp/hippo2000/index.htm # お勧め
 ・PPMPackages: http://www.activestate.com/PPMPackages/

[Security]
 ・安全なプログラミングのためのガイドライン:http://www.FreeBSD.org/ja/security/#spg
 ・Perl security:http://www.perldoc.com/perl5.6/pod/perlsec.html
 ・Perl security和訳:http://www.kt.rim.or.jp/%7ekbk/perl5.005/perlsec.html
 ・CGI and Security http://www.ansi.co.jp/tech/cgi/security/
 ・The Unofficial Web Hack FAQ:http://secinf.net/websecurity/The_Unofficial_Web_Hack_FAQ/
 ・How to Write Secure Code:http://www.shmoo.com/securecode/
 ・Safe CGI Programming :http://www.improving.org/paulp/cgi-security/safe-cgi.txt

[OS]
 ・Linux日本語マニュアル:http://www.linux.or.jp/JM/
 ・FreeBSD日本語マニュアル:http://www.jp.freebsd.org/man-jp/
8nobodyさん:04/01/01 04:11 ID:???
9nobodyさん:04/01/01 04:29 ID:???
10nobodyさん:04/01/01 06:17 ID:???
02 あけおむ
11nobodyさん:04/01/01 06:46 ID:???
おめことよろ
12nobodyさん:04/01/01 08:18 ID:???
perl愛してます。
13nobodyさん:04/01/02 01:17 ID:???
flockに関しての質問なんですが、
flockでロック中にエラーで終了したら、永久ロックになりますか?
もしそうなら、そのロックを外部から解除する方法はありますか?
14nobodyさん:04/01/02 01:34 ID:???
>>13
た め せ よ
15nobodyさん:04/01/02 03:22 ID:???
>14
おいおいおい、それはいくらなんでも乱暴だろう

>13
ローカル環境で試せよ
16nobodyさん:04/01/02 08:05 ID:???
あけぼのー
17nobodyさん:04/01/02 16:24 ID:???
>>15
UNIX系とWindows系ではflockの実装が違ってたりして混乱する可能性を指摘。
18nobodyさん:04/01/02 20:30 ID:???
symlinkできないしね
19nobodyさん:04/01/03 15:36 ID:???
変数 $mojireru の中の
aaa という語句を bbb に置き換えるときは

$mojiretu =~ s/aaa/bbb/g;

って書きますよね。
この aaa という部分に、
perl の文法とぶつかりそうな記号が入っているときは
どうしたらよいですか?

例えば文中の
%5$%@@&*( という文字を bbb に置き換えたいんです。
短ければ手作業で \%5\$ ... のように
一個ずつ \ を入れて行けばいいんでしょうけど...
20nobodyさん:04/01/03 17:44 ID:???
>>19
ちっとは調べろやヴォケ。大体変数名間違ってるから$mojireruの値は置換できんぞ
21nobodyさん:04/01/03 17:58 ID:/wLbv58n
$x='a$y';
の様な変数内の変数を展開するにはどうすれば良いのでしょうか?
22nobodyさん:04/01/03 18:08 ID:???
"
23nobodyさん:04/01/03 19:02 ID:3/9s6tLE
>>19
\$\&\*
24nobodyさん:04/01/03 22:48 ID:???
25あぼーん:あぼーん
あぼーん
26あぼーん:あぼーん
あぼーん
27あぼーん:あぼーん
あぼーん
28あぼーん:あぼーん
あぼーん
29あぼーん:あぼーん
あぼーん
30あぼーん:あぼーん
あぼーん
31あぼーん:あぼーん
あぼーん
32nobodyさん:04/01/04 01:17 ID:w6ZpBJYI
>>25-31
(゚д゚)ウザー
33nobodyさん:04/01/04 01:25 ID:???
>>32
ほっとけ
34あぼーん:あぼーん
あぼーん
35あぼーん:あぼーん
あぼーん
36あぼーん:あぼーん
あぼーん
37nobodyさん:04/01/05 06:15 ID:mMUs2iDZ
ウザ
38nobodyさん:04/01/05 11:58 ID:???
39nobodyさん:04/01/05 14:42 ID:VUii+BmO
require './xxx.pl';
これだとうまくいきますが、

require '../hoge/xxx.pl';
これだとエラーになってしまいます。
なぜでしょうか。
40nobodyさん:04/01/05 14:44 ID:???
require './../hoge/xxx.pl';
41nobodyさん:04/01/05 16:31 ID:CnMsYeM+
よくある「アクセス拒否」ルーチンあたりで使われる
「$_ =~ s/\*/\.\*/g;」
の意味がどうしてもわかりません。
「\*」を「\.\*」に変えてどうなるの?って思ってます。
これって不要じゃないかなと思いますが。
わかる人お願いします。


42nobodyさん:04/01/05 17:14 ID:???
いわゆるワイルドカードの * を
正規表現の .* に
変換してるんだろうな
43nobodyさん:04/01/05 18:11 ID:???
>>42
なるほど。ありがとうございます。
44あぼーん:あぼーん
あぼーん
45あぼーん:あぼーん
あぼーん
46あぼーん:あぼーん
あぼーん
47nobodyさん:04/01/05 18:18 ID:???
48nobodyさん:04/01/05 18:18 ID:7ac0jPN7
あのおお、馬鹿にしたり、嫌がらせしたりするのはもうやめて
パンチ5分の2を教えてくださいよ

そんなに人を馬鹿にして楽しいですか?
49あぼーん:あぼーん
あぼーん
50あぼーん:あぼーん
あぼーん
51あぼーん:あぼーん
あぼーん
52nobodyさん:04/01/05 18:30 ID:???
日ごろはウザイAAだが、>>50で抜ける。
女を自分の好きな女に照らし合わせると何故か抜けてしまう
(;゚∀゚)=3ハァハァ
53nobodyさん:04/01/05 19:58 ID:???
54nobodyさん:04/01/05 20:18 ID:PXoQ1Cnf
>>50
の元ネタって何なの?
55nobodyさん:04/01/05 21:44 ID:???
キモーイガールズの数ページ後じゃなかったかな?
知ってる俺って・・・(鬱
56nobodyさん:04/01/05 22:10 ID:u0kvWwGa
my $i = 0; $sample1 = $sample2 = $sample3 = "";
foreach (@hoge) {
${"sample".$i++} = $_;
}

汚いソースを整理したく、mapとか使い出したんですが
↑のようなのはmapでかけますでしょうか?
というかもうチョットきれいになりますでしょうか?

あとmapについてなんですが↓のような使い方は、おかしいというか無駄でしょうか?

$foo = join "",map "<option value=\"$_\"$bar{$_}>$hoge{$_}\n",keys (%hoge);
57nobodyさん:04/01/05 22:24 ID:???
ちと素朴な、だけど、切実な疑問なんですが、
perlスクリプトのパーミッションの推奨あるいは必須として通常考えられるのは、
705、755、700(700はSunExecの場合)だけですよね?

どうしても、どのパーミッションでもInternalServerErrorが出るスクリプト&サーバのペアがありまして。
(スクリプト自信は、hello worldを出すだけで、他サーバではちゃんと動きます)
58nobodyさん:04/01/05 22:28 ID:???
>InternalServerErrorが出るスクリプト&サーバのペア

このことだけで十分だろ。気づけYO!
59nobodyさん:04/01/05 22:29 ID:???
>56
$sample1 $sample2 $sample3

$sample[0] $sample[1] $sample[2]

とするだけで、綺麗になるし処理も楽になる。
@sample = @hoge;
6057:04/01/05 22:46 ID:???
>>58
でもなぜか、気づいたんですが、そのサーバで動くスクリプトがあるみたいなんです。。。
で、そのスクリプトをコピーして(もちろんパーミッションもそのまま)、実行すると、InternalServerErrorになります。
61nobodyさん:04/01/05 22:49 ID:???
>>56
foreach でやると汚いから map 、という発想自体が勘違い。

$foo = ... のような使い方は、それだけ見れば別におかしくないが、
その前後で何をしていて、全体の流れとして適切な手順かどうかは
別問題。

あと qq/<option value="$_"$bar{$_}>$hoge{$_}\n/ として
エスケープまみれになるのを避けるといい。
62sage:04/01/05 23:20 ID:Z2HbJ21+
>>57
Perlのパスをミスっても、useやrequireミスでも、Perlのバージョン違いでも、Taintモードでも落ちる。
エラーログか、せめてスクリプトくらいはないと判別できないよ。
63nobodyさん:04/01/05 23:21 ID:???
あーさげみす。
64nobodyさん:04/01/05 23:31 ID:???
>>62
「スクリプトコピーして」って書いてあるからパスミスはないだろ。
気づけYO!
65あぼーん:あぼーん
あぼーん
66あぼーん:あぼーん
あぼーん
67あぼーん:あぼーん
あぼーん
68あぼーん:あぼーん
あぼーん
6956:04/01/06 00:06 ID:???
すいません鯖落ちかと勘違いしててレス遅れました(あぼーんにより取得できなかった)
>>59
えっと普段なら普通に配列にするんですが、
htmlファイルの<!--hoge-->(name,urlなど複数ある)の部分を$hogeの内容に置換
というルーチンに通すんでスカラーにしました。
別にこの変数だけ配列にしてルーチン書き換えてもいいんですが、
コイツだけの為にそうすると面倒な上に処理も遅くなると思うんです。

>>61
>foreach でやると汚いから map 、という発想自体が勘違い。
ごもっともです
>$foo = ... のような使い方は、...
書き直しました。↓こんな感じです
%mobile = (
 "i" => "i-mode", "EZ" => "EZweb",
 "J" => "J-sky", "PC" => "PC"
);
foreach (split (/\,/,$data{mobile})) { $select{$_} =" selected"; }
$html = join "",map "<option value=\"$_\"$select{$_}>$mobile{$_}\n",keys (%mobile);

なんとか無い知恵絞って考えて見ます。レスthxでした。
70nobodyさん:04/01/06 00:18 ID:Sai3E6zR
すいません鯖落ちかと勘違いしててレス遅れました(あぼーんにより取得できなかった)
>>59
えっと普段なら普通に配列にするんですが、
htmlファイルの<!--hoge-->(name,urlなど複数ある)の部分を$hogeの内容に置換
というルーチンに通すんでスカラーにしました。

>>61
>foreach でやると汚いから map 、という発想自体が勘違い。
ごもっともです
>$foo = ... のような使い方は、...
書き直しました。↓こんな感じです
%mobile = (
 "i" => "i-mode", "EZ" => "EZweb",
 "J" => "J-sky", "PC" => "PC"
);
for ( ; ; ) {
print "selected";
}
foreach (split (/\,/,$data{mobile})) { $select{$_} =" selected"; }
$html = join "",map "<option value=\"$_\"$select{$_}>$mobile{$_}\n",keys (%mobile);

なんとか無い知恵絞って考えてみました、詳しくはないんで、自己責任で行ってくださいね
71あぼーん:あぼーん
あぼーん
72あぼーん:あぼーん
あぼーん
73あぼーん:あぼーん
あぼーん
74あぼーん:あぼーん
あぼーん
75あぼーん:あぼーん
あぼーん
76あぼーん:あぼーん
あぼーん
77nobodyさん:04/01/06 01:44 ID:Nia5VEWW
uza
78nobodyさん:04/01/06 01:48 ID:???
>>77
ほっとけ
7957:04/01/06 02:52 ID:???
いまだに理由わからずですが、Taintモードってはじめて知りました。
ありがとうございます。
80nobodyさん:04/01/06 04:16 ID:???
>>79
漏れが借りてるサーバは701だよ。
81nobodyさん:04/01/06 23:34 ID:bkmGUS1Q
@num = (11, 22);
だったとして、それをresult.txtに
「11\t22」と書き込みたいのですが

printf FILE "%d\t%d", "$num[0]","$num[1]";

だと何か問題はありますか?
他にスマートな方法があれば教えてください。
82nobodyさん:04/01/06 23:41 ID:???
>>81
・print で足る事に printf を使わない。
・何でもかんでもクォートしない (%d に渡すのにわざわざ文字列にしている)

print FILE $num[0], "\t", $num[1];
print FILE "$num[0]\t$num[1]";
print FILE join "\t", @num;
83nobodyさん:04/01/06 23:48 ID:???
>>81
print FILE join "\t", @num;

タブをエスケープするなら
print FILE join '\t', @num;

じゃだめ?
84nobodyさん:04/01/06 23:55 ID:???

print FILE join "\t", @num;
これが俺ごのみかも。

複数のlist変数があって全部そうしたいなら、localして特殊変数いじるのもありかと。
ただ、特殊変数ってあんま覚えてないから他人の特殊変数いじった記述はなんじゃらほい。

ちょっと値のチェックをしながら保存したり、値を微妙に変えたりとか、リファレンス構造持ってるなら
foreachでGOかな。俺の場合。
85nobodyさん:04/01/07 00:06 ID:???
>>83
>print FILE join '\t', @num;

やってみたの?
86XML-XPathなんですが:04/01/07 00:23 ID:???
すみません。おわかりの方いたら教えていただきたいのですが、
 やりたいこと:XML-XPathモジュールを使用してXMLファイルを調べ、指定のパスの位置の要素を表示したい。その際、存在しないパスだったら、エラー終了でなくて、「そのパスは間違っています」と表示させたい。

なのですが、
my $xp = XML::XPath->new(filename => 'a.xml');
my $nodeset = $xp->find("$my_path");
foreach my $node ($nodeset->get_nodelist){
print "node = $node\n";
}

として、$my_pathをいろいろ指定すると、
$my_path = '/a/b/text()';
の場合はちゃんと値nodeAが表示されて、
$my_path = '/a/c/text()';
ではただエラー終了してしまいます。これをエラー終了でなくて、上記の目的のようにするにはどのように修正を加えると良いのでしょう。
------------
a.xml
<a>
<b>nodeA</b>
</a>
-------------
87nobodyさん:04/01/07 00:41 ID:???
>>86
http://search.cpan.org/~msergeant/XML-XPath-1.13/XPath.pm

> ただエラー終了してしまいます。これをエラー終了でなくて、
> 上記の目的のようにするにはどのように修正を加えると良いのでしょう。

エラーが出る原因になる箇所を特定してそこで分岐すりゃ
いいんじゃないの。
88nobodyさん:04/01/07 00:42 ID:???
>>86
書き直しました。↓こんな感じです
my $xp = XML::XPath->new(filename => 'a.xml');
my $nodeset = $xp->find("$my_path");
foreach my $node ($nodeset->get_nodelist){
print "node = $node\n";
}
for ( ; ; ) {
print "selected";
}
foreach (split (/\,/,$data{mobile})) { $select{$_} =" nodeA"; }
$html = join "",map "<option value=\"$_\"$select{$_}>$mobile{$_}\n",keys (%mobile);

なんとか無い知恵絞って考えてみました、詳しくはないんで、自己責任で行ってくださいね
89あぼーん:あぼーん
あぼーん
90あぼーん:あぼーん
あぼーん
91あぼーん:あぼーん
あぼーん
92あぼーん:あぼーん
あぼーん
93あぼーん:あぼーん
あぼーん
94あぼーん:あぼーん
あぼーん
95XML-XPathなんですが:04/01/07 00:52 ID:???
すみません、先ほどのソースが下記間違いをしてました。
改めて載せます。お返事いただいたかた、ありがとうございました。どこの部分でどんな値が返ってエラーになってるのかもわからないんです。

すみません。おわかりの方いたら教えていただきたいのですが、
 やりたいこと:XML-XPathモジュールを使用してXMLファイルを調べ、指定のパスの位置の要素を表示したい。その際、存在しないパスだったら、エラー終了でなくて、「そのパスは間違っています」と表示させたい。

なのですが、
my $xp = XML::XPath->new(filename => 'a.xml');
my $nodeset = $xp->find("$my_path");
foreach my $node ($nodeset->get_nodelist){
$item = XML::XPath::XMLParser::as_string($node);

print "node = $item\n";

}

として、$my_pathをいろいろ指定すると、
$my_path = '/a/b/text()';
の場合はちゃんと値nodeAが表示されて、
$my_path = '/a/c/text()';
ではただエラー終了してしまいます。これをエラー終了でなくて、上記の目的のようにするにはどのように修正を加えると良いのでしょう。
------------
a.xml
<a>
<b>nodeA</b>
</a>
-------------

9681:04/01/07 00:53 ID:???
>>82-85
ご回答どうもありがとうございます。

print FILE "$num[0]\t$num[1]";

とさせていただきました。
printfは何かスマートじゃないと思ってたのでお蔭様ですっきりしました。
97nobodyさん:04/01/07 00:58 ID:???
>>95
> どこの部分でどんな値が返ってエラーになってるのかもわからないんです。

分からないんなら調べればいいんじゃないの。

my $xp = XML::XPath->new(filename => 'a.xml'); # $xp の中身
my $nodeset = $xp->find("$my_path"); # $nodeset の中身
foreach my $node ($nodeset->get_nodelist) { # $node の中身
  $item = XML::XPath::XMLParser::as_string($node);
  print "node = $item\n";
}
98nobodyさん:04/01/07 01:19 ID:???
>>96
漏れもそれがスマートつーか見た目一番分かりやすい。(初心者にとって)

>>81
C言語の癖が出てまつね(笑)
99XML-XPathなんですが:04/01/07 03:02 ID:???
>>97
ご指摘ありがとうございました。
調べてみたら、どこまで値が存在してるかわかりました。
ここで分岐させると良さそうです。
あとはなんとかやってみます。
100nobodyさん:04/01/07 03:25 ID:???
げとー
(・∀・)
101nobodyさん:04/01/07 03:58 ID:???
>>99
自力解決できる力はちゃんとあるんだから、これからは
安易に人に尋ねず足掻いてみような。
デバッグのコツなんかも自分で指動かさないと身につかんぞ。
102nobodyさん:04/01/07 10:44 ID:???
>>99
これからは安易に人に尋ねんじゃねーよ!!このクズ!!

おまえはうざいんだよ、質問する前に鏡の前でちゃんと見ろ!!
生きる価値のないおまえは、二度と来ないでね
うざい!!くたばれ!!
103あぼーん:あぼーん
あぼーん
104あぼーん:あぼーん
あぼーん
105あぼーん:あぼーん
あぼーん
106あぼーん:あぼーん
あぼーん
107あぼーん:あぼーん
あぼーん
108あぼーん:あぼーん
あぼーん
109nobodyさん:04/01/07 14:50 ID:???
塩酸なんかたいしたことないし
110nobodyさん:04/01/07 17:36 ID:+LjjP/pC
掲示板を作っていますが、ファイルのロックは
symlink方式とmkdir方式はどっちが良いですか?
111nobodyさん:04/01/07 17:39 ID:+WIF+aLa
>>99
そんなの自分で決めろ!このクズ!!

おまえはうざいんだよ!!掲示板作るのは迷惑だから、絶対にやめてね
生きる価値のないおまえは、二度と来ないでね
うざい!!くたばれ!!
112あぼーん:あぼーん
あぼーん
113nobodyさん:04/01/07 17:40 ID:???
>>110
【Perl】ファイルロック(排他処理)について語ろう
http://pc2.2ch.net/test/read.cgi/php/1024795138/

過去ログを読んでください
114あぼーん:あぼーん
あぼーん
115あぼーん:あぼーん
あぼーん
116あぼーん:あぼーん
あぼーん
117あぼーん:あぼーん
あぼーん
118あぼーん:あぼーん
あぼーん
119あぼーん:あぼーん
あぼーん
120nobodyさん:04/01/07 18:18 ID:/9q+t4l2
硫酸って確か透明なビンに入れたらだめなんじゃなかったっけ?
121nobodyさん:04/01/07 18:28 ID:oR3XpBNy
Perlでは、JavaScriptのswitchみたいに、1つの変数の値に応じて処理を振り分けるにはどのようにすればよいでしょうか?
122nobodyさん:04/01/07 18:47 ID:???
123nobodyさん:04/01/07 20:27 ID:MpZPxmlE
すいません、ファイルのアップロードができません。
こちらのサイトを参考にして、tp://www.ss.iij4u.or.jp/~somali/web/_perl_upload.html
以下のようなスクリプトを組んでみたのですが、ファイルがアップロードされません。
0byteのファイルが作成されます。

#!C:/perl/bin/perl
use CGI;
$query=new CGI;
#ファイル名
$file=$query->param('file');
#アップロード
open(OUT,">test.jpg")||die "Error";
binmode(OUT);
while(read($file,$buffer,1024)){
print OUT $buffer;
}
close(OUT);
close($file);
#結果出力
print "Content-type:text/html\n\n";
print "OKです。このファイルをアップロード\n";
print "$file\n";
exit;

このスクリプトに含まれていない部分を、
上記のサイトのスクリプトからコメントアウトしてみたのですが、
コメントアウトしても上記のサイトのスクリプトは正常に動作します。
つまり、99%同じスクリプトなのに、俺のスクリプトは正常に動作しないということです。

どうしてでしょう。
124nobodyさん:04/01/07 20:36 ID:???
>>123
enctype="multipart/form-data" はOKかね?
125123:04/01/07 20:41 ID:???
>>124
できました!
まさかHTML側に不備があるとは思いませんでした!
ありがとうございます!!!
126nobodyさん:04/01/07 20:43 ID:???
>>123
> tp://www.ss.iij4u.or.jp/~somali/web/_perl_upload.html

<form action="upload.cgi" method="post" enctype="multipart/form-data">
<input type="file" name="filename">
<input type="submit" value="送信">
</form>

このスクでやっているのなら、

#ファイル名
$file=$query->param('file');    ×
$file=$query->param('filename'); ○
127nobodyさん:04/01/07 20:46 ID:PcR1A7Vx
質問させてください。

perl5.6でスクリプトを書いています。
多次元配列を関数に渡す場合、例えば
$array[0][0] = "文字列";
$array[0][1] = "文字列";
$array[0][2] = "文字列";
$array[1][0] = "文字列";
.
.
.
$array[30][2] = "文字列";

という多次元配列を関数にリファレンスで渡す場合は

&mySub(\@array)

#関数側
mySub{
my @ar = @{$_[0]};

#処理
}

としてもうまくいきませんでした。(@arをループさせて調べたら、配列のlengthが30になっていない)
もしかしたら関数側の処理が間違えているのかもしれないのですが、
関数へのわたしかたがこれであっているのかも疑問です。

間違えをご指摘願います。よろしくお願いします。
128127:04/01/07 20:51 ID:PcR1A7Vx
↑訂正
mySub{=×

sub mySub{
です
129nobodyさん:04/01/07 20:52 ID:63FZKlc/
質問です。。。

my $code = sub {print("CODE");};
この様なコードのリファレンスを、他の変数にコピーするにはどうすればいいのでしょうか
つまり、内容は同じだけど、参照先を別々にしたいのです
130nobodyさん:04/01/07 20:54 ID:QngMKJ6S
0..30のlengthは31かと・・・
131nobodyさん:04/01/07 21:00 ID:63FZKlc/
>>127
mySubの中で、
@ar->[0]のように
アロウ演算子でアクセスしてますか?
132127:04/01/07 21:00 ID:PcR1A7Vx
>>130
すいません。間違えてますね。
lengthは5くらいになっていました。
関数への渡しかたはこれであっているのでしょうか?
133nobodyさん:04/01/07 21:01 ID:???
>>127
どういう結果になってほしいか書いてくれ。
コードは書かれたようにしか動かん。

my($str, $i) = ('string', 0);
my @array = map [ $str++, $i++ ], 0..29; # 30個の無名配列から成る配列
sub mysub {
  my @ar = @{$_[0]};
  print $_->[1], ':[', $_->[0], "]\n" for @ar;
}
mysub(\@array);
134131:04/01/07 21:01 ID:???
$ar->[0]
スマソ
135127:04/01/07 21:03 ID:PcR1A7Vx
>>131
$cnt1 = 0;
for my $key1 (@ar){
$cnt2 = 0;
for my $key2 (@{$key1}){
$cnt2++;
}
$cnt1++;
}

このように調べています。これもおかしいでしょうか?
質問ばかりで申し訳ないです。
136nobodyさん:04/01/07 21:07 ID:???
>>127 知らんけどその関数名大丈夫なの?
受け渡しは問題ないように思えた予感。
137131:04/01/07 21:08 ID:???
>>135
それでいいと思いますけど
138nobodyさん:04/01/07 21:08 ID:???
>>129
> 内容は同じだけど、参照先を別々にしたいのです

意味不明。アドレスが一緒なら当然指し示す先も一緒。
同じ処理内容のコードリファレンスを複数作りたいなら
複数回生成するしかない。

sub new_code_ref {
  my $str = shift;
  return sub { print $str };
}
my $code1 = new_code_ref('CODE');
my $code2 = new_code_ref('code');

$code1->(); # CODE
$code2->(); # code
139nobodyさん:04/01/07 21:09 ID:???
>>135
まぁおかしかないけど、
左辺値をスカラーコンテキストで求めれば数が出てくるのでは?
140131:04/01/07 21:11 ID:???
>>138
アドレスが一緒とは一言も言ってませんが。。。

ありがとうございます、コピーはちょっと無理でしたか
もうちょっと自分で考えてみます
141127:04/01/07 21:13 ID:PcR1A7Vx
>133
>136
>137
>139

ありがとうございました。関数への渡しかたがこれであっているのか、
という質問でした。書き方がおかしくて申し訳ございませんでした。

おかしくなったのは(実際の)関数側の処理ということですね。

ありがとうございました。
142nobodyさん:04/01/07 22:23 ID:???
>>129
Storable::dcloneで出来るかも。出来ないかも。
143nobodyさん:04/01/07 23:18 ID:???
>>129
関数を複製したいということ?

my $sub_string = qq{ sub{ print("CODE"); } };
my $f1 = eval $sub_string;
my $f2 = eval $sub_string;

$f1->();
$f2->();

print "\n";
print "$f1\n";
print "$f2\n";
144nobodyさん:04/01/07 23:28 ID:ZDK8d65X
質問です。
ローカル鯖でCGIのパーミッションを変更するには
どうしたらいいのでしょうか?
OSはWindowsXP 、サーバーはApache1.3.29、PerlはPerl 5です。
145nobodyさん:04/01/07 23:52 ID:???
>>144
chmodで足りないならWin32::FileSecurity
146あぼーん:あぼーん
あぼーん
147あぼーん:あぼーん
あぼーん
148あぼーん:あぼーん
あぼーん
149あぼーん:あぼーん
あぼーん
150あぼーん:あぼーん
あぼーん
151あぼーん:あぼーん
あぼーん
152あぼーん:あぼーん
あぼーん
153あぼーん:あぼーん
あぼーん
154144:04/01/08 01:18 ID:aowYINr6
>>145
すいません、
「chmod」が分からなかったので検索したのですが、
LINUX関連のサイトばかりかかります。
Winでの鯖のパーミッション設定に関するサイトが全くかからないのですが。。
155nobodyさん:04/01/08 01:42 ID:???
だってないもん>パーミッション
156nobodyさん:04/01/08 01:44 ID:???
NTFS ならユーザ毎にアクセス権を設定できるけどな。
157nobodyさん:04/01/08 02:45 ID:8eGssvcS
XREAにあるCGIのスクリプトから、
PlalaのCGIサーバーに置いてあるファイルを読もうとしています。

$datapath = 'http://cgi**.plala.or.jp/垢/data.dat'; # 伏せてます
open(IN, "<$datapath") || print "error";

と組んでいますが、どうしても偽が返り「error」が表示されます。

どのようにすればデータを読み込むことができるのでしょうか?
158nobodyさん:04/01/08 02:56 ID:???
159nobodyさん:04/01/08 03:13 ID:???
>>158
ありがとん
160nobodyさん:04/01/08 03:24 ID:???
LWPの質問は多いなあ。
161あぼーん:あぼーん
あぼーん
162あぼーん:あぼーん
あぼーん
163あぼーん:あぼーん
あぼーん
164あぼーん:あぼーん
あぼーん
165あぼーん:あぼーん
あぼーん
166あぼーん:あぼーん
あぼーん
167あぼーん:あぼーん
あぼーん
168nobodyさん:04/01/08 10:22 ID:???
そろそろアク禁
169144:04/01/08 11:38 ID:9aALHIuH
>>155
ない?
設定できないってことですか?
まいったな…
そのCGIに外部からアクセスしてもらったら
 "取り消されたアクション"
とか出たらしいです。
どうしたらいいのでしょうか?
170nobodyさん:04/01/08 13:23 ID:???
>>169
ローカルでは動くんか?
httpd.confの設定がおかしいんじゃね?
http://itbtech.itboost.co.jp/inst/httpd_conf.php
171nobodyさん:04/01/08 15:14 ID:???
>>169
いつまでもスレ違いの話題やめれ
172nobodyさん:04/01/08 16:45 ID:???
ヤフーファイナンスから株価だけを切り抜きたくて下のように書いたんですが何も表示されません。
use LWP::Simple 'get';
my $URL = 'http://quote.yahoo.co.jp/q?s=4689';
my $html= get ($URL) ;
my $html=~ /<b>([0-9\,]+)<\/b>/;
print "Content-type: text/html\n\n";
print $1;

どなたか分かる方いらっしゃいますか?
173あぼーん:あぼーん
あぼーん
174あぼーん:あぼーん
あぼーん
175あぼーん:あぼーん
あぼーん
176あぼーん:あぼーん
あぼーん
177あぼーん:あぼーん
あぼーん
178あぼーん:あぼーん
あぼーん
179あぼーん:あぼーん
あぼーん
180nobodyさん:04/01/08 17:02 ID:???
質問させてください。

カウンタログから数値を読み取って、その数字に対応させたgifを表示させる普通のCGIの画像カウンタを使っているのですが、
それをテキストカウンタに置き換えたいと思います。
ページ自体はHTML、かつSSI不可なので、カウンタはgifで表示するのが一般的だと思うのです。
gifcatで画像連結して、
  print "Content-type: image/gif\n\n";
  print &gifcat'gifcat(@GIF);
で出力しています。
HTML側では<img src>でcgiの画像を呼び出しているのですが、
カウンタログを画像に変換せずにテキストのままで、
HTMLに<img src>などを使って出力することは可能でしょうか?
181nobodyさん:04/01/08 17:55 ID:J/IzCu60
open(FILE,"+> hoge.txt");
@hoge = <FILE>;
print FILE "@hoge";
close(FILE);

こうしたら、ファイルの中身が消えてしまいます。
なぜでしょうか。
(省いてありますが、ファイルの中身に手を加えて
それを同じファイルに書き込むという事です。)
読み込みopenと書き込みopenを分けるとその間に隙ができてしまうので
一度に行いたいのです。
182nobodyさん:04/01/08 18:04 ID:???
>>172
Finance::YahooJPN::* とか。試してないから動くかどうか分からんが。

あと正規表現の使い方が間違ってるぞ。
それだと「$html にはマッチしたかどうか」しか入らん。
もういっぺんマヌアル読め(・∀・)。
183nobodyさん:04/01/08 18:13 ID:???
>180
imgタグでは不可能
どうしてもやりたければiframeとか使いなさい

>181
+<
184172:04/01/08 18:22 ID:???
>>182
ありがとうございます。
perlの参考書に
パターンをカッコで囲うと$1に代入されると書いてあったんですが、違うんですか?
すみませんが、そのあたり教えていただけると助かります。
185nobodyさん:04/01/08 18:46 ID:???
>>184
my $html= get ($URL) ;
$html=~ /<b>([0-9\,]+)<\/b>/;

正規表現のせいじゃなく同じ変数に対してmyが余計
186あぼーん:あぼーん
あぼーん
187172:04/01/08 19:00 ID:???
>>185
ああ、お恥ずかしい…むちゃくちゃ初歩的な間違いでした。
コピペばかり使ってるからこんなことに気づかないのですね。
と、言い訳してみる。
おかげで、何事も無く動きました。
ありがとうございました。
188あぼーん:あぼーん
あぼーん
189あぼーん:あぼーん
あぼーん
190あぼーん:あぼーん
あぼーん
191あぼーん:あぼーん
あぼーん
192あぼーん:あぼーん
あぼーん
193あぼーん:あぼーん
あぼーん
194nobodyさん:04/01/08 20:10 ID:???
うわ、昼間に書き込みがあるよ。ひきこもりかよ(w
195nobodyさん:04/01/08 20:18 ID:???
質問よろしいでしょうか

[関数名] [スカラー変数] {コード}
のような関数を作るにはどうすればいいのでしょうか?

printx 'あああ' {
printf("どうも");
}
のような形です
196nobodyさん:04/01/08 20:28 ID:???
>>195
何をする為にそういう事をする必要があるのか説明してくれたら
もっとマシな解決方法を提示できるかも知れない。
197nobodyさん:04/01/08 21:33 ID:???
>>194
お前殺すぞ?黙ってろ。
198nobodyさん:04/01/08 22:16 ID:???
>>197
殺人予告ですか
199nobodyさん:04/01/08 22:17 ID:???
200nobodyさん:04/01/08 22:20 ID:???
200げとー
201144:04/01/08 23:47 ID:6SjzJ2Zx
>>170
解決しました!
ありがとうございます。


それから…

  open(FH,"<data.txt");
  @data=<FH>;

というスクリプトを組んだときに、
$data[0]、$data[1]、$data[2]、......には、
改行ごとに区切られた文字列が入るんですよね?
改行以外で区切られて入ることってあるのでしょうか?
202nobodyさん:04/01/08 23:57 ID:???
203144:04/01/09 00:19 ID:KE8pFtNS
>>202
ありがとうございます!
デフォルトだと改行なんですよね。

  open(FH,"<data.txt");
  @data=<FH>;

としたときに、
デフォルトで、data.txtに改行が含まれていないのに、
@dataには区切られたデータが入ります。
ものすごく都合のいい形で区切られて入るのですが、
あまりにも完璧に区切られて入るので不可解で気持ち悪いんです。
perlが俺の意図を読み取ってるようで…
改行もないのに俺の区切って欲しい場所で区切ってくれるんです。
気持ち悪いですよね。
すっごく嫌です。
完璧に区切ってくれるのでそれでもいいかと思ったのですが…
そう組んだ覚えのない動作をされるということで
やはり危険かと思ったんです。
data.txtに規則性がないことはないのですが、
スクリプトを組まずに読み取れるような規則性ではないです。
何か霊的なものでしょうか?
204nobodyさん:04/01/09 00:35 ID:???
>>203
unixとwinの改行コードの違いじゃ内科医?
205204:04/01/09 00:37 ID:???
つーかねそんなことはどうでもいいんよ。

俺が言いたいのは、あぼーんはレス再取得しなきゃいけないからやめてくれよ。
やるなら基地外を規制かけてくれ
206あぼーん:あぼーん
あぼーん
207あぼーん:あぼーん
あぼーん
208あぼーん:あぼーん
あぼーん
209あぼーん:あぼーん
あぼーん
210あぼーん:あぼーん
あぼーん
211あぼーん:あぼーん
あぼーん
212あぼーん:あぼーん
あぼーん
213nobodyさん:04/01/09 01:21 ID:???
>>205
暗いと不平を言うよりも、進んで灯りを点けましょう。
http://info.2ch.net/guide/
214nobodyさん:04/01/09 01:54 ID:???
> めがねのキモオタが書き続けて迷惑
> 自作自演でスレ上げて迷惑
自分で自分(ry
215nobodyさん:04/01/09 02:00 ID:YnO0ddlG
パンチ5分の2のスクリプトをまともに教えてくれなかった事がそんなに悔しかったか?
216nobodyさん:04/01/09 02:22 ID:kbq9DYze
Perlの正規表現で質問なのですが、

<a href="http://○○.com/dir/dir/">http://○○.com/dir/dir/</a>

から、 http://○○.com/dir/dir/ だけを取り出すには、どのようにしたらいいのでしょう?

$URL =~ s/("*")//g;
$URL =~ s/(["]*["])//g;

色々やってみましたがなかなか上手く行きません。
どなたか教えて頂ければ幸いです。
217nobodyさん:04/01/09 02:41 ID:???
218あぼーん:あぼーん
あぼーん
219あぼーん:あぼーん
あぼーん
220あぼーん:あぼーん
あぼーん
221nobodyさん:04/01/09 04:12 ID:???
>>215
まともな質問じゃなかったから誰も答えようがなかっただけだよ。
いじわるして教えなかったわけじゃない。
222nobodyさん:04/01/09 06:50 ID:???
連続で半角スペースを出すにはどうすればよいのでしょうか。
(↓ここは普通はいじらない方がよいですか?)
=~ tr/+/ /;
223nobodyさん:04/01/09 07:09 ID:???
アク禁頼むかねぇ、面倒くせーなぁ。
224あぼーん:あぼーん
あぼーん
225あぼーん:あぼーん
あぼーん
226あぼーん:あぼーん
あぼーん
227あぼーん:あぼーん
あぼーん
228nobodyさん:04/01/09 08:57 ID:z1iUrrA5
天才占い師の>>250によると
コピペ荒らしの正体は
229216:04/01/09 11:43 ID:???
>>217
ありがとうございます。出来ました。

$URL =~ s/href="([^"]+)"//;
$URL = $1;

結局この2行になりましたが、大変参考になりました。

# bbsのログ(HTML)を(log形式に)一括変換するスクリプトです。
シェルスクリプトでwget・変換、CRONで回すと掲示板内検索
するの楽で良いです。

>>222
> 連続で半角スペースを出すにはどうすればよいのでしょうか。

=~ s/ /  /g;
.   ↑半角スペース二つ
230216:04/01/09 11:46 ID:kbq9DYze
あれ?もしかして2chって&を変換しないのか?

=~ s/ / &nbsp;/g;
.   ↑半角スペース二つ &は半角で。
231144:04/01/09 12:40 ID:0iEHnHUN
>>204
そのtxtファイルはwinで動作しているソフトから生成されたもので、
鯖もwinです(XP)。
232181:04/01/09 12:56 ID:IDjsxzm+
>>183
+> だと、内容が全部消えてしまいます(たぶん@file = <FILE>;の動作効いていない為)
+< だと、前の内容が残っていて、その下の行に新しいデータが書き込まれてしまいます
233nobody@正規表現マンセー:04/01/09 13:40 ID:???
> +< だと、前の内容が残っていて、その下の行に新しいデータが書き込まれてしまいます

俺はこれ、動作怪しい時あるから信用してない。

Cで言う所のファイル読み込みポイント(?)の関係かも知れないけど、
メンドくさいから一度全部ロードしてそこに追記、そのまま書き出してる。

でかいファイルを扱う時は、Cでゴリゴリ書いちゃうけど。
234181:04/01/09 13:55 ID:IDjsxzm+
# ファイル読み込み
open (FILE, "$file");
&lock; # ロックする
@file = <FILE>;
close (FILE);

# ※ここに隙ができるのを防ぎたいのですが…

# データを更新して、上書き
open (FILE, ">$file");
&lock; # ロックする

# ここで@fileになんか手を加える

print FILE "@file"; # 適当に書き込む
close(FILE);
235181:04/01/09 13:57 ID:IDjsxzm+
ちなみに、ロック形式が、flockの場合です
236nobodyさん:04/01/09 14:05 ID:???
open (FILE, "+<$file");
flock (FILE,2);
seek (FILE, 0, 0);
@file = <FILE>;
print FILE "@file";
truncate (FILE, tell);
close (FILE);
237nobodyさん:04/01/09 14:08 ID:MPFjJl+g
<form name=form1 method=POST>
<INPUT TYPE=SUBMIT NAME=Submit VALUE=その1>
<INPUT TYPE=HIDDEN NAME=name VALUE=$name>
</form>
<form name=form2 method=POST>
<INPUT TYPE=SUBMIT NAME=Submit VALUE=その2>
<INPUT TYPE=HIDDEN NAME=name VALUE=$name>
</form>

↑のようにするとボタンが縦に並んでしまいます。
form2つのボタンを横に二つ並べるにはどうしたらよいですか?
238nobodyさん:04/01/09 14:12 ID:???
>>237
それはHTMLでしょ。Web制作板へどうぞ。
239144:04/01/09 14:13 ID:???
>>237
TABLEタグとか使ったらどうですか?
240181:04/01/09 15:01 ID:IDjsxzm+
>>236
やっぱり「+<」だと、前のデータの下の行に新しいデータが書き込まれてしまいます。
241nobodyさん:04/01/09 15:24 ID:???
>>240
こういう手もあるけど
open (FILE, "+>$file");
flock (FILE,2);
truncate (FILE, 0);
seek (FILE, 0, 0);
@file = <FILE>;
print FILE "@file";
close (FILE);

さっきのもそうだけどseekで先頭に移動できたかどうか
$result = seek (FILE, 0, 0); とかやって$resultの値を見てみ
242181:04/01/09 15:51 ID:IDjsxzm+
何度もすんません、
1が返ってきたんで、成功はしてるようです。

一応、確認しておきたいのですが、やりたい事は、
テキストファイルの中身が

AAA

だったとして、
それを、AをBに置き換える処理だとします。
そうするとテキストファイルの中身は

BBB

になってくれればよいのですが、
現状だと、

AAA
BBB

のようになってしまうという事です。
使ってるサーバーのせいで+を付けたファイルのオープンはできないのかもしれないですね。
243nobodyさん:04/01/09 15:53 ID:???
わかると思うが>>236>>240.も読み込んだデータを再び上書きだからな
データに手を加えて書き換えはprint FILE "@file";あたりでやってくれよ
244nobodyさん:04/01/09 15:55 ID:???
>>242
書き込むデータの処理が間違っているんじゃないか?
本当にBBBになった上で書き込んでるか?
245181:04/01/09 16:31 ID:IDjsxzm+
何度もすんません、はじめに調べれば良かったんですが、
「@file = <FILE>;」
これをやったあとに、htmlに@fileを表示してみたら何も出ませんでした。
そりゃ、いくら@fileを展開して変更しても無理だった訳です。
という事はやっぱり「読み込み&上書き」openができないって事でしょうか。
246181:04/01/09 16:47 ID:???
前にも書きましたが、
+> だと、@fileにはファイルの中身が入っていません。
+< だと、@fileにはファイルの中身が入っています
なので、可能性があるとしたら、「+<」を使うしかないと思うんですが、
openしてファイルの中身を取得したあとにファイルの中身消すみたいな関数ないですかね。
まぁそんなのがあれば+<を使う必要もない訳で。
247nobodyさん:04/01/09 17:19 ID:???
truncate

それからできないできないって言ってるだけじゃなくて環境とか書けや
248181:04/01/09 17:22 ID:IDjsxzm+
lolipopです。
249nobodyさん:04/01/09 17:29 ID:???
open (FILE, "+>$file");
flock (FILE,2);
@file = <FILE>;
truncate (FILE, 0);
seek (FILE, 0, 0);
print FILE "@file";
close (FILE);

こうだな
250181:04/01/09 17:39 ID:IDjsxzm+
あれ!?

あれ!?

open (FILE, "+<$file"); #「+<」に変更
flock (FILE,2);
@file = <FILE>;
truncate (FILE, 0);
seek (FILE, 0, 0);
print FILE "@file";
close (FILE);

こうしたら出来た!!!
なんで!? なんで!? やったー!
251181:04/01/09 17:49 ID:IDjsxzm+
パールがうまく組めて嬉しい私の喜びをダンスで表現してよいかしら?

♪ワン、ツー、スリー、フォー!

♪エラー探してデバッグー 右へ左へcopy and paste

♪パール組めて良かった〜、うれしはずかしOh my heart

♪パール、組めてうれしい僕の、体の一部が

ホット!! ホット!! ホット!! ホット!! ホット!! ホット!!

ホット!! ホット!! ホット!! ホット!! ホット!! ホット!!

ホット!! ホット!! ホット!! ホット!! ホット!! ホット!!

ホット!! ホット!! ホット!! ホット!! ホット!! ホット!!
252222:04/01/09 17:56 ID:???
>>229-230
ありがとうございました!
253nobodyさん:04/01/09 20:14 ID:0Ib8//vj
フォームから入力された内容を現在Jcode.pmで
&Jcode::convert(\$text,'sjis');
こんな形でsjisにして保存してるんですが、
半角カナがたまに文字化けします。
ネット上探しまわりましたが、この問題はよくあるみたいなんですが、
半角カナが入った文字列の文字コード判定は難しいそうで、
みんな結局半角禁止みたいな対処のようでして、
具体的な解決策が見当たりませんでした。

当方、携帯サイトなので、表示スペースの有効利用といった意味でも、
できるだけ半角カナで表示させたいと考えており、なんとか解決したいです。
また、ゆくゆくはz2hも使って全部半角にすることも考えておりますが、
兎に角文字化けを直さない限りはどうしようもないので詳しい方ご教授願えませんでしょうか。
254nobodyさん:04/01/09 20:19 ID:???
フォームからsjisを受け取ればいい。そのまま保存して出力してくれ。
255253:04/01/09 20:46 ID:???
>>254
早速のレス有難うございます。
フォームからsjisを受け取るとは具体的にどういったことでしょうか?
あまり詳しくないのですが、メタで以下のように指定するといったことなのでしょうか?
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">

少し調べてみたら以下のようなページを見つけました。この考え方ですよね
ttp://sometime.minidns.net/~ccgi/judgecode.html
256nobodyさん:04/01/09 23:32 ID:???
Jcode::convert() するなってことでは。
でもこれだと、誰かが sjis 以外で書いた時に文字化けして見えちゃう。

携帯って EUC-JP はダメなのかな?
257253:04/01/09 23:40 ID:???
いやおそらく255で問題ないかと思います(完璧では無いようですが)
ページをmetaでsjisと指定することにより、
そのページのフォームから入力された文字コードもsjisとなるようです。
(↑これ知らなかったデス。2chもおそらくこうしてると思われます)
なのでこれに全角→半角を組み合わせる方向で改造中です。
258253:04/01/09 23:44 ID:???
携帯の文字コードも調べてみたところやはりsjisのようで
おそらくEUC-JPだと化けるんではないでしょうか。

とりあえず皆さん有難うございました。
(つーか全然駄目。そんなんじゃ解決してないよ?とかありましたらお願いします。)
259nobodyさん :04/01/10 14:20 ID:???
cp932 と sjis でひかっかったとか?
260nobodyさん:04/01/10 14:23 ID:???
>>251
 喜びをダンスで表現するなら、せめてこれぐらいは使って欲しかった。

         おにぎりワッショイ!!
     \\  おにぎりワッショイ!! //
 +   + \\ おにぎりワッショイ!!/+
                            +
.   +   /■\  /■\  /■\  +
      ( ´∀`∩(´∀`∩) ( ´ー`)
 +  (( (つ   ノ(つ  丿 (つ  つ ))  +
       ヽ  ( ノ ( ヽノ   ) ) )
       (_)し'  し(_)  (_)_)
261nobodyさん:04/01/10 17:57 ID:???
>>253
まさにそういうときのためにform要素のaccept-charset属性がある
http://www.ne.jp/asahi/minazuki/bakera/html/reference/formctrl#form

IEは対応してないけどな
IE死ねよ

携帯のブラウザからどうなるかは知らん
262nobodyさん:04/01/10 18:19 ID:???
ソフトウェアは命じゃないので死ねないと思いますがね
263nobodyさん:04/01/10 22:04 ID:???
確かに、ソフトウェア=命ではないだろうな。
264nobodyさん:04/01/10 23:56 ID:???
というか、願望だな。IEがもし生きてたら殺してやりたいくらい憎いと言うような。
265nobodyさん:04/01/10 23:58 ID:???
「相対性理論は死んだ」とか普通に言うやん。ただの比喩だよ。
266nobodyさん:04/01/11 00:13 ID:???
>>262
お前はkillというコマンド名にも文句を言いそうだな。
267nobodyさん:04/01/11 00:47 ID:???
この世には擬人法すら知らないやつもいるということで。
268nobodyさん:04/01/11 04:14 ID:???
必死すぎるぞ。「IE死ねよ」の発言者・・・
269nobodyさん:04/01/11 06:44 ID:???
>>262=>>268 でファイナルアンサー?
270nobodyさん:04/01/11 09:27 ID:???
でも「IE氏ねよ」と言った意味を理解しているんだろ?>喪前等
揚げ足取りなんて小さいぞ、なんと小さい人だ
271nobodyさん:04/01/11 10:19 ID:lgZdz8Cf
---------ここから----------
1<>a<>1073782944<>
---------ここまで----------
今まで↑のようなテキストファイルを配列に格納するときに
@list = split (/<>/,scalar(<FH>));
としてたんですが、最後に改行があるときに
\nだけが入った要素が最後に追加されていたことに気づきまして、
$temp = <FH>; chomp $temp;
@list = split (/<>/,$temp);
としたんですが、
これだとおそらく無駄にメモリ食ってるんじゃないかと思いまして
(結構大きいデータなもんで・・・。)
変数$temp介さずに格納できないものでしょうか?
272nobodyさん:04/01/11 10:27 ID:???
>>271
Perl が面倒見てくれるから、メモリがどうのこうのなんて、あまり気にしなくていい。
273271:04/01/11 10:37 ID:???
ごめんなさい。この場合メモリとか関係ないような気もしてきました。
しかし、「無駄な処理さしてる、コードが汚い」という観点から、
もうちょっとスマートに書けないものか、という質問に変えさせてください。
274nobodyさん:04/01/11 10:50 ID:???
一行にダラダラ書くのと、一時変数を上手く使って書くのであれば
後者の方がコードが綺麗だよ。無駄な処理でもない。
どうも君のコードに対する美意識は理解しかねる。
275nobodyさん:04/01/11 10:57 ID:KP2Tb5at
chop $list[$#list]
276nobodyさん:04/01/11 10:59 ID:???
chomp (@list = map split /<>/,<FH>);
277nobodyさん:04/01/11 11:26 ID:???
変数にデータを入れるのって全然無駄じゃないし負荷もかからないんですね。
誤解してました。有難うございました。
278nobodyさん:04/01/11 11:35 ID:???
>277
省略した場合、$_に代入されてるだけだからな。
279nobodyさん:04/01/11 11:44 ID:???
数KB程度なら別にいいけど、数MBを超えるようなデータは気にしたほうがいいよ。
正規表現で置き換えるときとか、無制限アップローダを作るときとかね。
280あぼーん:あぼーん
あぼーん
281nobodyさん:04/01/11 23:22 ID:???
usr.datに
一行目user:pass
二行目aaa:passwd
と書いて
cgiから二行目のIDとパスを取得したいんですがどうしたらいいでしょうか?
教えてくださいお願いします。
282nobodyさん:04/01/11 23:40 ID:???
open DAT, "<", "usr.dat" or die $!;
my($id, $passwd) = split ":", (<DAT>)[1];
close DAT;
283nobodyさん:04/01/11 23:45 ID:???
open IN, 'usr.dat';
<IN>;
chomp($line=<IN>);
my($id, $pwd)= split(/:/, $line, 2);
284あぼーん:あぼーん
あぼーん
285あぼーん:あぼーん
あぼーん
286あぼーん:あぼーん
あぼーん
287あぼーん:あぼーん
あぼーん
288あぼーん:あぼーん
あぼーん
289あぼーん:あぼーん
あぼーん
290あぼーん:あぼーん
あぼーん
291nobodyさん:04/01/12 04:44 ID:???
package Hoge;
sub new
{
    my $class = shift;
    my $this = {
        'age' => undef
    };
    bless $this, $class;
    return $this;
}
sub setAge
{
    my $this = shift;
    $this->{'age'} = shift;
}
sub getAge
{
    my $this = shift;
    return $this->{'age'};
}

package main;

my @array = ('1','2','3');
my $obj = Hoge->new();
$obj->setAge(@array);
my @obj_age = $obj->getAge();

foreach(@obj_age)
{
    print "$_\n";
}
292nobodyさん:04/01/12 04:51 ID:???
>>291のソースで最後のプリントで1,2,3とでればいいんですがでません。
つまり何がしたいかというとインスタンス変数に配列を持たせたいんですが、どーやればいいのでしょう。
Perl OOP初心者です。よろしくです。
293nobodyさん:04/01/12 09:07 ID:???
294nobodyさん:04/01/12 18:08 ID:???
>>293
ありがとう!!できた!


以下のメソッドへと修正した。
sub setAge
{
my $this = shift;
@{$this->{'age'}} = @_;
}
sub getAge
{
my $this = shift;
return @{$this->{'age'}};
}

295nobodyさん:04/01/12 20:55 ID:???
ちょっと質問です
あるhogeというディレクトリ内にあるディレクトリ全てに対して、ある操作をしたいんですが、
hogeをopendirして、どうやって中の「ディレクトリ」だけを探すかというところで悩んでいます。
ディレクトリ以外には拡張子の為に「.」が含まれているので、正規表現で「.が含まれていなければ・・・」
とすれば実現できそうなんですが、こういう場合、皆さんはどのような方法をとられるのでしょうか?
296nobodyさん:04/01/12 21:06 ID:Xwc9MLk4
ファイルチェック演算子をつかう
297nobodyさん:04/01/12 21:10 ID:aTrw1Und
grep(!/^\.\.?$/ and -d "hoge$_", readdir(HOGE));
298nobodyさん:04/01/12 21:16 ID:???
有難うございます。参考になりました。
299295 (298):04/01/12 21:19 ID:???
>-d ディレクトリであれば
こんなのがあったんですか・・
恥ずかしながら知らなかったです。有難うございました。
300あぼーん:あぼーん
あぼーん
301あぼーん:あぼーん
あぼーん
302nobodyさん:04/01/13 03:19 ID:???
Perl一つ使えない厨房が荒らしてるな
どうせPHPも使えないへたれなんだろ
303あぼーん:あぼーん
あぼーん
304あぼーん:あぼーん
あぼーん
305あぼーん:あぼーん
あぼーん
306あぼーん:あぼーん
あぼーん
307あぼーん:あぼーん
あぼーん
308あぼーん:あぼーん
あぼーん
309nobodyさん:04/01/13 04:09 ID:???
>>305は何のAAかわからないのだが・・・
オシエテオクレ
310nobodyさん:04/01/13 06:02 ID:???
Perl一つ使えない厨房が荒らしてるな
どうせVBも使えないへたれなんだろ
311nobodyさん:04/01/13 08:09 ID:???
質問です。
$hoge = "2004/1/13 8:00:00";
$hogeにこのような時間のデータが入ってるときに、
この変数が、時間として正しいかを判定したいのですが、
if ($hoge !~ /^(\d{4})\/(\d{1,2})\/(\d{1,2}) (\d{1,2}):/ || ごにょごにょ) { print "おかしいよ"; }
このようにしてごにょごにょの部分で後方参照し判定しようかと思ってるんですが、
こんなんでいいのかなぁ?というか、もっと簡単な関数とか用意されてるのかな?
と思いまして質問させていただきました。
すいませんがよろしくお願いします。
312nobodyさん:04/01/13 08:18 ID:???
ごめんなさい。今のところ分と秒の部分は別に判定してもしなくてもyかったんで、
省いてました。
313nobodyさん:04/01/13 08:21 ID:???
三度すいません。
この後use Time::Localでtimelocalするんですが、
このときに変な時間渡すとエラー吐くんで、
それをevalで実行させて判定に利用しようと思います。
お騒がせしました。
314nobodyさん:04/01/13 12:29 ID:???
>>311
use strict;
use Date::Calc qw(check_date check_time);

my $hoge = "2004/1/13 8:00:00";
my ( $year,$month,$day,$hour,$min,$sec) = split(/\D/, $hoge );

if( check_date($year,$month,$day) and check_time($hour,$min,$sec) )
{ print "valid\n"; }
else{ print "invalid!\n"; }
315nobodyさん:04/01/13 14:57 ID:???
アルファベットを入力するとエラーが出るというのは、どのように記述すればよいのでしょうか。
特に以下のような構文を使う時に、何と書けばよいのかよくわかりません。

if($text eq ""){
return (101,"");}

どうかよろしくお願いします。
316nobodyさん:04/01/13 15:16 ID:???
>>315
きみはなにをいってるのかねなにがしたいのかいみがわかりませんわおじちゃんにわ
sub fanc {
$text = shift;
return (101,"???なにこれ?") if $test =~ /\w/;
}
317nobodyさん:04/01/13 16:19 ID:???
質問です。
ttp://ari-sin3.hp.infoseek.co.jp/arisin5.html
のアップローダーのサイズ表示をKBからByteに変えたいんですが、どこを変えればいいんでしょうか?
教えてください。

よろしくお願いします。
318nobodyさん:04/01/13 16:33 ID:???
my @ary = ("$a is $b.", "$a was $b.", "$a are $b.");
my ($a, $b) = hoge("boy, girl");
my $out = $ary[1];
print "$out\n";

などとしたときに、表示されるのが"彼 is 彼女."のような形にしたいんですが、
(彼とかの部分はhogeの仕様によりますが)
動かしてみると、"is."のように、$outの中の$aなどの変数部分が無視されています
これはどこに問題があるのでしょうか…。
319nobodyさん:04/01/13 16:43 ID:???
>>317
sukuriputomitene-si,mirukimonaikedo,1024dewattaraiidakejane-nokayo.
dokowoijirebaiinokamowakaranaitoiunonara,siran.bennkyousiro.
320nobodyさん:04/01/13 16:52 ID:???
>>315-318
お前ら(同じ香具師一人か?)いいかげんにしろ、ちっとは調べろや。勉強城や。
>>318
hoge("boy, girl");ってなんなんだよ関数なんか?
つーか大体一行目と二行目逆にせんかぎりちゃんと動くわけねーだろーが
my ($a, $b) = ("boy", "girl");
my @ary = ("$a is $b.", "$a was $b.", "$a are $b.");
my $out = $ary[1];
print "$out\n";
#意味不明ってかあほすぎるコードだよ?
321nobodyさん:04/01/13 17:00 ID:???
>>317
改造はスレ違い
322nobodyさん:04/01/13 17:54 ID:hDqA/G+I
ファイルハンドラを変数で持つことは可能でしょうか?
my $p;
open($p, "test");
こんな感じで。
-----------------------------------------------
my $p="a"; としてからopenすると何故か動くのですが、今度は、use strict
の場合に、

#!/usr/bin/perl -w
use strict;
my $p="a";
open($p, "test");

こうすると、以下のように怒られます(実行ファイルは./aです)。
Can't use string ("a") as a symbol ref while "strict refs" in use at ./a line 4.

何故なんでしょうか?
(そもそもファイルハンドラの定義がよく分からないのですが。ポインタ?)
323315:04/01/13 17:54 ID:???
>>316
できました!ありがとうございます!
ところで、例文を用いて

if(xxxxxx){
$text = shift;
return (101,"abc") if $test =~ /\w[a-z]/;
}

というふうに同一構文内でifを2回記述するのは大丈夫なのでしょうか。
ifを2回使うわなくてもよい書き方がありましたらご教授願います。
あと、\w[a-z]の中で、ある文字だけを例外的にエラー回避させたい時は、
どのように記述すればよいのでしょうか。(正規表現では無いようですが…)
どうかよろしくお願いします。


>>320
別の人だと思います。スクリプトを色々いじっていたのですが、
色々やってみてもエラーばかりだったのでこちらで聞いてみました。
Perl4日目の初心者ですが、これからたくさん頑張って勉強していきたいと思います。
324316:04/01/13 17:59 ID:???
>>323
いいかい?色々やってみたのですがの前に


 調 べ ろ 


>>5のリンク先とか行って、「perlとは」みたいな所から勉強しろ
325nobodyさん:04/01/13 18:13 ID:???
my ($a, $b) はダメ
326323:04/01/13 18:51 ID:???
>>324
そういう言い方ってないんじゃないの?
何十時間もいじって調べていじって調べていじって調べていじって調べて、
それでもわからないからやっと聞いてみたわけ。色々やるには調べてから色々やってるわけ。
初心者の質問コーナー?全然初心者向きじゃないじゃんw
327nobodyさん:04/01/13 19:12 ID:???
>>323
if(xxxxxx){
$text = shift;
return (101,"abc") if $test =~ /\w[a-z]/;
}

↑めちゃくちゃ
328316:04/01/13 19:30 ID:???
>>326
そういう言い方ってないんじゃないの?
君の記したコードと
>色々やってみてもエラーばかりだったのでこちらで聞いてみました。
↑これをみたら誰でもこう思うよ。
「知識ないやつが色々試して何かできるわけがないだろ」

道具を何も使わずに色々ためしても家を建てれるかい?てか何を"色々やってみる"の?
はやく>>5のリンク先で"道具"とってこいよ
329nobodyさん:04/01/13 19:49 ID:???
ちなみに俺は傍観者だが、328の肩を持つぞ。
330nobodyさん:04/01/13 20:06 ID:???
>>326
つまりお前は初心者レベルにも達していないわけだ
331nobodyさん:04/01/13 20:15 ID:???
>>322
>If FILEHANDLE is an undefined scalar variable (or array or hash
>element) the variable is assigned a reference to a new anonymous
>filehandle, otherwise if FILEHANDLE is an expression, its value
>is used as the name of the real filehandle wanted. (This is
>considered a symbolic reference, so "use strict 'refs'" should
>*not* be in effect.)

内容がundefでないスカラ変数を使うとき、その内容をファイルハンドル名として
(シンボリックリファレンスで)扱う…みたい。
(ファイルハンドルをシンボリックリファレンスって、良く分からんw)

ファイルハンドルはファイルハンドルで、操作が必要な時には型グロブで扱う。
スカラ変数に入れるときは、型グロブのリファレンスを入れる。

とはいえ、スカラ変数でファイルハンドルを扱う場合は
FileHandleやIO::Fileモジュールを使うのが一般的かと。

http://www.kt.rim.or.jp/%7ekbk/perl5.005/perlfaq5.html#How_can_I_use_a_filehandle_indir
332331:04/01/13 20:19 ID:???
引用元はperldoc -f openでした。
333nobodyさん:04/01/13 20:23 ID:???
そいつはマルチだからもういいよ
334nobodyさん:04/01/13 20:31 ID:???
>>330
痛いな
>初心者レベル
お前の作った新語?
何だよ、初心者レベルって。
始めたばかりの人=初心者だろ
初心者より下なんかあるんか?

無論、DQNとかくだらない煽りはいらない。
335nobodyさん:04/01/13 20:35 ID:hDqA/G+I
>>331
有り難うございます。やっと分かりました。
スカラ変数の場合、シンボリックリファレンスになるんですね。

ってことはuse strictやってるのにシンボリックが使えない!
なんて言うのは矛盾してますね。
解決しました。有り難うございました。
336331:04/01/13 20:48 ID:???
>>333
あれれ。。

>>334
始めたばかりの人=入門者。

>>335
もっとも厄介なバグは思い込み、とだけ言っておきます。
337nobodyさん:04/01/13 20:49 ID:???
入門者と初心者を別というのか。ひねくれたヤツだな・・・
リアルでも揚げ足ばっかとってるんだろうなぁ
338nobodyさん:04/01/13 20:56 ID:???
>>337
316くん、あんたが何を言おうと恥を上塗りしてるだけだ
こんなとこで油売ってないで検索、試行を繰り返しなさい。
339nobodyさん:04/01/13 20:57 ID:???
俺316ってことになってんのか?
>>330のカキコでちょっとムカッとキタから通りすがりに書いてみただけなんだがな
決め付けは良くないよ
340nobodyさん:04/01/13 21:15 ID:???
>>337
変?
うーん、そういう感覚だったんだけど。
341nobodyさん:04/01/13 21:24 ID:???
>340
自作自演と言われそうだが、俺もそういう感覚。
342nobodyさん:04/01/13 21:28 ID:hDqA/G+I
無駄な言い合いばっかしてるね。
なんの意味があるんだ? 名前も顔も分からないバーチャルの世界で。

文句言われても無視しとけよ。バーチャルなんだから。
相手を言い負かしたり、言い訳を述べてどうなるんだ? プライドが回復するのか?
ほっとけ。
343nobodyさん:04/01/13 21:48 ID:???
>バーチャル
激しくワラタ
344nobodyさん:04/01/13 21:49 ID:???
>>342
あなたはマルチポストしないでね。
345nobodyさん:04/01/13 22:10 ID:???
ま、まぁやめようや。
ホントはおれ316の言い方も悪かったんだろうと、少し反省してたよ。
気を取り直して、雰囲気も取り戻していきませう・・。
346nobodyさん:04/01/13 22:30 ID:???
入門者のスレはどこですか?
347nobodyさん:04/01/13 23:11 ID:???
入門者は入門者用の本でも勝って読め。
さすがにHellow World!から教えてくれるスレはないと思われ。
348nobodyさん:04/01/13 23:42 ID:???
そりゃそのスペルじゃ教えてもごもごもごもご・・・・・・
ともあれ、ちょっとぐらい自分で調べてperlを理解してもらわないと話にならないですからね。
そんな人に教えると、すぐ「じゃあこういうときは・・」とかいって質問マシンガン発射するからね
何でもかんでも、ちょっと調べれば解ることでもすぐ人に頼る癖もつくしね
349323:04/01/14 00:01 ID:???
留守にしている間に結構レスが。道具もないし知識もないし初心者レベルにも達していないわけだけど、
すでに数日前からサーバーで色々なスクリプトを使ってサイトを動かしてしまっているから、
色々やるのは入門者としてはアブナイかもねw でもおかげさまでバグはほとんどなくなったからめでたし。
例にあげたソースの中身はわけあってわざと判別しにくいものにしていたから
めちゃくちゃなのは気にする必要無し。>>5やその他ここのリンクもクリックする必要無し。

>>339
私はちょっとどころかかなりムカついたから言わせてもらったんだけど。

でもまあ確かに初心者には厳しくしないとね。いつも専門板の初心者スレで懇切丁寧に回答してるけど、
今日からは入門者や初心者には鬼のように厳しくするようにするわ。入門者や初心者ってイジメがいあると思う。
350nobodyさん:04/01/14 00:02 ID:???
>>348
>>質問マシンガン発射
確かにそうだな
これをされるとものすごくウザイ
ほんのわずかな違いでもどんどん聞いてくる。

それにしてもあぼ〜んの多いスレだ。
351323:04/01/14 00:02 ID:???
参考までに「初心者」の意味を調べてみた。

三省堂「大辞林 第二版」より
しょしん-しゃ 2 【初心者】習いはじめの人。未熟な者。

岩波書店「広辞苑 第五版」より
しょしん-しゃ 【初心者】初めて習う人。習いはじめの人。習ったばかりの人。

#「入門者」という言葉は広辞苑にも大辞林にもその他いくつかの辞書にも記載していない。

私は習いはじめの人で未熟な者で初めて習う人で習ったばかりの人だから「初心者」と名乗ったんだけど。
入門者と初心者は似たような意味でも、ここの人達は入門者を区別して嫌っている様子。
次スレからは <<入門者絶対お断り!!>> というような文句を>>1のテンプレでもにつけておけばよいのでは。
352nobodyさん:04/01/14 00:41 ID:???
>>351
もういいからどっかいけよw満足したんだろ?そんな危なっかしいスクリプトで。
じゃあいいじゃんバイバイ。
そんなことよりサーバーで実験するのだけはやめといた方がいいと思うぞ
なんていうかねぇ、どうかしてるよキミ。
353nobodyさん:04/01/14 01:00 ID:???
>>323
スレ違いだけど、
おまえ鯖のセキュリティはしっかりしてあるんだろうな。
踏み台になって他の香具師に迷惑かけるなよ。
DQNだから心配だ…

スレ違いsage
354nobodyさん:04/01/14 02:41 ID:???
>>323みたいな質問とコードを書いておきながら
「わざと判別しにくいものにしていた」とは恐れ入ったよw
本7なみにへらず口は達者なようだな
355nobodyさん:04/01/14 09:58 ID:???
またAA荒らしが増えるのか…
356351:04/01/14 10:30 ID:???
あれ、まだレスついてる。嬉しいなあ。

>>352
>>353
実験じゃなくて運用に入ってる。perlは大して使ってないし普通に動いてるから大丈夫。

>>354
へらず口でもやることはやってるけど?コードが判別しにくいのは見たまんま。
例題のコードなんて適当に加工したって別にいいんじゃない。
もちろん本コードはきちんと記述してあるしバグもなく動いてるから問題無し。

もう満足したよ。じゃあね。
357nobodyさん:04/01/14 11:06 ID:???
>>355
まあDQNスレだからしょうがないよ。
358nobodyさん:04/01/14 12:24 ID:???
めちゃめちゃ本7ぽいな。
359nobodyさん:04/01/14 13:51 ID:???
           ______
         /::::::::::::::::::::::::::::::::::::\
       /::::::::::::::::::::::::::::::::::::::::::::::::::\
      /:::::::::::::::::::::::::::::::::::::::::::::人:::::::::::ヽ
     /:::::::::|:::::::::::::::::::::::::::::::::/  ヽ、:::::::ヽ
     |:::::::::::@ヽ-------‐‐'′    ヽ:::::::::|
    |::::::::::/                 |:::::::::|
    |:::::::::/ ̄ ̄ ̄ ̄ヽ===/ ̄ ̄ ̄ ̄ヽ|:::::::::|
   |::::::=ロ  -=・=-  |,  |  -=・=-  ロ=::::::|
    |::::::::/ヽ      /ノ  ヽ      /ヽ:::::::|
   |:::::/  `─── /   ` ───  丶:::|
   |:::ノ        (●_●)        |::|
   |::|           l l           |::|
   |::|       __-- ̄`´ ̄--__       |::|
   |::|        -二二二二-        |::|
   |::::\                   /::::|
   \::::::\     _- ̄ ̄ ̄-_     /::::::/
     |Ξ|~ \             / ~|Ξ|
    /::::::ヽ/|\_______/|\ /:::::::ヽ
    |::::::::::|  \         /  |::::::::::::|
   /|:::::::::::|    \      /    |::::::::::::|
今度来たら殺すよ、初心者は二度と来るなよ!!うざい!!邪魔!!消えろ!!
360nobodyさん:04/01/14 13:53 ID:LCxPtJ1k
                                    ___
        彡川三三三ミ                   /     \
       川川 ::::::/ \ヽ                 /   / \ \
      川川::::::::ー◎-◎-)                 |    (゚) (゚)   |
      川(6|::::::::  ( 。。))                |     )●(  | 
    ._川川;;;::∴ ノ  ▽ ノ              __\     ▽   ノ
  /;;;:::::::::::::::\_;;;;;;;;;;;∪ノ            /;;;:::::::::::::\__∪ /
 /::::  /::::::::::::    |::::|              /::::  /::::::::::::    |::::|
(:::::::: (ミ:  ・ ノ:::・/:::|             (:::::::: (ミ:  ・ ノ:::・/:::|
 \::::: \:::::::   (::: |               \::::: \:::::::   (::: |
 /:::\::::: \:::    ヽ|               /:::\::::: \:::    ヽ|
/::::   \::::: \::: ヽ )             /::::   \::::: \::: ヽ )
|:::      \::   ̄ ̄⊇)__  〜      |:::      \::   ̄ ̄⊇)__  〜
|:::::::      \;;;;;;;;;;;(__(;;;・)  〜 モワー |:::::::      \;;;;;;;;;;;(__(;;;・)  〜 モワー
\::::::::::   ミ(;;; );; )       〜      \::::::::::   ξ(;;; );; )      〜
  \::::::::::::    ) )                \::::::::::::    ) )
    ):::::   //                  ):::::   //
   /::::::::: //                   /::::::::: //
 /:::::  (_(_                  /:::::  (_(_
Perlオタクをなめるなよ!!苦情があるなら、ここに書きこんでみろ!!チキンども!!
361nobodyさん:04/01/14 13:53 ID:LCxPtJ1k
      彡川川川三三三ミ〜 プゥ〜ン
      川|川/ 臭\|〜  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
     ‖|‖ ◎---◎ |〜 ∠   ! はあっ はああっ
     川川‖ /// 3///ヽ〜 |   かごたん
     川川    ∴)д(∴)〜 \______________
     川川       〜 /〜 
    川川川‖    〜 /川〜 ピュッピュッ
    / 川川    _/ ;|\〜      ρ 
   /    /        ;| |   ρ 
  (     (;;  ・     ・;)..|ρ 
   \    \    亠 ρ);;|  
   /: \   \   C)) ;) |
  /:::   \   ̄つ/ / | /            
 /:::      \  (__/ / _;/          
 (::::       ;;\__//  / ズリズリ〜 
 \:::       (;;;)⊂  /\.                          
   \       ヽ---/  \    
           モソモソ彡
362nobodyさん:04/01/14 13:54 ID:LCxPtJ1k
おまえらみんな雑魚!!Perlこそが神!!

__________
|| // //         |
||    / ̄ ̄ ̄ ̄\ . |    / ̄ ̄ ̄ ̄\
||   (  人____) |   (          )
||     |ミ/  ー◎-◎-)|   (ヽミ        |   
||    (6    ゜(_ _) )|.  ( 6)        |
||  __| ∴ ノ  3  )|  (∴ \____ノ_
|| (_/.\_____ノ |   >--(っ___□__)
|| / (   ))    ))ヽ|  (  ))     |三| ヾ
. ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄   |  ||========[]===|)
                    |_||  | ̄ ̄ ̄ ̄ ̄|
                  (_)\|三三三三三|
                   (:::::::::::::::::::::y:::::::::ノ)\
                    |:::::::::::::::::::::|:::::::::|   |

363nobodyさん:04/01/14 13:56 ID:LCxPtJ1k
   〜∞
          彡川川川三三三ミ〜
      プーン  川|川\  /|〜
          ‖|‖ ◎---◎|〜
          川川‖    3  ヽ〜  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
          川川   ∴)〆(∴)〜 < Perl以外はみんな死ね!!
          川川      〜 /〜 |  どんなにでかい絵はられても
          川川‖    〜 /‖〜  \__書きこんでやるぜ!
         川川川川   (⌒)川‖〜 ヴィシッ!
        //::::::::|-、 ,-/::::::ノ ~.レ-r┐
       / /:::::::::::|  /:::::ノ__ | .| ト、
       | /:::::::::::::::| 〈 ̄   `-Lλ_レ′

364nobodyさん:04/01/14 13:57 ID:LCxPtJ1k

         し!     _  -── ‐-   、  , -─-、 -‐─_ノ
  ア ギ    // ̄> ´  ̄    ̄  `ヽ  Y  ,  ´     ).  ア ギ
  ア ャ   L_ /                /        ヽ   ア ャ
  ア ア     / '                '           i ア ア
  ア ア    /                 /           く  ア ア
  ア ア   l           ,ィ/!    /    /l/!,l     /厶, !! ア
  ア ア    i   ,.lrH‐|'|     /‐!-Lハ_  l    /-!'|/l   /`'メ、_iヽ
  ア ア   l  | |_|_|_|/|    / /__!__ |/!トi   i/-- 、 レ!/   / ,-- レ、⌒Y⌒ヽ
  ア ア    _ゝ|/'/⌒ヽ ヽト、|/ '/ ̄`ヾ 、ヽト、N'/⌒ヾ (●)  ,イ ̄`ヾ,ノ!
  ア ア  「  l (●)(●)    (●) ′ | | |(●)L!  (●)(●)  リ
    ア   ヽ  | ヽ__(●) (●)、ヽ シ(●)! ! |ヽ_、ソ, (●)(●)(●)_ノ _ノ
-┐    ,√   ! (●)(●)(●)(●)   リ l   !  ̄ (●)(●)  ̄   7/
  レ'⌒ヽ/ !    | (●)〈(●)(●) _人__人ノ_ i(●)く(●)(●)(●)  //!
人_,、ノL_,iノ!  /! ヽ(●)r─‐- 、   「      L_ヽ   r─‐- 、(●)u(●)/
      /  / lト、 \ ヽ, -‐┤  ノ  ギ    了\  ヽ, -‐┤(●)(●)/
ア ギ  {  /   ヽ,ト、ヽ/!`hノ  )  ャ    |/! 「ヽ, `ー /)   _ ‐'
ア ャ   ヽ/   r-、‐' // / |-‐ く   ア     > / / `'//-‐、    /
ア ア    > /\\// / /ヽ_  !   ア    (  / / //  / `ァ-‐ '
ア ア   / /!   ヽ(●) レ'/ ノ   ア     >●)∠-‐  ̄ノヽ   /
       {  i l    !(●)●/  フ  ア    / (●)-‐ / ̄/〉 〈 \ /!
365nobodyさん:04/01/14 13:58 ID:LCxPtJ1k
           ___
          /     \     ___________
         /   ∧ ∧ \  /
        |     ・ ・   | < 初心者の質問は禁止!した奴ブッ殺す!!
        |     )●(  |  \____________
        \     ー   ノ
          \____/
        / ̄ ̄ ̄ ̄ ̄⌒\
   __    /  _|     |   |
   ヽヽ   /  /  \    |   |           ,,,,,,,iiiiillllll!!!!!!!lllllliiiii,,,,,,,
    \\|  |____|   .|   |           .,llll゙゙゙゙゙        ゙゙゙゙゙lllll,
     \/  \       |   |           .|!!!!,,,,,,,,       ,,,,,,,,,!!!!|
     | ヽ_「\      |   |、         |  ゙゙゙゙!!!!llllliiiiiiiiiilllll!!!!゙゙゙゙ .|
     |    \ \――、. |   | ヽ         .|     .゙゙゙゙゙゙゙゙゙゙     |
     |   / \ "-、,  `|  |  ヽ       |       ぬ      |
  _/   /    "-, "' (_  ヽ  ヽ      .|       る      |
/    __ノ      "'m__`\ヽ_,,,, ヽ       |       ぽ      |
`ー― ̄          ヽ、__`/ー_,,,, ゙゙゙゙!!!!!!!lllllllliii|        ハ      |
                    \゙゙゙゙゙゙゙!!!!!lllllllliiiii|       ン      |
                      \   ヽ   |       マ      |
                       ヽ   \  |       |       |
                        |     \.|               |
                        `ヽ、,,_ノ|               |
                              ゙゙!!!,,,,,,,,       ,,,,,,,,,!!!゙゙
366チンパン爺:04/01/14 14:28 ID:???
ファイルロックの方法について考えてみたんだけどさ、
こういうのはどうよ?

#ファイルがロック状態かどうかを、別のファイルに書き込む。
#そのファイルを見て書き込みができるかどうかを判断する。
#60sec経っても解除されない場合は異常なロックとみなし、別のプロセスにより強制ロック解除。
#但し、時間差による誤強制ロック解除を防止するために、
#ファイルがロック状態かどうかを書き込むファイルは次のように書き込む。
# 書き込みOK→0
# ロック中→ロックしたプロセスがロックした時間を書き込み、終われば0を書き込む。
#書き込みができなかったプロセスはその瞬間から60sec、毎secそのロック状態が書かれているファイルを調べる。
#解除されていればロックをして次の処理に移る。
#60sec以内にロックファイルの内容が変化していれば、別のプロセスによりロックされたと判断。
#そこからさらに60secチェックしながら待つ。

367チンパン爺:04/01/14 14:29 ID:???
sub filelock{
    open(FL,"<filelock.txt");   #ファイルがロックされているかどうかが書かれているファイル
    $filelock=<FL>;
    $filelock2="$filelock";     #$filelockの内容を変数として記憶
    close(FL);

    while ($filelock != 0){
        $sec++               #毎秒++
        open(FL,"<filelock.txt");
        $filelock=<FL>;
        close(FL);
        if ($filelock ne "$filelock2"){    #記憶している内容と比較し、違っていたら現在の内容を保存
            $filelock2="$filelock";
            $sec=0;
        }
        if ($sec=60){$filelock=0;}       #60sec経ったら強制ロック解除
        sleep(1);
    }
    $nt=time;                  #現在の時間を取得
    open(FL,">filelock.txt");
    print FL $nt;                #それを書き込むことによってロック
    close(FL);

}
368nobodyさん:04/01/14 14:33 ID:???
>>358
本7って何?
369nobodyさん:04/01/14 14:43 ID:???
>>366-367
専用スレでやったほうがいいんじゃない?

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


その前に
なんでそんな方法にしなきゃならないの?
使い物にならないよ
370nobodyさん:04/01/14 14:44 ID:???
>>366
ロックを勉強しなさい。はなしはそれから
371ヽ(´ー`)ノ:04/01/14 14:45 ID:???
>>367
ファイルのロック情報を書いているファイルに対するロックをどうするのか、
という話が浮上する。既存の方法を使う方が無難だと思うが。
372nobodyさん:04/01/14 17:14 ID:???
それ以前に367はロックとして機能しないでしょう。
373鬱だ…:04/01/14 20:27 ID:???
書籍の例題をやってみたのですがどうしても動きません。
どなたか解る方おられませんでしょうか…。サイトはXREAです。
そんなに長くないのですが文字数オーバーになるので、
別サイトですがUPしたのでご教授お願いします。。。
ttp://futoishi.nce.buttobi.net/komatta.html
374nobodyさん:04/01/14 20:36 ID:???
何でわざわざ画像にしてあんのかが気になる。
375nobodyさん:04/01/14 20:44 ID:???
>>373


これが見当たらないぽ↓

exit;
376nobodyさん:04/01/14 21:18 ID:SLc5ap0Y
マウント(smbmount)しているディレクトリにあるファイルを、renameすると、
エラーとなり、$!には『 無効なクロスデバイスリンクです 』というメッセージが
入っています。

ですが、同ファイルをunlinkする時にはとちゃんと動きます。

なぜ、同じファイルなのにunlinkはokでrenameだとエラーになるのでしょうか?
377nobodyさん:04/01/14 21:51 ID:???
ERROR:ロックは人生だ。
378nobodyさん:04/01/14 22:45 ID:???
379nobodyさん:04/01/15 00:28 ID:???
use File::Copy;
move("before", "after") or die;
380nobodyさん:04/01/15 03:02 ID:le05BWuU
携帯サイトを作ってるんで、文字列を全角->半角の変換をさせたいんですが、
どの説明しているページを見てもEUCでないと駄目となっています。
携帯サイトですからもちろん扱っている文字はshift-jisですし、
書いてるperlもs-jisです。理想?としては以下のような形で実現できればと・・・
$line = 'ア0−A';
Jcode::tr(\$line,'0-9A-Za-z−','0-9A-Za-z-');
print $line;
---結果----------------------------
ア0-A
-----------------------------------

Jcode.pmをほかの処理で使っているのでJcode::trでできないものかと
色々調べてみましたが、やはりEUC云々とかかれています。
ttp://perldoc.jp/docs/modules/Jcode-0.82/Jcode.pod
何かいい方法はないでしょうか。
381nobodyさん:04/01/15 03:04 ID:???
z2hというのがあったと思いますが、あれもEUCでないと変換してくれない
と書かれたページがありまして・・
382nobodyさん:04/01/15 04:10 ID:???
>>380
S-JIS→EUC→「全角->半角」→S-JIS じゃダメなん?
383nobodyさん:04/01/15 04:33 ID:???
>>382
それも考えましたが、わざわざ全→半の変換の為にEUCに一度変換するというのは
無駄な処理に思えてならないのですが・・
なにかEUCでないと変換できないというのには、技術的な理由があってのことなんでしょうか?
例えば自分で変換用ルーチンを組んでそこを通すといったことは技術的に可能なことなんでしょうか。
#その前にこういったことは、携帯サイトの動的コンテンツを組んでる人なら、
#誰しもが考えることのように思えるのですが、なぜそのような文献が見当たらないのかが不思議です。

ユーザーによってデータを登録する時に全→半変換させようと思ってるのですが、
この登録されたデータを検索する機能の中でも検索ワードを全→半変換するといったことも
それほど高負荷でなければ組み込もうと考えてまして、
EUCに一度変換するならちょっと負荷が気になります。
とは言え技術的に不可能ならば仕方ないのでその方法をとらざるを得ませんが・・。
384nobodyさん:04/01/15 05:17 ID:???
>なにかEUCでないと変換できないというのには、技術的な理由があってのことなんでしょうか?
あるからそのようになっている。Shift-JISは一部の文字の文字コードに、半角文字の文字コードを含み、
それが本当に半角なのか、全角文字の一部なのか判断できなくさせている。(Perlにとっては、だが)
なので、>>382が正解。
仕様がはっきりしないが……
1.PCに対しては全角文字、携帯に対しては半角文字を返す仕様
Shift-JISで投稿を受け付け、EUCに変換して保存。
表示する際に半角全角処理をし、Shift-JISに変換して表示。
2.投稿の全てを半角文字で表示する。
投稿時にShift-JIS→EUC-JP→全角→半角→Shift-JISの処理を行い保存する。
これなら、負荷も最小限で済む。

負荷を具体的に知りたいなら、Benchmarkをとってみるよろし。
それをしないで「負荷が気になる」と言われても「やってみもしないでえらそうなことを言うな」がオチ。


385nobodyさん:04/01/15 06:02 ID:???
>>384
有難うございます。しかしながら理解できない点が一つあります。
>あるからそのようになっている。Shift-JISは一部の文字の文字コードに、半角文字の文字コードを含み、
>それが本当に半角なのか、全角文字の一部なのか判断できなくさせている。(Perlにとっては、だが)
これは確かにそのようで、それが原因でjcodeを通すとたまに半角カナが化けるという現象を確認してます。
しかしそれなのになぜ、「>>382が正解」となるのでしょうか。
>S-JIS→EUC→「全角->半角」→S-JIS
つまり半角なのか全角なのかを判断することができないものを何故EUCに変換できるのか。ということです。
S-JISからEUCに問題なく変換できるなら、それは半角と全角の判断が可能ということにならないのでしょうか?
386ヽ(´ー`)ノ:04/01/15 08:57 ID:???
> 携帯サイトですからもちろん扱っている文字はshift-jisですし、
> 書いてるperlもs-jisです。

$line = do_something_returns_sjis();

use encoding 'Shift_JIS';
$line =~ /0-9A-Za-z−/0-9A-Za-z-/;

5.8.1 以降でしか使えんし、スクリプトが sjis で書かれてることに依存してるから
スマートな解決方法じゃないけど。
387nobodyさん:04/01/15 09:54 ID:???
>>386
有難うございます。そのような方法があるのですね
と・・なにをしてるのかわからなかったんで検索してみたんですが、
目的の解説ページにはたどり着けず、先に鯖の仕様を確認したところ、
Perlはバージョン5.6でした・・・。
やはり今の私の環境では
>Shift-JISは一部の文字の文字コードに、半角文字の文字コードを含み、
>それが本当に半角なのか、全角文字の一部なのか判断できなくさせている。
これに尽きるのでしょうか。
今から一応テストしてみようとは思いますが、
EUCに変換しようが、その過程で正しく認識できなく、文字化けを起こすような気がします。

以前どこかのランキングサイトで「入力内容の全角カナは全て半角に変換されます」
ってかかれてたサイトがあったのを思い出し、それをうちのスクリプトに組み込もう
と考えたのですがどうやら難しそうです。
388nobodyさん:04/01/15 10:34 ID:???
$str = 'テストテストtestてすと';
Jcode::convert(\$str, euc, sjis, h);
Jcode::convert(\$str, sjis, euc);
print $str;
これで求めていた動作をしてくれました。(少なくとも上の文字列では)
EUC変換時に第二引数を渡してあげなければ、やはり文字コード判定できず化けますが。

しかし何故s-jisで全角->半角変換が出来ないのか、凡人の私には理解できません。
文字コード判定でs-jis半角カナが混じっている場合に、s-jisかEUCの判別は難しくとも
半角が混じっていようとも、s-jisからEUCに問題なく変換できるということは、
コードがsjisと解っているときは、きちんと半角と全角の区別が出来るということではないのでしょうか。
ということはjcodeには組み込まれていないが、技術的には可能なのでは?
と、技術のない馬鹿が長々とほざいておきます。有難うございました。
389nobodyさん:04/01/15 10:42 ID:???
言い忘れてました。全->半変換してくれるのは「かな」だけです
>>380の文字列を入れると結果は「ア0−A」となります。
これはこういう仕様ですのであきらめます。
390nobodyさん:04/01/15 10:54 ID:???
何度もすいません。以下で可能でした。
$str = 'テストテストtestてすと';
Jcode::convert(\$str, sjis, sjis, h);
print $str;

これで出来るということは・・・どういうことなんでしょ。
内部的に一度EUCに変換してるとどこかで読んだ記憶があるのですが、
だから可能なのかな・・・。
391nobodyさん:04/01/15 11:14 ID:???
>>380
Perl 5.6 は UTF-8 に対応しているのを知ってる?
S-JIS、ECU には、それぞれ難点があり、気を使いな
がら使わねばならない。
マルチバイトの文字に対して複雑な処理をするなら、
UTF-8 を使うのが、一番お奨め。
392nobodyさん:04/01/15 12:30 ID:y+hUeXhG
今度来たら殺すよ、初心者は二度と来るなよ!!うざい!!邪魔!!消えろ!!
           ______
         /::::::::::::::::::::::::::::::::::::\
       /::::::::::::::::::::::::::::::::::::::::::::::::::\
      /:::::::::::::::::::::::::::::::::::::::::::::人:::::::::::ヽ
     /:::::::::|:::::::::::::::::::::::::::::::::/  ヽ、:::::::ヽ
     |:::::::::::@ヽ-------‐‐'′    ヽ:::::::::|
    |::::::::::/                 |:::::::::|
    |:::::::::/ ̄ ̄ ̄ ̄ヽ===/ ̄ ̄ ̄ ̄ヽ|:::::::::|
   |::::::=ロ  -=・=-  |,  |  -=・=-  ロ=::::::|
    |::::::::/ヽ      /ノ  ヽ      /ヽ:::::::|
   |:::::/  `─── /   ` ───  丶:::|
   |:::ノ        (●_●)        |::|
   |::|           l l           |::|
   |::|       __-- ̄`´ ̄--__       |::|
   |::|        -二二二二-        |::|
   |::::\                   /::::|
   \::::::\     _- ̄ ̄ ̄-_     /::::::/
     |Ξ|~ \             / ~|Ξ|
    /::::::ヽ/|\_______/|\ /:::::::ヽ
    |::::::::::|  \         /  |::::::::::::|
   /|:::::::::::|    \      /    |::::::::::::|
393nobodyさん:04/01/15 12:31 ID:y+hUeXhG
Perlオタクをなめるなよ!!苦情があるなら、ここに書きこんでみろ!!チキンども!!
                                    ___
        彡川三三三ミ                   /     \
       川川 ::::::/ \ヽ                 /   / \ \
      川川::::::::ー◎-◎-)                 |    (゚) (゚)   |
      川(6|::::::::  ( 。。))                |     )●(  | 
    ._川川;;;::∴ ノ  ▽ ノ              __\     ▽   ノ
  /;;;:::::::::::::::\_;;;;;;;;;;;∪ノ            /;;;:::::::::::::\__∪ /
 /::::  /::::::::::::    |::::|              /::::  /::::::::::::    |::::|
(:::::::: (ミ:  ・ ノ:::・/:::|             (:::::::: (ミ:  ・ ノ:::・/:::|
 \::::: \:::::::   (::: |               \::::: \:::::::   (::: |
 /:::\::::: \:::    ヽ|               /:::\::::: \:::    ヽ|
/::::   \::::: \::: ヽ )             /::::   \::::: \::: ヽ )
|:::      \::   ̄ ̄⊇)__  〜      |:::      \::   ̄ ̄⊇)__  〜
|:::::::      \;;;;;;;;;;;(__(;;;・)  〜 モワー |:::::::      \;;;;;;;;;;;(__(;;;・)  〜 モワー
\::::::::::   ミ(;;; );; )       〜      \::::::::::   ξ(;;; );; )      〜
  \::::::::::::    ) )                \::::::::::::    ) )
    ):::::   //                  ):::::   //
   /::::::::: //                   /::::::::: //
 /:::::  (_(_                  /:::::  (_(_
394nobodyさん:04/01/15 12:32 ID:y+hUeXhG
      彡川川川三三三ミ〜 プゥ〜ン
      川|川/ 臭\|〜  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
     ‖|‖ ◎---◎ |〜 ∠   ! はあっ はああっ
     川川‖ /// 3///ヽ〜 |   かごたんとPerl命!!
     川川    ∴)д(∴)〜 \______________
     川川       〜 /〜 
    川川川‖    〜 /川〜 ピュッピュッ
    / 川川    _/ ;|\〜      ρ 
   /    /        ;| |   ρ 
  (     (;;  ・     ・;)..|ρ 
   \    \    亠 ρ);;|  
   /: \   \   C)) ;) |
  /:::   \   ̄つ/ / | /            
 /:::      \  (__/ / _;/          
 (::::       ;;\__//  / ズリズリ〜 
 \:::       (;;;)⊂  /\.                          
   \       ヽ---/  \    
           モソモソ彡
395nobodyさん:04/01/15 12:32 ID:y+hUeXhG
おまえらみんな雑魚!!Perlこそが神!!

__________
|| // //         |
||    / ̄ ̄ ̄ ̄\ . |    / ̄ ̄ ̄ ̄\
||   (  人____) |   (          )
||     |ミ/  ー◎-◎-)|   (ヽミ        |   
||    (6    ゜(_ _) )|.  ( 6)        |
||  __| ∴ ノ  3  )|  (∴ \____ノ_
|| (_/.\_____ノ |   >--(っ___□__)
|| / (   ))    ))ヽ|  (  ))     |三| ヾ
. ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄   |  ||========[]===|)
                    |_||  | ̄ ̄ ̄ ̄ ̄|
                  (_)\|三三三三三|
                   (:::::::::::::::::::::y:::::::::ノ)\
                    |:::::::::::::::::::::|:::::::::|   |
396nobodyさん:04/01/15 12:32 ID:y+hUeXhG
   〜∞
          彡川川川三三三ミ〜
      プーン  川|川\  /|〜
          ‖|‖ ◎---◎|〜
          川川‖    3  ヽ〜  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
          川川   ∴)〆(∴)〜 < Perl以外はみんな死ね!!
          川川      〜 /〜 |  どんなにでかい絵はられても
          川川‖    〜 /‖〜  \__書きこんでやるぜ!
         川川川川   (⌒)川‖〜 ヴィシッ!
        //::::::::|-、 ,-/::::::ノ ~.レ-r┐
       / /:::::::::::|  /:::::ノ__ | .| ト、
       | /:::::::::::::::| 〈 ̄   `-Lλ_レ′

397nobodyさん:04/01/15 12:37 ID:y+hUeXhG
**********************--死のレス--************************
    l;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;| i
  \、|;;;;;;;;;;;;;;;;;;;;;;;;;M、;;;;;;;;;;;;;;;;;;;;;;;;;;ハ;;;;;;;;;;;;;;;;;;;;レ,.ィ´
- 、、,_」;;;;;;;;;;;;;;;;;;;;;;;;/  N、;;;;;;;;;;;;;;;;;/ ヽ;;;;;;;;;;;;;;;;;;;;;/   
   ヽ;;;;;;;;;;;;;;;;;;;;;N      ヽ;;;;;;;;;/   l;;;;;;;;;;;;;;;;;/    
  _」;;;;;;;;;;;;;;;;;ト!       ∨∨     |;;;;;;;;;;;;;;7   
 ̄`ヽ;;;;;;;;;;;;;;;;;;;;ト、    ‐ 、        `i;;;;;;;;;/
  _>;;;;;;;;;;;;;;;;Nヽv- ‐ ミ:、__   _,,ィァ¬、vj!;;;;;/
ヽ、`ヽ;;/rク7;;;ト、ミi{ {:::〉 l}>-z=i i{ 〈:::} }/ Vニ,ヽ   ,_,ィ=-、 __,rー 、
 ';'、   { !、レハ、! ヾミ=−ジ~´   `ニ=‐'" ,}K //  //_, /,ィフ;;;;;/⌒ヽ
\};;;ヽ、>、 − i ヽ、     /゙ '^!   、、 ./ノ-'/  /;;{'´ _,/;∠ノ;;;;;∠,____
;;;;;;;;;;;;;;;;;;;;;;;` ̄| }、  / ___ __ l ノl|'II゙_,ノ-';;;;ノ'´;;;;;;/;;;;;;;;;;_;;、-‐<´
;;;;;;;;;;;;;;;;;;;;;;;;;;/| ヾミーム三三三三三ミニジノB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;'ー'´;;< ̄`
;;;;;;;;;;;;;;;r‐<|!ヽ,l  `ヾミ{从儿从儿从州' /Y^^i;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;ナ' ノ  `ト、  `'ミ三三三三三ツ ハ ヽへ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;Iニコ    / ! |ヽ、, ` ̄´  ` ̄´ /!    Z;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;<,    /{  | i、ヾ冖''´   `ア´ i  } IニI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;匕     ヽ〉 l | ヽ \___/   l  ′ _,}_;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
これは死神のレスです。このレスを見た人は三日以内に死にます。
死因は全て心臓麻痺です。
信じるも信じないも自分しだいですが、警告はしておきます。
398nobodyさん:04/01/15 12:43 ID:y+hUeXhG
             ζ
         / ̄ ̄ ̄ ̄\       / ̄ ̄ ̄ ̄ ̄ ̄ ̄
       /         |    < カツオ、こづかいじゃ。
       | ⌒  ⌒   /|      \_______
       | (・)  (・)   |||||||
       | ⊂⌒◯-----∂)___   ___
       | ||||||||_     /     ゙Y"     \
         \ヽ_/ \/              \
         \    /                 \
          / ̄ ̄ ̄ ̄)        *      ( ̄ ̄ ̄ ̄)
         |    ─<         |\      >─   (
         |      )     /  (|ミ;\    (      )
         ヽ    ̄ ̄)    /(___人|,iミ'=;\  (  ̄ ̄   )
         /" ̄ ̄ ̄ ̄   /    《v厂リiy\  ̄ ̄ ̄ ̄\
         /        /        ゙|,/'' v:,,、.¨)z,_       \
        /       /         ミ/ .-─ .゙》z、      \
        /      /           〔」″ノ‐ 、u ¨\      )
       (      /             ゙|, ..冫 .rー    ̄\_    |
        |      〔              ミ./′   ..r-ー __,,ア┐  |
        |      |              {. .,,,,   .′  .´′ .¨\|
        |       |              ∨   ノ冖′ =vvvvvv¨\
        |     /               ミ.   ,i'           .゙\_
        |     /                .{.  ノ  ,r¬″       .¨\
        |     /                 ゙|, |  ノ      ー'''''''''''  .ーミz
399nobodyさん:04/01/15 12:43 ID:y+hUeXhG
Perlオタクは死ね死ね死ね死ね死ね死ね
         し!     _  -── ‐-   、  , -─-、 -‐─_ノ
  ア ギ    // ̄> ´  ̄    ̄  `ヽ  Y  ,  ´     ).  ア ギ
  ア ャ   L_ /                /        ヽ   ア ャ
  ア ア     / '                '           i ア ア
  ア ア    /                 /           く  ア ア
  ア ア   l           ,ィ/!    /    /l/!,l     /厶, !! ア
  ア ア    i   ,.lrH‐|'|     /‐!-Lハ_  l    /-!'|/l   /`'メ、_iヽ
  ア ア   l  | |_|_|_|/|    / /__!__ |/!トi   i/-- 、 レ!/   / ,-- レ、⌒Y⌒ヽ
  ア ア    _ゝ|/'/⌒ヽ ヽト、|/ '/ ̄`ヾ 、ヽト、N'/⌒ヾ (●)  ,イ ̄`ヾ,ノ!
  ア ア  「  l (●)(●)    (●) ′ | | |(●)L!  (●)(●)  リ
    ア   ヽ  | ヽ__(●) (●)、ヽ シ(●)! ! |ヽ_、ソ, (●)(●)(●)_ノ _ノ
-┐    ,√   ! (●)(●)(●)(●)   リ l   !  ̄ (●)(●)  ̄   7/
  レ'⌒ヽ/ !    | (●)〈(●)(●) _人__人ノ_ i(●)く(●)(●)(●)  //!
人_,、ノL_,iノ!  /! ヽ(●)r─‐- 、   「      L_ヽ   r─‐- 、(●)u(●)/
      /  / lト、 \ ヽ, -‐┤  ノ  ギ    了\  ヽ, -‐┤(●)(●)/
ア ギ  {  /   ヽ,ト、ヽ/!`hノ  )  ャ    |/! 「ヽ, `ー /)   _ ‐'
ア ャ   ヽ/   r-、‐' // / |-‐ く   ア     > / / `'//-‐、    /
ア ア    > /\\// / /ヽ_  !   ア    (  / / //  / `ァ-‐ '
ア ア   / /!   ヽ(●) レ'/ ノ   ア     >●)∠-‐  ̄ノヽ   /
       {  i l    !(●)●/  フ  ア    / (●)-‐ / ̄/〉 〈 \ /!

400nobodyさん:04/01/15 16:22 ID:???
>385
技術的には可能だけどPerlが対応してないだけ。
対応してないって言うかPerl自身は文字コードの判別をしない。
なのでモジュール等に頼る事になる。
401nobodyさん:04/01/15 19:26 ID:???
>>380
use ShiftJIS::String qw(kataZ2H strtr);

$str = 'テストテストtestてすとア0−9';

kataZ2H(\$str);
strtr(\$str, "0123456789−", "0123456789-");
print $str, "\n";

ShiftJIS::StringはCPANで。
Jcode.pmは複数の文字コードを扱うために
EUC-JPで内部保持(処理)してると思います。
402380:04/01/15 20:23 ID:???
有難うございます。
やはり技術的には可能なんですね。
ちょっと時間取れないんで、時間のあるときに色々教えていただいたことを
検索&施行してみます。
403nobodyさん:04/01/15 21:41 ID:???
どうしても Shift_JIS に固執するのなら、独自に変換テーブルを描いてやっちゃえばどうよ?
平仮名片仮名数字「だけ」ならそれほどの数でもないからさぁ。

案外バックトラッキングが出ない分(やり方による)、モジュール類をつかうよりか速くなっちゃう鴨よ。
404nobodyさん:04/01/15 23:17 ID:???
みんなのPerlソースのコメントアウトレイアウト見てみたいかも。
どんなコメントを書けば見やすいのか研究中。

とりあえず、

#==========#
# 処理名 #
#==========#

とか、

#>>>>> 処理名

とか書いてる。
一応それなりに目立つし、全部 # で書くとウザイから

###########
# 処理名 #
###########

こんなんとか。
見にくい。。。

みんなはどうだ?チェキラ
405nobodyさん:04/01/15 23:51 ID:???
> コードがsjisと解っているときは、きちんと半角と全角の区別が出来るということではないのでしょうか。
なので hidden で判別できる程度の全角文字を裏で埋め込んでおいて、
フォームに入力された文字コードを判別したいときはそっちを利用するってのは?
406nobodyさん:04/01/16 00:14 ID:???
>>404
そういうスレから浮いた話題はこちらでどうぞ↓

【Perl上級者コーナーPart01】
http://pc2.2ch.net/test/read.cgi/php/1024741312/
407nobodyさん:04/01/16 03:30 ID:DCARFZ4G
http://pc2.2ch.net/test/read.cgi/php/1072896288/l50 にある
HTMLのフォームで、

<FORM action=../../../bbs.cgi method=post>
<INPUT type=submit value=書き込む name=submit>
名前: <INPUT size=19 name=FROM> E-mail<FONT size=1>
(省略可) </FONT>: <INPUT size=19 name=mail><BR>
<TEXTAREA name=MESSAGE rows=5 wrap=off cols=70></TEXTAREA>
<INPUT type=hidden value=php name=bbs>
<INPUT type=hidden value=1072896288 name=key>
<INPUT type=hidden value=1074191121 name=time></FORM>

というものがある場合、Perlプログラムから投稿する場合のプログラムをください。
408nobodyさん:04/01/16 03:32 ID:???
>>407
去年で売り切れました
409nobodyさん:04/01/16 03:39 ID:???
>>408 そんなこと言わずにください。
410 ◆ymwwFPCsCI :04/01/16 03:47 ID:neNRKodC
>>380
こうすればいいんでは?
#!/usr/local/bin/perl
use CGI ':all';
print header(-charset=>"sjis"),
start_html(-title=>"DQN"),
p("perlテスト"),
end_html;
これでできますよ。
411nobodyさん:04/01/16 08:16 ID:???
>410
charsetが無茶苦茶だな
412nobodyさん:04/01/16 09:32 ID:???
>>410
というかテメェー何の話してんだ?ずれてんだよ
413ヽ(´ー`)ノ:04/01/16 10:34 ID:???
>>403
× バックトラッキングが出ない
○ ラウンドトリップを必要としない

じゃないの?
……blog じゃないんだから(;´Д`)
414 :04/01/16 10:37 ID:???
むかしうちのビデオにトラッキングボタンてのがついてたんだけど、
今無いね。どこいったんだろう。
415nobodyさん:04/01/16 11:25 ID:DCARFZ4G
>>414
いまはオートトラッキングだからね

それより>>407答えてくれよ
416nobodyさん:04/01/16 12:59 ID:???
>>415
おい知障、ここは質問スレだ。
おまえの希望のプログラムを提供するスレじゃないんだよ。
その程度も分からん香具師は人の迷惑だから掲示板使うなよ。
417nobodyさん:04/01/16 13:44 ID:???
>>407
欲しいものはこれか?
http://pc2.2ch.net/test/read.cgi/software/1069659219/l50
Age2ch Part11
418nobodyさん:04/01/16 14:28 ID:???
初心者ですが質問させてください
Perlでキーワード検索作ったのですが検索単語を空白にすると
登録されている内容全てが表示されてしまいます
if($in{'mode'} eq ""){ &PrintPage; exit; }とやって、$in{'mode'}が
空白だったら最初のページを表示させようとしてもうまくいかず
内容全て表示されてしまいます。
よろしくおねがいします。
419nobodyさん:04/01/16 14:48 ID:???
>>418
PrintPage サブルーチンの中身を書かなきゃ話にならんだろうが。
420nobodyさん:04/01/16 15:16 ID:???
というかその程度だったら何をやっても話にならんだろうが。
421nobodyさん:04/01/16 15:34 ID:???
まず、そのスクリプトを知らない俺らが、サブルーチン名をだされても、
何をしているかわからない。これに気づかない。
次に、$in{'name'}=valueという形でフォームデータが格納されてるんだろうが、
どう考えても$in{mode}に検索ワードが入ってるとは思えない。おそらく$in{word}か。
最後に「初心者です」と最初に公言している。

>>420で書いたとおり、何をやっても話しにならない。
デフォで使ってください。
422418:04/01/16 15:38 ID:???
>419
PrintPageサブルーチンの中身です
sub PrintPage{
print <<END;
Content-type: text/html; charset=Shift_JIS

<HTML><BODY><CENTER>
キーワード検索<BR>
<FORM method=POST action="keyword.cgi">
<INPUT type=text name=word size=30>
<INPUT type=hidden name=mode value="search"><BR><BR>
<INPUT type=submit value="検索">
</FORM></CENTER></BODY></HTML>
END
}
423nobodyさん:04/01/16 15:54 ID:???
>>418
そいつぁな、
if($in{'mode'} eq "")
ここで、改行コードがあるために""にならんのじゃよ。
$in{'mode'}をchomp汁。
424418:04/01/16 16:17 ID:???
chomp $in{'mode'};
if($in{'mode'} eq ""){ &PrintPage; exit; }

chompやっても無理でした…
425(゚ぺ*):04/01/16 16:30 ID:???
$k{'ひらがな'} = "あいうえお<>かきくけこ";
@val = split(/<>/, $k{"ひらがな"});
print "<b>$val[0]</b>、<b>$val[1]</b>";

<b>あいうえお</b>、<b>かきくけこ</b>と表示したいのに
<b></b>、<b></b>としか表示されません。どうして??
426nobodyさん:04/01/16 17:07 ID:???
>>418
use Data::Dumper;
print Dumper($in{mode});
…の結果は?
どんな値が入ってるかどうか確認するのはデバッグの基本。

>>425
コピペして動かしたら、期待している通りの動作をした。
>>418 と同じように
use Data::Dumper;
print Dumper(\@var);
してみて、本当に値が入ってるかどうか確認してみ。

プログラムの勉強するんなら言語使用だけじゃなく、デバッグの仕方とか、ノウハウも
身に付けような。
427(゚ぺ*):04/01/16 17:12 ID:???
>>426
文法チェックもかけたし
Perlで実行もしたけどブラウザでやるとできないんです
428nobodyさん:04/01/16 17:58 ID:tmlrsYhW
偏差値重視の詰め込み教育がこういう "考える力の無い" 人たちを生んでるのかな?
ゆとり教育とやらは来年度から無くなるらしいけど、教育方法 戻してもこれじゃ意味無いね。
429nobodyさん:04/01/16 18:14 ID:???
>>418
おまえだけじゃないけどさ、



>>初心者ですが

はっきり言ってウザイ。
430nobodyさん:04/01/16 18:26 ID:???
>>429
じゃあここにこなくていいよ
431nobodyさん:04/01/16 18:32 ID:???
>>430
意味不明。
432nobodyさん:04/01/16 18:41 ID:???
「初心者です」「質問です」「お願いします」

そんなもんいらんから質問内容だけわかるように書け
433nobodyさん:04/01/16 18:48 ID:tmlrsYhW
>>418
デバッグの仕方ってわざわざ教えないと分からないのかな?
一つ一つの処理ずつ確認していけばおのずと答えは出るだろ?

ps.まあ、こういうバカが更正して賢くなると困るんだけどね。
  バカが多いほうが仕事も給与も増えるし。だからもうわざわざ注意しない^^
434nobodyさん:04/01/16 18:49 ID:???
>>432
だろ?
俺はそれを言いたいんだよ。
それなのに>>430みたく意味不明なレスをする香具師が・・・
435nobodyさん:04/01/16 19:39 ID:???
つまるところ回答者側からの要望は一つっス。

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

をちゃんと書いてくれと。
作ったスクリプトが動かない場合、2は必須。
436ヽ(´ー`)ノ:04/01/16 20:02 ID:???
>>427
> use Data::Dumper;
> print Dumper(\@var);
> してみて、本当に値が入ってるかどうか確認してみ。

>>435 に日本語読め、ってのも追加してくれ。
有益な解答しても、話聞いてくれんのじゃダメぽ。
437nobodyさん:04/01/16 20:16 ID:???
>>386
>$line = do_something_returns_sjis();
??
>$line =~ /0-9A-Za-z−/0-9A-Za-z-/;
$line =~ tr/0-9A-Za-z−/0-9A-Za-z-/;

>>413
>>403ってアルゴリズムの話だと思うけど、
blogってどういう意味?
438ヽ(´ー`)ノ:04/01/16 20:32 ID:???
>>437
トラックバックと読み間違えた……_| ̄|○
日本語できてないのは俺ぽ。
439nobodyさん:04/01/16 21:27 ID:???
もうね、何でもかんでも調べずに人に聞かないと出来ない香具師なんて放置しとけばいいんですよ。氏んだらいいんですよ。
440nobodyさん:04/01/16 21:28 ID:???
>>418
あのにぃ、chompだけじゃ\nしかトンないから、
$in{'mod'} =~ s/\r\n//;汁よろし。

441nobodyさん:04/01/16 21:36 ID:???
>440
それは激しく語弊があるな。
442nobodyさん:04/01/16 21:39 ID:???
もー滅茶苦茶。馬鹿はすっこんでろ
443nobodyさん:04/01/16 22:12 ID:???
>>434

>>だろ?
>>俺はそれを言いたいんだよ。
>>それなのに>>430みたく意味不明なレスをする香具師が・・・

だったら初めからそう言えばいいじゃん。>>429みたいな言い方も意味不明で混乱しやすい。
「はっきり言ってウザイ」じゃなくて、「"初心者ですが"って書かれるのがウザイ」とするべき。
444nobodyさん:04/01/16 22:41 ID:???
445nobodyさん:04/01/16 23:18 ID:???
一通り見て思ったのが、>>434=>>444が痛いってことかな
446444:04/01/17 00:11 ID:???
>>445
俺は>>434じゃねーよ
447nobodyさん:04/01/17 00:16 ID:???
サーバがunixで入力がDOS系なら>>440で正解
448nobodyさん:04/01/17 00:36 ID:???
あのさー、ルーチンの中で宣言と同時に代入してる値って
最初のコンパイル段階でセットされるよね?

sub test{
    my $set= 5;
}
449nobodyさん:04/01/17 01:42 ID:R0DKrVEo
ハッシュのリファレンスをデータベースに保存したいのですが、どうすれば良いのでしょう?
my(%foo);
my(@set) = (0) x 10;
$foo{"hoge"} = \@set;
pop(@{$foo{"hoge"}});#古いログインデータを消去
unshift(@{$foo{"hoge"}}, time);#今回のログインデータを入力
&DbmWrite(\%foo, "test");

sub DbmWrite {
my($data, $filename) = @_;
my(%writehash);
tie %writehash, AnyDBM_File, $ini'path.$filename, O_CREAT|O_RDWR, 0666;
%writehash = (%writehash, %$data);
untie %writehash;
return 1;
}

@setの参照先メモリが$foo{"hoge"}に保存されるかなぁと思ったら保存されず。
450nobodyさん:04/01/17 02:45 ID:???
>>448
されません。
451nobodyさん:04/01/17 02:48 ID:???
Perlでディレクトリの名前って変更できるのでしょうか?
renameはファイル名だけだし

mkdirでディレクトリ作成して、そこにopenで1個1個コピーして・・・
最後にrmtreeで元のディレクトリ削除っていうとんでもないやり方しか思い浮かばん

何かいい方法ってないですか?
あったらぜひ教えて欲しいです
452nobodyさん:04/01/17 04:14 ID:???
>>451
renameはディレクトリにも使えますよ。
453nobodyさん:04/01/17 05:21 ID:qcF/S2Pi
今度来たら殺すよ、初心者は二度と来るなよ!!うざい!!邪魔!!消えろ!!
           ______
         /::::::::::::::::::::::::::::::::::::\
       /::::::::::::::::::::::::::::::::::::::::::::::::::\
      /:::::::::::::::::::::::::::::::::::::::::::::人:::::::::::ヽ
     /:::::::::|:::::::::::::::::::::::::::::::::/  ヽ、:::::::ヽ
     |:::::::::::@ヽ-------‐‐'′    ヽ:::::::::|
    |::::::::::/                 |:::::::::|
    |:::::::::/ ̄ ̄ ̄ ̄ヽ===/ ̄ ̄ ̄ ̄ヽ|:::::::::|
   |::::::=ロ  -=・=-  |,  |  -=・=-  ロ=::::::|
    |::::::::/ヽ      /ノ  ヽ      /ヽ:::::::|
   |:::::/  `─── /   ` ───  丶:::|
   |:::ノ        (●_●)        |::|
   |::|           l l           |::|
   |::|       __-- ̄`´ ̄--__       |::|
   |::|        -二二二二-        |::|
   |::::\                   /::::|
   \::::::\     _- ̄ ̄ ̄-_     /::::::/
     |Ξ|~ \             / ~|Ξ|
    /::::::ヽ/|\_______/|\ /:::::::ヽ
    |::::::::::|  \         /  |::::::::::::|
   /|:::::::::::|    \      /    |::::::::::::|

454nobodyさん:04/01/17 05:21 ID:qcF/S2Pi
Perlオタクをなめるなよ!!苦情があるなら、ここに書きこんでみろ!!チキンども!!
                                    ___
        彡川三三三ミ                   /     \
       川川 ::::::/ \ヽ                 /   / \ \
      川川::::::::ー◎-◎-)                 |    (゚) (゚)   |
      川(6|::::::::  ( 。。))                |     )●(  | 
    ._川川;;;::∴ ノ  ▽ ノ              __\     ▽   ノ
  /;;;:::::::::::::::\_;;;;;;;;;;;∪ノ            /;;;:::::::::::::\__∪ /
 /::::  /::::::::::::    |::::|              /::::  /::::::::::::    |::::|
(:::::::: (ミ:  ・ ノ:::・/:::|             (:::::::: (ミ:  ・ ノ:::・/:::|
 \::::: \:::::::   (::: |               \::::: \:::::::   (::: |
 /:::\::::: \:::    ヽ|               /:::\::::: \:::    ヽ|
/::::   \::::: \::: ヽ )             /::::   \::::: \::: ヽ )
|:::      \::   ̄ ̄⊇)__  〜      |:::      \::   ̄ ̄⊇)__  〜
|:::::::      \;;;;;;;;;;;(__(;;;・)  〜 モワー |:::::::      \;;;;;;;;;;;(__(;;;・)  〜 モワー
\::::::::::   ミ(;;; );; )       〜      \::::::::::   ξ(;;; );; )      〜
  \::::::::::::    ) )                \::::::::::::    ) )
    ):::::   //                  ):::::   //
   /::::::::: //                   /::::::::: //
 /:::::  (_(_                  /:::::  (_(_

455nobodyさん:04/01/17 05:22 ID:qcF/S2Pi
      彡川川川三三三ミ〜 プゥ〜ン
      川|川/ 臭\|〜  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
     ‖|‖ ◎---◎ |〜 ∠   ! はあっ はああっ
     川川‖ /// 3///ヽ〜 |   かごたんとPerl命!!
     川川    ∴)д(∴)〜 \______________
     川川       〜 /〜 
    川川川‖    〜 /川〜 ピュッピュッ
    / 川川    _/ ;|\〜      ρ 
   /    /        ;| |   ρ 
  (     (;;  ・     ・;)..|ρ 
   \    \    亠 ρ);;|  
   /: \   \   C)) ;) |
  /:::   \   ̄つ/ / | /            
 /:::      \  (__/ / _;/          
 (::::       ;;\__//  / ズリズリ〜 
 \:::       (;;;)⊂  /\.                          
   \       ヽ---/  \    
           モソモソ彡

456nobodyさん:04/01/17 05:23 ID:qcF/S2Pi
俺とPerlこそが神!!パンチ5分の2なんてぜってー教えないもん

__________
|| // //         |
||    / ̄ ̄ ̄ ̄\ . |    / ̄ ̄ ̄ ̄\
||   (  人____) |   (          )
||     |ミ/  ー◎-◎-)|   (ヽミ        |   
||    (6    ゜(_ _) )|.  ( 6)        |
||  __| ∴ ノ  3  )|  (∴ \____ノ_
|| (_/.\_____ノ |   >--(っ___□__)
|| / (   ))    ))ヽ|  (  ))     |三| ヾ
. ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄   |  ||========[]===|)
                    |_||  | ̄ ̄ ̄ ̄ ̄|
                  (_)\|三三三三三|
                   (:::::::::::::::::::::y:::::::::ノ)\
                    |:::::::::::::::::::::|:::::::::|   |

457nobodyさん:04/01/17 05:23 ID:qcF/S2Pi
   〜∞
          彡川川川三三三ミ〜
      プーン  川|川\  /|〜
          ‖|‖ ◎---◎|〜
          川川‖    3  ヽ〜  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
          川川   ∴)〆(∴)〜 < Perl使わない奴はみんな死ね!!
          川川      〜 /〜 |  どんなにでかい絵はられても
          川川‖    〜 /‖〜  \_迷惑でも、書きこんでやるぜ!!
         川川川川   (⌒)川‖〜 ヴィシッ!
        //::::::::|-、 ,-/::::::ノ ~.レ-r┐
       / /:::::::::::|  /:::::ノ__ | .| ト、
       | /:::::::::::::::| 〈 ̄   `-Lλ_レ′

458nobodyさん:04/01/17 05:24 ID:qcF/S2Pi
**********************--死のレス--************************
これは死神のレスです。このレスを見た人は三日以内に死にます。
死因は全て心臓麻痺です。
信じるも信じないも自分しだいですが、警告はしておきます。
    l;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;| i
  \、|;;;;;;;;;;;;;;;;;;;;;;;;;M、;;;;;;;;;;;;;;;;;;;;;;;;;;ハ;;;;;;;;;;;;;;;;;;;;レ,.ィ´
- 、、,_」;;;;;;;;;;;;;;;;;;;;;;;;/  N、;;;;;;;;;;;;;;;;;/ ヽ;;;;;;;;;;;;;;;;;;;;;/   
   ヽ;;;;;;;;;;;;;;;;;;;;;N      ヽ;;;;;;;;;/   l;;;;;;;;;;;;;;;;;/    
  _」;;;;;;;;;;;;;;;;;ト!       ∨∨     |;;;;;;;;;;;;;;7   
 ̄`ヽ;;;;;;;;;;;;;;;;;;;;ト、    ‐ 、        `i;;;;;;;;;/
  _>;;;;;;;;;;;;;;;;Nヽv- ‐ ミ:、__   _,,ィァ¬、vj!;;;;;/
ヽ、`ヽ;;/rク7;;;ト、ミi{ {:::〉 l}>-z=i i{ 〈:::} }/ Vニ,ヽ   ,_,ィ=-、 __,rー 、
 ';'、   { !、レハ、! ヾミ=−ジ~´   `ニ=‐'" ,}K //  //_, /,ィフ;;;;;/⌒ヽ
\};;;ヽ、>、 − i ヽ、     /゙ '^!   、、 ./ノ-'/  /;;{'´ _,/;∠ノ;;;;;∠,____
;;;;;;;;;;;;;;;;;;;;;;;` ̄| }、  / ___ __ l ノl|'II゙_,ノ-';;;;ノ'´;;;;;;/;;;;;;;;;;_;;、-‐<´
;;;;;;;;;;;;;;;;;;;;;;;;;;/| ヾミーム三三三三三ミニジノB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;'ー'´;;< ̄`
;;;;;;;;;;;;;;;r‐<|!ヽ,l  `ヾミ{从儿从儿从州' /Y^^i;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;ナ' ノ  `ト、  `'ミ三三三三三ツ ハ ヽへ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;Iニコ    / ! |ヽ、, ` ̄´  ` ̄´ /!    Z;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;<,    /{  | i、ヾ冖''´   `ア´ i  } IニI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;匕     ヽ〉 l | ヽ \___/   l  ′ _,}_;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
459nobodyさん:04/01/17 05:25 ID:qcF/S2Pi
             ζ
         / ̄ ̄ ̄ ̄\       / ̄ ̄ ̄ ̄ ̄ ̄ ̄
       /         |    < 糞スレ♪
       | ⌒  ⌒   /|      \_______
       | (・)  (・)   |||||||
       | ⊂⌒◯-----∂)___   ___
       | ||||||||_     /     ゙Y"     \
         \ヽ_/ \/              \
         \    /                 \
          / ̄ ̄ ̄ ̄)        *      ( ̄ ̄ ̄ ̄)
         |    ─<         |\      >─   (
         |      )     /  (|ミ;\    (      )
         ヽ    ̄ ̄)    /(___人|,iミ'=;\  (  ̄ ̄   )
         /" ̄ ̄ ̄ ̄   /    《v厂リiy\  ̄ ̄ ̄ ̄\
         /        /        ゙|,/'' v:,,、.¨)z,_       \
        /       /         ミ/ .-─ .゙》z、      \
        /      /           〔」″ノ‐ 、u ¨\      )
       (      /             ゙|, ..冫 .rー    ̄\_    |
        |      〔              ミ./′   ..r-ー __,,ア┐  |
        |      |              {. .,,,,   .′  .´′ .¨\|
        |       |              ∨   ノ冖′ =vvvvvv¨\
        |     /               ミ.   ,i'           .゙\_
        |     /                .{.  ノ  ,r¬″       .¨\
        |     /                 ゙|, |  ノ      ー'''''''''''  .ーミz
460nobodyさん:04/01/17 05:26 ID:qcF/S2Pi
Perlオタクは死ね死ね死ね死ね死ね死ね
         し!     _  -── ‐-   、  , -─-、 -‐─_ノ
  ア ギ    // ̄> ´  ̄    ̄  `ヽ  Y  ,  ´     ).  ア ギ
  ア ャ   L_ /                /        ヽ   ア ャ
  ア ア     / '                '           i ア ア
  ア ア    /                 /           く  ア ア
  ア ア   l           ,ィ/!    /    /l/!,l     /厶, !! ア
  ア ア    i   ,.lrH‐|'|     /‐!-Lハ_  l    /-!'|/l   /`'メ、_iヽ
  ア ア   l  | |_|_|_|/|    / /__!__ |/!トi   i/-- 、 レ!/   / ,-- レ、⌒Y⌒ヽ
  ア ア    _ゝ|/'/⌒ヽ ヽト、|/ '/ ̄`ヾ 、ヽト、N'/⌒ヾ (●)  ,イ ̄`ヾ,ノ!
  ア ア  「  l (●)(●)    (●) ′ | | |(●)L!  (●)(●)  リ
    ア   ヽ  | ヽ__(●) (●)、ヽ シ(●)! ! |ヽ_、ソ, (●)(●)(●)_ノ _ノ
-┐    ,√   ! (●)(●)(●)(●)   リ l   !  ̄ (●)(●)  ̄   7/
  レ'⌒ヽ/ !    | (●)〈(●)(●) _人__人ノ_ i(●)く(●)(●)(●)  //!
人_,、ノL_,iノ!  /! ヽ(●)r─‐- 、   「      L_ヽ   r─‐- 、(●)u(●)/
      /  / lト、 \ ヽ, -‐┤  ノ  ギ    了\  ヽ, -‐┤(●)(●)/
ア ギ  {  /   ヽ,ト、ヽ/!`hノ  )  ャ    |/! 「ヽ, `ー /)   _ ‐'
ア ャ   ヽ/   r-、‐' // / |-‐ く   ア     > / / `'//-‐、    /
ア ア    > /\\// / /ヽ_  !   ア    (  / / //  / `ァ-‐ '
ア ア   / /!   ヽ(●) レ'/ ノ   ア     >●)∠-‐  ̄ノヽ   /
       {  i l    !(●)●/  フ  ア    / (●)-‐ / ̄/〉 〈 \ /!

461nobodyさん:04/01/17 09:56 ID:4l/yLaSm
変数の値を掛け算し、その結果の小数点以下を切り捨てる処理をしたい。
例えば

my $v = 123;
$v = $v * 0.1;
$v = int($v);
print $v;

としたときに、12 と出力させたい。これを限りなくスマートに書きたい。

my $v = 123;
int($v *= 0.1);
print $v;

では12.3と出てしまった。
どうすればいいのか教えてくださ。
462nobodyさん:04/01/17 10:13 ID:???
my $v = 123;
print int $v * 0.1;
463nobodyさん:04/01/17 10:38 ID:???
(´-`).。oO(試しに AA 群を Rock54 に入れてみるか。)
464nobodyさん:04/01/17 10:51 ID:???
粘着荒らしが書き込む度に、俺の navi2ch-spamfilter が鍛えられていく。
465nobodyさん:04/01/17 11:23 ID:???
>>464
それウプきぼんぬ。
466nobodyさん:04/01/17 11:24 ID:???
2ヶ月ぶりぐらいにこのスレ見たけど
飽きもせずに、まだ居たんだ…(ゲラ
467nobodyさん:04/01/17 13:35 ID:???
>466
こなくていいよ(^^
468nobodyさん:04/01/17 13:38 ID:yYXfpx2m
>461

use POSIX;
my $v = 123;
print POSIX::floor( $v * 0.1 );
469nobodyさん:04/01/17 14:00 ID:???
モジュール使うほどのことか?
470nobodyさん:04/01/17 14:17 ID:yYXfpx2m
みんなで 100 通りくらい方法を書くのが、
perl 流かと。(実はその perl 流があまり好きじゃなかったりするが)
int 出たし。>462
471nobodyさん:04/01/17 14:36 ID:qcF/S2Pi
>>466
そうなんすよ
すごいだろ(w
まだ、教えてくれねーんだよ、パンチ5分の2
早くおしえろよ!
472nobodyさん:04/01/17 14:37 ID:qcF/S2Pi
今度来たら殺すよ、初心者は二度と来るなよ!!うざい!!邪魔!!消えろ!!
           ______
         /::::::::::::::::::::::::::::::::::::\
       /::::::::::::::::::::::::::::::::::::::::::::::::::\
      /:::::::::::::::::::::::::::::::::::::::::::::人:::::::::::ヽ
     /:::::::::|:::::::::::::::::::::::::::::::::/  ヽ、:::::::ヽ
     |:::::::::::@ヽ-------‐‐'′    ヽ:::::::::|
    |::::::::::/                 |:::::::::|
    |:::::::::/ ̄ ̄ ̄ ̄ヽ===/ ̄ ̄ ̄ ̄ヽ|:::::::::|
   |::::::=ロ  -=・=-  |,  |  -=・=-  ロ=::::::|
    |::::::::/ヽ      /ノ  ヽ      /ヽ:::::::|
   |:::::/  `─── /   ` ───  丶:::|
   |:::ノ        (●_●)        |::|
   |::|           l l           |::|
   |::|       __-- ̄`´ ̄--__       |::|
   |::|        -二二二二-        |::|
   |::::\                   /::::|
   \::::::\     _- ̄ ̄ ̄-_     /::::::/
     |Ξ|~ \             / ~|Ξ|
    /::::::ヽ/|\_______/|\ /:::::::ヽ
    |::::::::::|  \         /  |::::::::::::|
   /|:::::::::::|    \      /    |::::::::::::|
473nobodyさん:04/01/17 14:37 ID:qcF/S2Pi
Perlオタクをなめるなよ!!苦情があるなら、ここに書きこんでみろ!!チキンども!!
                                    ___
        彡川三三三ミ                   /     \
       川川 ::::::/ \ヽ                 /   / \ \
      川川::::::::ー◎-◎-)                 |    (゚) (゚)   |
      川(6|::::::::  ( 。。))                |     )●(  | 
    ._川川;;;::∴ ノ  ▽ ノ              __\     ▽   ノ
  /;;;:::::::::::::::\_;;;;;;;;;;;∪ノ            /;;;:::::::::::::\__∪ /
 /::::  /::::::::::::    |::::|              /::::  /::::::::::::    |::::|
(:::::::: (ミ:  ・ ノ:::・/:::|             (:::::::: (ミ:  ・ ノ:::・/:::|
 \::::: \:::::::   (::: |               \::::: \:::::::   (::: |
 /:::\::::: \:::    ヽ|               /:::\::::: \:::    ヽ|
/::::   \::::: \::: ヽ )             /::::   \::::: \::: ヽ )
|:::      \::   ̄ ̄⊇)__  〜      |:::      \::   ̄ ̄⊇)__  〜
|:::::::      \;;;;;;;;;;;(__(;;;・)  〜 モワー |:::::::      \;;;;;;;;;;;(__(;;;・)  〜 モワー
\::::::::::   ミ(;;; );; )       〜      \::::::::::   ξ(;;; );; )      〜
  \::::::::::::    ) )                \::::::::::::    ) )
    ):::::   //                  ):::::   //
   /::::::::: //                   /::::::::: //
 /:::::  (_(_                  /:::::  (_(_

474nobodyさん:04/01/17 14:39 ID:???
ところでちょっと聞いて欲しいんだが、
HTML::Template をこんな感じで使ってた訳ですよ。

---------------------------------------------------------
use IO::Handle;
use HTML::Template;# v2.6

my $tmpl = HTML::Template->new( scalarref => \<<__FOO__ );
<TMPL_VAR NAME="foo">
__FOO__

$tmpl->param( foo => '100 de gowasu' );

my $io = IO::Handle->new;
$io->fdopen(fileno(*STDOUT), 'w');
print $tmpl->output( print_to => $io );
---------------------------------------------------------

で、出力されないんだこれが。
もちろん、print_to => *STDOUT にすれば出力される。

?? と思いつつ HTML::Template の中身を見た訳。
475nobodyさん:04/01/17 14:41 ID:???
474 続き
そしたら、
---------------------------------------------------------
tie $result, 'HTML::Template::PRINTSCALAR', $args{print_to}
if defined $args{print_to} and not tied $args{print_to};
---------------------------------------------------------

こんなのがあって、そんでもって PRINTSCALAR の定義は

---------------------------------------------------------
package HTML::Template::PRINTSCALAR;
use strict;

sub TIESCALAR { bless \$_[1], $_[0]; }
sub FETCH { }
sub STORE {
my $self = shift;
local *FH = $$self;
print FH @_;
}
---------------------------------------------------------
こんなのだった。

で、出力は
$result .= $value;
の様に行われていた。
476nobodyさん:04/01/17 14:42 ID:???
475 続き
ここまで読んで段々ムカツイテ来た。

最初の問題は
$tmpl->output( print_to => $$io );
ってすりゃ良いってことで一応解決はしたが、

HTML::Template 作った野郎はなんで
$tmpl->output( print_to => $io )
で動くようにしなかったんだ。
みんな、最初っから
$tmpl->output( print_to => $$io )
って書くと思ってんのか。タコタタコタココタコタコ

大体この HTML::Template::PRINTSCALAR が気に食わない。
$result .= $value;
ってしたいだけで、こんなん作るんじゃネェ。タコタタコタココタコタコ
素で IO::Handle を受け取れるように作っとけや。ヴォケェェ

と思った訳だが、実際どうなんだ。これは普通なのか?
これでムカツクなんてボクチャンマダマダなんでちゅか?

じつは tie もあまり好きじゃないとか言ったら、みんな失笑ですか?
$ @ % が諸悪の根源とか言ったら、顔写真公開ですか?
だいたい俺は perl 好きなんですか?

# 後は適当にイジレ
477nobodyさん:04/01/17 14:51 ID:???
独り言は夢・独り言板でおながいします。
478nobodyさん:04/01/17 15:01 ID:???
>477
簡単に要点を書くとこうなる。
perl のデータ構造を一緒にオナリグチリたい。
偉い人に perl を愚痴って解説してほしい。
偉い人に馬鹿にされたい。構って欲しい。
イジ(メ)ラレタイ
479nobodyさん:04/01/17 15:07 ID:???
パンチ5分の2君がかまってくれるよ。
480nobodyさん:04/01/17 15:17 ID:???
>474
そもそも
print $tmpl->output( print_to => $io );
これは、
$tmpl->output( print_to => $io );
の typo でいいのか。多分そうとしか思えんが。
481nobodyさん:04/01/17 18:08 ID:4l/yLaSm
461だけど
POSIXははじめて知った。
そんなのあったんだ。
482449:04/01/17 18:23 ID:R0DKrVEo
すんません、どうしてもわかんないんですけど
483nobodyさん:04/01/17 20:24 ID:???
>>449
use Data::Serializer;

>>474
$io->print($tmpl->output);
で、いいんじゃない?
484468:04/01/17 20:26 ID:???
>481

ずぼらに文字列を整数にする時は int を使ってる。
真面目に小数の切り上げ,切り下げをやるときは
POSIX::ceil($v); POSIX::floor($v);
を使うように意識してる。
485468:04/01/17 20:50 ID:???
>483
perldoc HTML::Template\n
/You may optionally
....
----------------------------------------------------------------------
You may optionally supply a filehandle to print to automatically as the
template is generated. This may improve performance and lower memory
consumption. Example:

$template->output(print_to => *STDOUT);

The return value is undefined when using the "print_to" option.
----------------------------------------------------------------------

本来 stream class みたいなのがあって欲しくて、!defined($args{print_to})
だったらその stream は、chararray output stream みたいなやつで、
そしたら return $result.to_s みたいな感じの実装が美しいかと。
defined($args{print_to}) だったら戻り無しみたいな。

現状だと、メソッド名を output じゃなくて content とかにしたくなってまう。
特に print_to オプションがなかったら。
486nobodyさん:04/01/17 21:04 ID:???
>449
use MLDBM;
とか。
無けりゃ入れろ。入れられなきゃ 483。
それもダメなら自前で頑張れ。
あと、DBM はいろいろあるから暇なら適当に幾つかいじってみれ。
QDBM とかの試用 report しる。
487nobodyさん:04/01/17 21:15 ID:???
URLエンコードする場合
半角スペースは必ず「+」に変換しなきゃならないのでしょうか?
しないで良い場合、したほうが良い場合それぞれあったら教えて下さい。
488nobodyさん:04/01/17 21:19 ID:4l/yLaSm
宮崎県西諸県郡須木村

西諸県郡須木村
にするために

s/.*県//;

としたら
郡須木村
になってしまいました。後ろの「県」にマッチしてるようです。
これを、前の「県」にマッチさせて
西諸県郡須木村
とするにはどうすればいいでしょう!?
おねがいします!
489nobodyさん:04/01/17 21:35 ID:???
>>488
「Perl 正規表現 最短マッチ」で検索
490nobodyさん:04/01/17 21:43 ID:4l/yLaSm
そうか、最短マッチっていうのか!!!!
うまくできたぜ!
ありがとうな!
491nobodyさん:04/01/17 21:52 ID:???
kihondesuyone...
492nobodyさん:04/01/17 21:54 ID:???
>>485
すまそ、良く分かりません。。
ただ、オプションで送り先を変えるのが、いやな感じがします。

# JavaのxxxReaderみたいなのかな?

>>487
ttp://www.asahi-net.or.jp/~sd5a-ucd/rec-html401j/interact/forms.html#h-17.13.4
493nobodyさん:04/01/17 22:07 ID:???
494493:04/01/17 22:14 ID:???
ごめん続き
オプションで perl 版 writer を貰ったらそいつに write().
貰わなかったら perl 版 CharArrayWriter を生成してそいつに write().
でオプション無しの場合は、最後に return writer.toString().
みたいにやった方が、output ってメソッドの名前に相応しいだろうと.
495nobodyさん:04/01/17 22:47 ID:???
>>493
ありゃ、ボケかましました…。

>>494
うーん、好みが分かれそうですね。
便利だとは思いますが、perlっぽくないような気もします。
# って個人的な趣味ですねw。
496487:04/01/17 23:06 ID:???
>>492
レスどもありがとうございます。
今悩んでいるのはあまり良く無い例かもしれませんがこういった例で、
たとえば「あおい__ __うみ.html」というファイルにリンクを張りたいタグを生成する場合は
http://210.224.163.180/%82%A0%82%A8%82%A2__+__%82%A4%82%DD.html
では駄目で、
http://210.224.163.180/%82%A0%82%A8%82%A2__%20__%82%A4%82%DD.html
ではOKですが、こういった場合は

$str="あおい うみ";
# $str =~ tr/ /+/; #変換しない
$str =~ s/([^\w ])/'%' . unpack('H2', $1)/eg;
$str = "<a href=$str>link</a>";

とする訳ですよね?
497nobodyさん:04/01/18 00:01 ID:+WjH7Bzr
             ζ
         / ̄ ̄ ̄ ̄\       / ̄ ̄ ̄ ̄ ̄ ̄ ̄
       /         |    < 糞スレ♪
       | ⌒  ⌒   /|      \_______
       | (・)  (・)   |||||||
       | ⊂⌒◯-----∂)___   ___
       | ||||||||_     /     ゙Y"     \
         \ヽ_/ \/              \
         \    /                 \
          / ̄ ̄ ̄ ̄)        *      ( ̄ ̄ ̄ ̄)
         |    ─<         |\      >─   (
         |      )     /  (|ミ;\    (      )
         ヽ    ̄ ̄)    /(___人|,iミ'=;\  (  ̄ ̄   )
         /" ̄ ̄ ̄ ̄   /    《v厂リiy\  ̄ ̄ ̄ ̄\
         /        /        ゙|,/'' v:,,、.¨)z,_       \
        /       /         ミ/ .-─ .゙》z、      \
        /      /           〔」″ノ‐ 、u ¨\      )
       (      /             ゙|, ..冫 .rー    ̄\_    |
        |      〔              ミ./′   ..r-ー __,,ア┐  |
        |      |              {. .,,,,   .′  .´′ .¨\|
        |       |              ∨   ノ冖′ =vvvvvv¨\
        |     /               ミ.   ,i'           .゙\_
        |     /                .{.  ノ  ,r¬″       .¨\
        |     /                 ゙|, |  ノ      ー'''''''''''  .ーミz
498nobodyさん:04/01/18 00:23 ID:???
>>496
ごめん、ボケてました。
%20でエスケープしてください。

# フォームと勘違いしました。
499498:04/01/18 00:41 ID:???
QUERY_STRING部分はスペースを+で変換。
それ以外は%20でOKです。
500あつしfx:04/01/18 03:10 ID:???
Perlでモジュールを使いたいのですが、
インクルードパス(@INC)を設定するモジュールがどこにあるか知りませんか?
前にどこかのページで見かけた気がするのですが、

501nobodyさん:04/01/18 03:19 ID:???
>>500
http://perldoc.com/perl5.8.0/lib/lib.html とか
BEGIN { unshift @INC, '/your/lib/path' } とか
502nobodyさん:04/01/18 15:46 ID:OtEt/VLD
use lib qw{/path};のこときいてるんちゃうの?
503nobodyさん:04/01/18 22:58 ID:???
>>502
言いたいことがわからん。。。

           うち、もうビチビチやねん!
504nobodyさん:04/01/18 23:37 ID:???
>>503
ていうかおまえだれ?

>>502
>>501の前半がずばり同じことを言っている。
505nobodyさん:04/01/19 01:11 ID:fVsnEalX
以前にwebで開発を行っていたとき、デバッグしやすいように処理ごとに
ファイルへログを吐き出していたのですが、今回mod_perlを使用するという
ことになり、そのデバッグのためのログ出力で困っています。

mod_perlの場合、きちんとcloseを行わないとファイルへの出力が行われない
ということのようなのですが、どうにかスクリプトが終了 (エラーで終了も
含む)ときに自動的にcloseが行われるようにすることは出来ないでしょうか?
506nobodyさん:04/01/19 01:24 ID:???
MaxRequestsPerChild 1 でいけるかも
507nobodyさん:04/01/19 10:54 ID:???
CGIで表示する、テンプレートHTMLファイルを読み込んで、それを書き出す時に、
HTMLの中に置換される文字を用意しておきますけど、
そういう時、%%HOGE%%みたいにしますよね。
この%%はなんか意味あるんでしょうか。
508nobodyさん:04/01/19 12:14 ID:???
無い。殆ど文中に出てこないような文字列にしてるだけ
HOGEだけだと、テンプレート中に使う場合もあるかもしれんだろ
509nobodyさん:04/01/19 13:05 ID:???
ありがとうございます
510nobodyさん:04/01/19 13:35 ID:bny4IV18
name.
name.東京
name.横浜

のように
name.以下が何もない場合
name.以下が全角文字列
ならABCに変換したくて

$line_data =~ s/name.[^ -~。-゜]*/selected/;

とやったところ

Invalid [] range "´" before HERE mark in regex
m/sel.business_hours_class1.[^ -~。- << HERE 烟*/

とエラーが返されました。
使ってはいけない文字があったのでしょうか?
いい方法があったら教えてください。
511nobodyさん:04/01/19 14:09 ID:???
>>507
どの言語を使ってるか知らないが、
「車輪の再発明」の問題があるので、
できれば用意されたモジュールを使うことをおすすめする。
512nobodyさん:04/01/19 14:42 ID:TBqYdeZg
デコードについて質問させてください。
本文欄に書かれた「=」「!」「?」の各記号の処理なんですが、現在は

$message=~ s/\=/\=/g;
$message=~ s/\!/\!/g;
$message=~ s/\?/\?/g;

↑こう書いて、とりあえず強制的に半角に変換させています。
これを、全角で書かれた場合は全角のまま、半角で書かれた場合は半角のまま表示させるためには記述をどのように変えればよいのかがわからず悩んでいます。
どうかお知恵をお借りできればと思います。よろしくお願いします。
513nobodyさん:04/01/19 14:58 ID:???
>>512
print $message;
514nobodyさん:04/01/19 15:06 ID:???
515nobodyさん:04/01/19 17:01 ID:???
まあ確かにそうだなw
516nobodyさん:04/01/19 17:27 ID:5UFSwei7
<select name="HOGE">
<option value="あ">ここの値</option>
</select>
「ここの値」をCGIで受け取ることってできますか?
517nobodyさん:04/01/19 17:38 ID:???
>>516
無理。
518nobodyさん:04/01/19 18:02 ID:???
ども
519nobodyさん:04/01/19 19:19 ID:???
あの、多分どーでもいい質問だと思うんですけど、
errorっていうサブルーチンでエラー画面吐いてexitするんですけど、
データをチェックするときに以下のようにelsifでつらつらと書いてるのを良く見ますが、
if ($id eq "") { &error("IDを設定してください。"); }
elsif (length ($id) > 8) { &error("IDが長すぎます。"); }
elsif (length ($id) < 3) { &error("IDが短すぎます。"); }
↑elsifじゃなくて、全部ifで書いても一緒ですよね?
elsifの方が処理が軽いとかそんな理由があってのことでしょうか?
520nobodyさん:04/01/19 19:38 ID:???
全部ifだと、どんな内容でもすべての条件が評価される。
elsifにすると、例えば $id eq "" が真なら、それ以外の条件は評価されない。
521nobodyさん:04/01/19 19:40 ID:???
>>520
いや、だから真ならどうせerrorでexitするから、
それ以上評価しないんで一緒ですよね?ってことなんですけど。
522ヽ(´ー`)ノ:04/01/19 20:17 ID:???
>>521
抜け出すのならコードの上では一緒だけど、意味合いが変わってくるよ。
後から人(自分も含めて)が読む時に
「あれ、なんで elsif 使ってないんだ?何かあるのかな?」って勘違いする
原因になる。
523nobodyさん:04/01/19 20:25 ID:???
&error("IDをありません。") if ($id eq "");
&error("IDが長すぎます。") if (length $id > 8);
&error("IDが短すぎます。") if (length $id < 3);

これでもいいと思うんだ。見栄えが。
524519:04/01/19 20:35 ID:???
うーんでもそういう処理(データチェックして引っ掛かったらerror)をするって部分だから問題ないと思うんですけどね
>>523
そうそう、そうした方が自分的に見やすいんで、その形で統一しようかと思ったわけです

ま、処理の速さとかには変わりないんだと思うんで、自分で判断します。
お騒がせしました。
525nobodyさん:04/01/19 20:39 ID:???
>>505
IO::FileかFileHandleかApache::Fileを使う。

>>510
encoding使ってる?
それと、その正規表現はnamexやname.xxxにもマッチする。
526nobodyさん:04/01/19 22:01 ID:???
>>524
速さが気になればBenchmark!
クセをつけよう!
527nobodyさん:04/01/19 22:06 ID:???
>>523
&error("IDをありません。") if ($id eq "");
$id =length ($id);
&error("IDが長すぎます。") if ($id > 8);
&error("IDが短すぎます。") if ($id < 3);
528nobodyさん:04/01/19 22:12 ID:???
イイ!!ベンチとるソフトないですか?
copal2っていう簡単なperlの実験ってか動作テストするソフト、
最近よく使ってるんだけど、
これに実行速度出てくれたらいいなと思いつつ・・他探すか。
529nobodyさん:04/01/19 22:35 ID:???
PerlでPROXYを弾くライブラリみたいなのってありませんか?
530nobodyさん:04/01/19 23:04 ID:???
>>528
いやあの……ネタ?
Perl には Benchmark モジュールと言う強い味方がいるのに、
どうしてわざわざ別のソフトを……。
531nobodyさん:04/01/19 23:05 ID:???
>>529
その前にProxyの定義を述べよ。
532nobodyさん:04/01/19 23:08 ID:???
ソフトで簡単なスクリプト書いて動作実験するときにポンッとどっかに実行速度0.何秒って出てたらええやん?素敵やん?
533nobodyさん:04/01/19 23:19 ID:???
関西弁だとちっとも素敵に思えない
534ヽ(´ー`)ノ:04/01/19 23:23 ID:???
unix 系なら time ./foo.pl
535nobodyさん:04/01/19 23:37 ID:???
関西弁ってかいうか伸介やん?
536nobodyさん:04/01/20 02:02 ID:???
便乗質問なんですけど・・・
ソフトウェア毎のCPU負荷率を、計測するソフトご存知の方はいませんか?(GUI
Windows全体の負荷率を、計測出来るものは色々あるようなんですが・・。
#かなりスレ違いですね…。
知ってる方が居たら教すてください。
537nobodyさん:04/01/20 02:06 ID:???
そんなものはない
538nobodyさん:04/01/20 06:59 ID:???
>536
タスクマネージャ
539536:04/01/20 07:51 ID:???
>>538
どこで落とせますか?
540nobodyさん:04/01/20 08:10 ID:???
>539
Ctrl+Alt+Del
541nobodyさん:04/01/20 11:12 ID:???
Ctrl+Shift+Esc
542nobodyさん:04/01/20 12:18 ID:???
ファイル名を指定して実行→taskmgr
543nobodyさん:04/01/20 15:21 ID:???
>507
余談だけどテンプレート使う時はHTML::Templateとかみたいにタグかコメントを使った方が良いよ。
<HOGE>とか<!--HOGE-->みたいに。
自分なら後者選ぶかな。
#まあテンプレート中に素の文を全く入れないとか絶対に被らないと言うのなら別に良い
544nobodyさん:04/01/20 15:37 ID:???
広告スクリプトでソケットを使って代理店に取りに行って表示ってやつなんですが、
htmlファイルからssiでad.cgiを呼んで、ad.cgi内でそれを行い、
ヘッダとしてContent-type: text/plain\n\n、
それと広告内容を返させてるんですが、

自分のサイトコンテンツのcgi(仮にtest.cgi)で表示されるページに関しては、
ssiを経由せずtest.cgiから必要な部分でrequireを使い、このad.cgiを呼んで
広告内容*だけ*を返させたいのですが、当然
Content-type: text/plain\n\n←コレも一緒に返ってきてしまいます。

で、対策を考えたんですが、
「ssiで呼ばれたかどうかを確認するすべがある」
「requireで呼ばれたかどうかを確認するすべがある」
どちらかができればヘッダをつけるかどうかを分岐できると思います。
そのような関数とかってありますでしょうか?
また無ければ、どのようにしたら可能orどうあがいても不可能を教えていただけませんか?
545nobodyさん:04/01/20 15:39 ID:???
for(@LOG){
my($dammy,$no)=split(/<>/,$_);
for(@LOG){
my($dammy,$no2,$no3)=split(/<>/,$_);
if($no eq "$no3"){
print "LOG";
for(@LOG){
my($dammy,$no4,$no5)=split(/<>/,$_);
if($no2 eq "$no5"){
print "LOG";
}
}
}
}
}
を1,2回のforルーチンで処理することってできますできますでしょうか?
546nobodyさん:04/01/20 16:30 ID:???
>>545
ループを減らす以前にこれで目的に適った結果が得られているのか?
やりたいことをわかるように文章で書いてみ
547545:04/01/20 16:37 ID:???
LOG1
LOG1の返信
LOG1の返信の返信
LOG1の返信の返信の返信

のような感じの目的に適った結果は得られましたが、
この方法では返信の階層数の3階層になってしまいます。

無限階層の返信がやりたいです。
どうか、ご教授おねがいいたします。
548545:04/01/20 16:39 ID:???
間違い 階層数の3階層になってしまいます。
訂正 階層数が3階層になってしまいます。
549nobodyさん:04/01/20 17:00 ID:MBAxoXoZ
<input type="hidden" name="hoge" value="あああ">
<input type="hidden" name="hoge" value="いいい">
<input type="hidden" name="hoge" value="ううう">

nameが同じ場合はどのようにパラメータを取得したら良いですか?
550nobodyさん:04/01/20 17:01 ID:???
>>547
>>545のコードではそんな結果にはならんだろ
551545:04/01/20 17:06 ID:???
LOG1の返信
LOG1の返信の返信
すいません。
こんな感じです。
552nobodyさん:04/01/20 17:14 ID:???
>>549
&で切ってそれをまた切ったのを$keyと$valueとかに入れて
ハッシュなりに入れてるでしょ?
$in{$key} = $value;こんなんとか、
$hoge = $value if $key eq "hoge";って感じに。
これを
push (@hoge,$value) if $key eq "hoge";
みたいに配列に入れたら?
553nobodyさん:04/01/20 17:24 ID:???
Dummy<>ID<>返信元のIDってデータ構造?
だとしたら、返信元のツリーを辿るには再帰を使うのが自然。

sub foo {
my ($id) = @_;
for (@LOG) {
my $pid = (split/<>/)[2];
if ($id eq $pid) {
print "LOG";
foo($pid);
}
}
}

for (@LOG) {
foo( (split/<>/)[1] );
}

因みに元のスクリプト見ても、捕捉説明読んでも、何の事だか全く分からなかったので、
メールのスレッド表示みたいな事をしたいんだな、と推測。
554545:04/01/20 17:41 ID:???
>>553
無事にできました。
ありがとうございました。
555nobodyさん:04/01/20 18:29 ID:???
あの>>544なんですが、やはり方法無いでしょうか。
やっぱり2つのCGIにわけるしかないのですかね
556nobodyさん:04/01/20 19:37 ID:???
>>544
($0 =~ /ad\.cgi/) and print "Content-type: text/plain\n\n";
でどう?
557nobodyさん:04/01/20 19:53 ID:???
↓adじゃなくてtestですよね?
($0 =~ /test\.cgi/) and print "Content-type: text/plain\n\n";

>$0 : 実行している perl スクリプトのファイル名。 $0 に代入を行なうと、ps(1) プログラムが参照する引数領域を変更する。

あぁ、これでいけそうですね。今、邪道ですがtest.cgiで使ってる変数($bar)をつかって
print "Content-type: text/plain\n\n" if (!$bar);
と書いて組み直し始めたところだったんですけど、後で$0でやってみます。
有難うございました
558nobodyさん:04/01/21 00:35 ID:???
if($sort_no){@road_list=reverse sort{(split(/<>/,$a))[0] <=> (split(/<>/,$b))[0]}@road_list;}
else{@road_list=sort{(split(/<>/,$a))[18] <=> (split(/<>/,$b))[18]}@road_list;}

これを日本語に訳すとどういう処理になりますか?
559nobodyさん:04/01/21 00:50 ID:???
if ( $sort_no ) {
@road_list =
reverse
sort { (split(/<>/,$a))[0] <=> (split(/<>/,$b))[0] }
@road_list;
} else {
@road_list =
sort { (split(/<>/,$a))[18] <=> (split(/<>/,$b))[18] }
@road_list;
}
……KENT?
いやしかし、これが読めないとなったらかなり困るだろうに。
お前はこれを何をしているものなのか、少しは考えたんだろう。
その考えを述べよ。それに対してコメントを入れる形での回答ならしてもいい。
560nobodyさん:04/01/21 00:54 ID:???
しかし……なんか生理的に汚いと感じてしまうな、このコード。

特に前半のソートとか。
なんでreverseを使っているのかと。
拡張性もないし。
561nobodyさん:04/01/21 00:55 ID:i185C90e
ポケットリファレンスで調べたところsplitは文字列を分割する………………と
562nobodyさん:04/01/21 00:56 ID:i185C90e
ポケットリファレンスで調べたところreverseはリスト値を逆順に並べ替える………………と



563nobodyさん:04/01/21 00:58 ID:???
[0]と[18]が何の数字かワカリマセヌ
564nobodyさん:04/01/21 01:08 ID:???
言うならまだどうのつるぎとかわのたてなんですよ。
565nobodyさん:04/01/21 01:18 ID:???
>>563
数字の意味をお前がわからないのにこっちがわかるわけないだろう?
後、sort もきっちり読んどけ。
それと配列のところも。

マジ、汚いソースだ。
多分これは、掲示板か何かの書き込みデータを、表示する時にどんな風に並べ替えるかの部分だろう。
@road_listには、書き込みデータが入っていて、
$road_list[n]は、一つの書き込みデータになっているんだろう。
そして、一行は、
data0<>data1<>data2<>...
のような構造になっているんだろう。
(<>なんてデリミタを使ってるのは、KENTかKENTで学んでまだその影響から抜けられない連中だろうからな)
この時、並べ替えの基準を、<>で区切ったデータの左から数えて0番目か18番目するか、
$sort_noの真偽で振り分けてる訳だ。

この数字はデータの構造(項目の順番)を変えた時には当然変更しなければならない訳で、
素人が勝手な改造をした後でこの部分を変更せずにいて「おかしくなった」とか大騒ぎする一因となる。
566nobodyさん:04/01/21 01:24 ID:???
1歩先に自己解決しました。
まさにdata0<>data1<>data2<>...になっていてdataxを2つ挿入したら動かなくなってました。
口調は荒いですが丁寧なマジレスありがとうございました。デリミタとか意味わかりませんが
皆さんKENTってサイトで学んでいくもんなんでしょうか?
それにしてもコードが綺麗汚いってどうやったらわかるもんなんでしょうか。
そういう関係のお仕事に就かれているとか?



567nobodyさん:04/01/21 01:29 ID:???
<>よく使うけど、なんか問題あるの?
BBSの投稿とかってだいたい<,>に置換させるし、いいと思ったけど。
<>じゃなければ,か\tとか?
568nobodyさん:04/01/21 01:29 ID:???
↑<,>は&lt;、&gt;ね。
569nobodyさん:04/01/21 02:49 ID:???
はっきり言ってKentのソースは汚すぎて読みたくない
570nobodyさん:04/01/21 03:19 ID:???
じゃあどこで勉強すると綺麗なのでしょうか
571nobodyさん:04/01/21 03:31 ID:???
>>570
コメントなしの自分のソースを1週間後に見て理解できれば綺麗なソース。

日々の精進でつ。
572nobodyさん:04/01/21 06:03 ID:???
>>569
綺麗な方だと思う。
C-B○ard見た後に見てみろよ。ほっとするぞ。
573nobodyさん:04/01/21 06:07 ID:???
CじゃなくてChildだったかな。
574nobodyさん:04/01/21 06:47 ID:???
俺もKENTに学んだ覚えはないが<>を使ってる。
575nobodyさん:04/01/21 07:26 ID:???
見やすいからじゃないかな。
俺も前は<>を使ってた。
何となく , かtab に変更したけど。
576nobodyさん:04/01/21 08:58 ID:???
データとしてありえないコードだったらデリミタ/セパレータはなんだっていいよ。
サニタイズしてデータに保存することが前提だったら<>はデータとしてありえない。
保存する文字コードが決めうちなら別に2バイト消費する必要性もないといえばない。
577ヽ(´ー`)ノ:04/01/21 09:23 ID:???
既存のモジュール(Text::CSV, DBI/DBD) を使うのはあまり普通じゃないのか。
578nobodyさん:04/01/21 10:04 ID:???
>>577
最近知ったばかりで、言いたいだけちゃうんかと。
579ヽ(´ー`)ノ:04/01/21 10:28 ID:???
>>578
いや、純粋に疑問なんだが。
580nobodyさん:04/01/21 10:35 ID:mIVImWGJ
ぶっちゃけ、WEB関係は、TSVが一番いいと思う。
\0使う人居るけど、\0とか使うと、エディタとかで編集しにくくなるし。
フォームからは普通タブは送信されないはずだがら捨てちゃっていいと思う。
というか、デコード時に、
s/[\x00-\x09\x0b\x0c\x0e-\x1f]|\x7f//g;
で改行以外のコントロール文字は捨てとかないと危険。
俺、うぜぇ_?
581nobodyさん:04/01/21 11:24 ID:???
まぁ・・そんなところ
582nobodyさん:04/01/21 13:35 ID:???
583nobodyさん:04/01/21 14:18 ID:oKdmLhYc
utf-8 を扱うスクリプトを書きたくて、
ひとまず実験として以下のようなコードを書いて
これをコマンドプロンプトから試したら正常に実行されました。
しかしWEBブラウザから試してみたら「500 Internal Server Error」が返ってきてしまいました。

#!/usr/local/bin/perl

use Encode;

print "Content-type: text/plain\n\n";
print "あいうえお";

どうやら「use Encode;」の部分がダメらしいんですが、
理由が全然わかりません…。
ちなみに環境は Active Perl 5.8.2 です。
584nobodyさん:04/01/21 14:23 ID:???
http://digit.que.ne.jp/work/index.cgi?Encode
どーやられは5.8から標準化のようだね。そんなことくらい調べろ。
585nobodyさん:04/01/21 14:24 ID:???
ごめん。Perl 5.8.2で動かしたのか。逝ってきます。
586nobodyさん:04/01/21 14:54 ID:???
>>583
エラーメッセージきぼんぬ
587583:04/01/21 15:59 ID:???
うわあぁぁゴメンナサイーー!!
実は私、Perl5.6 と Perl5.8 を共存させてるんですが
まちがえて 5.6 のほうで試してました…
そりゃあ 5.6 には Encode.pm はない罠…
本当にすみませんすみません

でもここで疑問が。
コマンドプロンプトで試したときも Perl5.6 で動かしたはずなのに
どうしてエラーにならないんでしょう?
588nobodyさん:04/01/21 16:00 ID:???
>>853
ファイルの実行権は?

ファイルのエンコードは?
どうやって保存した。どうやって確認した?
又、サーバーにアップロードして実行した場合はFTPクライアントの設定で変更されていないかも確認する。

コマンドプロンプトから試したと言うのは、どうやって?
./foo.cgi
perl ./foo.cgi
/usr/local/bin/perl ./foo.cgi

perlのパスとバージョンは合ってる?
/usr/local/bin/perl -v
複数のバージョンが混在している事もあるので注意。

ファイルの先頭にBOM付いていない?

一般的な問題からunicode特有の問題まで。
原因は色々と考えられるけど、エラーログを見ればすぐ解決すると思うよ。
500 Internal Server Errorじゃなくて、サーバーのerror.logのメッセージを提示しよう。
589nobodyさん:04/01/21 16:14 ID:???
>>562
そういう意味じゃなくて、
この場合$a,$bを逆にすれば逆順になるんだからreverseいらないだろ。
590583:04/01/21 16:28 ID:???
余談ですが、私のPCには
Perl 5.6 が c:/usr/local/bin/perl
Perl 5.8 が c:/usr/bin/perl
にインストールされてます。
5.8 はutf8が使いたくて本日導入したんですが
今までのクセでcgiファイルの1行目に
#!/usr/local/bin/perl
って書いてしまっていたのでした…(重ね重ねお騒がせ致しました)。

>>588
コマンドプロンプトから試したときは
perl c:\cgi\test.cgi
という風に実行しました。
スクリプト本体は Shift_JIS です。

で、ご指摘のとおり apache の error.log を見たら
Can't locate Encode.pm in...(以下略)
と書いてあったのでようやく気がついた次第です(お恥ずかしい)
591nobodyさん:04/01/21 16:40 ID:???
>>590
perl c:\cgi\test.cgi

これだとtest.cgiの#!行はコメントとして解釈されるので、
どっちのperlで実行されるかは、環境変数のPATH次第です。

c:\usr\local\bin\perl c:\cgi\test.cgi
c:\usr\bin\perl c:\cgi\test.cgi

で試してみると、どちらのバージョンでエラーが出たのか明白だと思います。

592nobodyさん:04/01/21 19:20 ID:???
>>580
おおむね同意。
TSVもいいが、CSVも一応視野に入れておきたいところ。
Excelでどーのこーの言うところに、システム納品することだってあるだろうし。
タブ区切りでも、エディタで開いて全選択コピー、Excelにはりつけってすればいいんだけど、
1ステップ余計にかかるのは辛いよね。
逆は面倒だけど、TSVからCSVには簡単に変換できるし。
593nobodyさん:04/01/21 21:24 ID:???
Kentで<>を使っているのは、タグ抜きで<>が入らないからだよね。多分。
>>580のような処理が無かったと思うから、”Kentでは”妥当だと思う。
初心者には分かりやすいけど、突き詰めればTSVやCSVが良いんだろうね。
594nobodyさん:04/01/21 21:28 ID:???
<>はどうせタグ無効化で重複する事がないからそれを使ってた。
カンマ区切りだとカンマもエスケープしないといけなくなるから面倒。
とは言え、最近はタブ区切りを使い始めている俺。
区切りが崩れないように入力されたタブは&#32;に変換してる。
&am;nbsp;だと一部のブラウザで化けるから。
595nobodyさん:04/01/21 21:29 ID:???
最後の一行は&nbsp;の間違い。
596nobodyさん:04/01/21 22:32 ID:???
?は良い手だね。うちは, の2バイトで区切ってる。
, がきたら,の1バイトにしてる。
って、よく考えたらあまり意味なさそうなんで?x2C;にしようかな。

んで、これ↓が気になる。
>&am;nbsp;だと一部のブラウザで化けるから。
 が化けることってあったっけ?普通の1スペースが消えちゃうブラウザは知ってるけど。
597nobodyさん:04/01/21 22:36 ID:???
あー、やっちまった。
もうちょっと気の利いたサニタイズして欲しいなぁ。
598nobodyさん:04/01/22 06:47 ID:???
>596
&nbsp;は0xA0であり0x20じゃない。
この差のせいかブラウザによって「・」とか「?」に見えてしまったりもするらしい。
599nobodyさん:04/01/22 07:41 ID:???
ほんとだ。過去にNNとかで化けたらしいね。
ということは &#x20; とかがいいのかな?半角スペース。
600nobodyさん:04/01/22 11:21 ID:???
すいません。なんか思うように動いてくれなくて、
どうやらここがおかしそうだって所は見つけて解決したようなしてないような・・
ってな感じなんで、ちょっと質問させてください。

POSTで送るデータの中に&lt;とかが入ってる場合、
それを受け取り処理してるときに気づいたんですが、
どうやら勝手に<等に変換されてるようなのですが、
そういうものなのでしょうか?
601nobodyさん:04/01/22 11:48 ID:???
実際にやってみれ。
標準入力をテキストにそのまま出力するだけのCGIを作って、
ブラウザでアクセスして起動させ、
その後FTPでテキストをダウンロードして調べれば、
どの部分でその変換がかかってるのか一撃だろ。
602nobodyさん:04/01/22 12:02 ID:???
いやテストしてみてそうなったんですが、
google等で検索してみてもそういう記述が見当らなかったので、
それは自分の環境だけじゃなくてどの環境でもそうなることなのかな?
って疑問に思ったわけなんですが。
603600でも602でもない男:04/01/22 14:04 ID:???
暇なので >>601 の通りにやってみたら
< は %26lt%3B になって格納されたよ
環境は debian sid + apache 1.3.29 だが

ちなみに
標準入力直接でなく CGI.pm 使って引数を取ってきたら
< が < になって格納されたよ
604nobodyさん:04/01/22 15:27 ID:???
ごめんなさい。全く一緒のテストしたわけじゃなかったんでおそらく誤解を招きました。
で、結局解りました。

要は<input type="hidden"...>のvalueで&amp;や&quot;などを埋め込み、
そのデータをcgiに渡したときに全てが「&」や「"」に変換されてて困ってたんです。
ソースを見てもちゃんと&amp;や&quot;と書かれているのに何故だろうと・・
その後、<input type="text"...>でブラウザから&amp;や&quot;を打ち込み、
テストしてみた結果、おそらく>>603さんと同じような結果になり
ますます意味不明になりました。

で、<input type="text"...>のvalueにあらかじめ&amp;、&quot;を入れてる状態で
ブラウザからアクセスしそのクエリを送信したら、やっとわかりました。
結果はhiddenのときのように&と"に変換?されてたんですが、
つまり&でエスケープ(とは言わないのかな?)した文字はそれをブラウザで表示した時点で
ブラウザ側は&や"と認識するんだと思うんですが、
いくらソースを除いてvalueに&amp;とかかれてても、
ブラウザは認識した&を送信するんだなと・・というかそれが当然なんだろうけど・・

多分言ってること???だと思いますが
なんしか解決しました。すいませんでした。
605nobodyさん:04/01/22 15:32 ID:???
追加

受け取ったデータはそのままだと>>603さんのような状態です。
URIデコードでしたっけ?をしてます。
それと「当たり前だろゴラァ」って言われそうですが、NNでも同じ結果でした。
606nobodyさん:04/01/22 16:09 ID:???
<input type="hidden" name="p" value="<" /> → '<' # html 的に(゚Д゚)マズー
<input type="hidden" name="p" value="<" /> → '<' # オッケー
<input type="hidden" name="p" value="&lt;" /> → '<'

あとは CGI.pm 使ってるなら autoEscape(0)。
607nobodyさん:04/01/22 16:09 ID:???
<input type="hidden" name="p" value="<" /> → '<' # html 的に(゚Д゚)マズー
<input type="hidden" name="p" value="&lt;" /> → '<' # オッケー
<input type="hidden" name="p" value="&amp;lt;" /> → '&lt;'

……の間違い
608nobodyさん:04/01/22 16:56 ID:QiMlWclT
perl でクラスのメソッドから同クラス内のメソッド呼び出したいんですが
どうも思った通りに動いてくれません。

例えば下のようなコード
sub1はメインからの呼び出しのみ
sub2はメインからも、別メソッドからも呼び出される

$a = class();
$a->sub2(1, 2); #期待通り
$a->sub1(1, 2); #これの表示がうまく行かない


package class;
sub sub1{
my $self = shift;
my $a = shift;
$a++;
sub2(shift, $a); #sub2に引数を渡して実行したい どうもここが怪しい
}
sub sub2{
my $self = shift;
print shift*shift;
}
609nobodyさん:04/01/22 18:56 ID:???
>>608
sub2(shift, $a); 引数の数が足りないから。
$a->sub2(1, 2)は、class::sub2($a, 1, 2)のシンタックスシュガーと考えると
sub1内から関数として呼び出してるのとメソッドとして呼び出す方法の違いが分かると思う。

それ以前に、Perlでのクラスの使い方が怪しいのだけど。

my $obj = MyClass->new;
$obj->sub1(1, 2);
$obj->sub2(1, 2);
{
package MyClass;
sub new($){
my($class) = @_;
bless({}, $class);
}
sub sub1($$$){
my($self, $num1, $num2)=@_;
$self->sub1($num1+1, $num2);
}
sub sub2($$$){
my($self, $num1, $num2)=@_;
print $num1*$num2;
}
}
610nobodyさん:04/01/22 19:14 ID:cuVJR6Vk
質問なんですが

今、配列へのリファレンスを値にもつハッシュがあるんですが
Ex
my %arrayRefHash;
$arrayRefHash{one} = [ "a", "b", "c"];
$arrayRefHash{two} = [ "d", "e", "f"];

このときに、$arrayRefHash{one}がリファレンスを持つ配列に
要素を追加しようとしたんですが、
push( @$arrayRefHash{one}, "d");
では上手くいきませんでした。
Global symbol "$arrayRefHash" requires explicit package name
多分、$arrayRefHashを変数値としてみてるとおもうんですが
どうすれば配列として参照できるんでしょうか
611nobodyさん:04/01/22 19:19 ID:???
>>610 @{$arrayRefHash{one}}
612nobodyさん:04/01/22 19:27 ID:???
ラジオボタンで送信ボタンをつくらずにチェックしただけでデータを入力することはできますか?
613nobodyさん:04/01/22 20:44 ID:???
無理。javascriptあたりでできる・・かな?
614nobodyさん:04/01/22 21:06 ID:???
>>612 スレ違いじゃないかな?perl/tkか?
Client side のscriptの話だとすれば、
ラジオボタンのonclickイベントに記述すれば出来るよ。
データの入力が何を指してるのか解らないけど、
送信するんだったら、formオブジェクトのsubmitメソッドを呼ぶ。
615608:04/01/22 21:26 ID:???
>>609

どうもありがとう
$self->メソッドで、一応やりたい事は出来るみたいでした

多少省略した部分もありますが
perlは過去に我流で勉強しただけで、普段は一切使っていないのと
クラスを覚えてみようと、今日はじめて使ってみてたので
怪しいのは確実に間違いないです


ついでに一つ質問なんですが
関数の()内の$と$$$の違いって何ですか?
616nobodyさん:04/01/22 21:54 ID:???
eval-blockのなかでmy宣言した変数はそのブロック内だけで有効だが
eval-blockの直前でmy宣言した変数はevalブロック内でも有効
この認識はあってますでしょうか?
617nobodyさん:04/01/22 23:03 ID:cVoSkmv9
つい最近Perlを始めて動作確認をしようと思ったんですけど、

----------
#!usr/bin/perl

print<<"EOM";
Content-type: text/html

Hello!!
EOM
----------

と入力した.cgiファイルを何度実行しても500エラーになります。
どこかマズいところありますか?
618617:04/01/22 23:05 ID:cVoSkmv9
すいません。1行目は

#!/usr/bin/perl

です。
619616:04/01/22 23:13 ID:???
>>617
パーミッションは変えた?
perlへのパスはあってる?
その前に何処でテストしてるの?
鯖なら転送モードは?
ローカルならエラーログみてみたら?

#そんなことより私のを・・eval-blockはeval { ... }のことです。。。
620nobodyさん:04/01/22 23:14 ID:???
>>617
良い機会だから、どのようなエラーが出てるか確認してみよう。
621nobodyさん:04/01/22 23:24 ID:???
>>616=619
そんなことより君の方こそテストして確かめたら?
622617:04/01/22 23:24 ID:cVoSkmv9
>>619
あ、割り込んじゃってすいませんm(_ _)m

一応ローカルでやってます。
パーミッションは755にしました。Perlのパスは確認しました。

エラーログには
Premature end of script headers
と書いてあります。script headerってなんですか?
623nobodyさん:04/01/22 23:27 ID:???
624nobodyさん:04/01/22 23:28 ID:???
>>618
--
625nobodyさん:04/01/22 23:29 ID:???
>>615
Perlの場合、目的によってはそういう使い方する時もあるんだけど。
なるべく、クラスのインスタンスを作成するには blessを使おう。
インスタンスを作成せずクラスメソッドして呼び出すには、 class::sub1(1,2)
この場合の引数は、(1,2)のみ。メソッドとして呼び出された時のように
第一引数にパッケージ名は渡されないので注意。

($) ($$$)は、関数のプロトタイプ宣言だよ。perldoc perlsub

>>616
Yes

>>617
>何度実行しても500エラーになります。
とりあえず、回数は関係ないと思うよ。
626nobodyさん:04/01/22 23:30 ID:???
>>621
テストして確かめたからこの認識であってるか聞いてるんだろうがヴォケ

print &test1;
sub test1 {
eval {
my $a1 = "hoge";
};
return $a1;
}
-------------
結果 なんもナシ
------------------------------------
print &test1;
sub test1 {
my $a1 = "hoge";
eval {
return $a1;
};
}
-------------
結果 hoge
627nobodyさん:04/01/22 23:31 ID:???
>>625
ありがd・・・。

取り乱しました。ほんとにすいませんでした。
628nobodyさん:04/01/22 23:40 ID:RMqKCSAk
javaスクリプトでしかできないんですか?
普通のperlでやりたいんですけど。
送信内容は例えば

◎ 新品  ◎中古 とかで

value = 0;
value = 1;

みたいな変数です。
629nobodyさん:04/01/22 23:45 ID:???
>>628
お前は誰で誰に対して言ってるのよ?
630nobodyさん:04/01/22 23:46 ID:???
>>628
だからサーバーサイドだけでは無理だっつーの
サーバーサイド+クライアントサイドで実現できんじゃねーの?
631nobodyさん:04/01/22 23:46 ID:nXgdKjbn
こんばんは
cgiのデータをテンプレートhtmlに埋め込んで表示とかしてるんですが、サーバを変えたら表示結果が文字化けして困っています。
(エンコードの初期設定が西ヨーロッパ言語になってしまう・エンコード日本語シフトjisに変えれば正しく表示されます。)
良きアドバイスを頂けませんか?非常に困っています。
632631:04/01/22 23:48 ID:nXgdKjbn
一部訂正です
cgiのデータ→cgiでの処理結果のデータ
633nobodyさん:04/01/22 23:48 ID:???
>>631
>cgiのデータをテンプレートhtmlに埋め込んで
がよーわからんが、htmlファイルにmetaでキャラセットを設定したら?sjisに
634631:04/01/22 23:53 ID:nXgdKjbn
いままでのサーバで正常だったのが気になります・・・
635612:04/01/22 23:54 ID:RMqKCSAk
>>630
すみません。具体的にはどのような方法ですか?
CGIでは無理ということですか?
636nobodyさん:04/01/22 23:56 ID:???
>>612
しつこいぞテメェ。もう答えは出てんだからうせろ。
637nobodyさん:04/01/22 23:57 ID:???
>>634
サーバ変われば世界が変わる。

>>635
とりあえずCGIとPerlは違うぞ、とお決まりの一言。
まぁJavaScriptでやるのが妥当だと思う。
638nobodyさん:04/01/22 23:58 ID:???
>>635
具体的か、、んとねぇベルトある?
あれをねぇ、こう何処か高くて丈夫なところに固定するんだわ
でねぇ、椅子を持ってきて椅子に立ってから首にそのベルトかけて
一気に躊躇せず椅子をけり倒すのよ。
要するに氏ねってこった
639nobodyさん:04/01/23 00:00 ID:???
>>612
みたいに親切に答てくれている人のレスを無視してどうやるの?を繰り返すアホが一番嫌われる。
640nobodyさん:04/01/23 00:00 ID:???
>>635
うるせーぼけ、CGIが一体どんな仕組みで動いてるのかから勉強しなおしやがれ。

とにかくお前のやりたいことを言葉を尽くして説明してみろ。
そしたら適切なスレに誘導も、無理だと判断するのもできるだろうに。

まあ、普通だったら、>>612の回答で充分なんだがな。
そしてWeb製作板のJavaScriptスレにいけ。

もし万が一、「ブラウザで表示している画面は変えずに鯖にデータを送る」とかだったら、
それこそhttpプロトコルのステータスから勉強しないと駄目だろうけどな。
641nobodyさん:04/01/23 00:01 ID:???
>>628
Client side PerlScript使えば出来るよ。頑張って。

>>631
A.サーバーのhttpd.confや.htaccess で設定。(アクセスされるのがhtmlファイルなら)
AddType "text/html; charset=Shift_JIS" .html
B.CGIでHTTPの応答ヘッダにcharset指定を出力する。
print "Content-type: text/html;charset=Shift_JIS\n\n";
C.HTML内のMETAタグで指定。
<meta http-equiv="Content-type" content="text/html; charset=Shift_JIS" />
642nobodyさん:04/01/23 00:03 ID:???
>>631
気になるも何も、ただの偶然だろ。
HTMLなら、headの中にmetaタグで文字コード指定するのは作法だし、
CGIでも、ヘッダー吐き出す時に文字コードを指定することもできる。
二重の方法で文字コードを(特に苦労もなく)指定させられるんだから、
できるだけのことをしておくのがいいんだ。そうすれば悩まなくて済むんだから。
643612:04/01/23 00:03 ID:xQAZE2aU
アイムソリー
janeのナンバーずれててわからんかった。
644612:04/01/23 00:10 ID:???
申し訳ありませんでした。もう消えますけど

>>もし万が一、「ブラウザで表示している画面は変えずに鯖にデータを送る」とかだったら、
それこそhttpプロトコルのステータスから勉強しないと駄目だろうけどな。





そのとおりのようです…。
さようなら…。
645nobodyさん:04/01/23 00:11 ID:???
↓次どうぞ
646631:04/01/23 00:14 ID:pEpaeS+A
>>642
ありがとうございます。
運用上、現ソースを変えずに対応できたら・・・と考えていましたが変えるのが一番ですね、やってみます。
647617:04/01/23 00:30 ID:RailRybc
>>623
ありがとうございました。解決しました。
648nobodyさん:04/01/23 01:58 ID:???
>>631
違う。ソース変える必要は"たぶん"ない
httpd.conf で、 AddDefaultCharset が on になってるだけだろ
649nobodyさん:04/01/23 02:12 ID:???
>>648
そういう話題じゃないの
650nobodyさん:04/01/23 04:23 ID:???
>>もし万が一、「ブラウザで表示している画面は変えずに鯖にデータを送る」とかだったら、
それこそhttpプロトコルのステータスから勉強しないと駄目だろうけどな。

元の質問からそこまで読めなかったなぁ。
でも、通常のCGIではステータスコード返せないんじゃなかった?
nph scriptの他に、見かけだけの動作でも良いのなら、
HTMLだけでも幅ゼロのフレーム作ってformタグのターゲット属性で指定って方法もあるよ。
651nobodyさん:04/01/23 09:07 ID:???
metaタグ、ヘッダ(AddDefaultCharset)のほかにYahooみたいな手もあるよ。
今見たらソースの頭に 京 が入ってた。EUCで。
652ヽ(´ー`)ノ:04/01/23 09:41 ID:???
まさか今の世の中に「京」の話題を聞くとは思わなんだな。
653nobodyさん:04/01/23 12:00 ID:???
ローカルでテストしてるときに
apacheを立ち上げ、ブラウザでテストしapacheを終了すると
DOS窓が開いて普段は1秒位で終了してくれるんですが、
処理によっては終了までに5秒くらいかかるのがあります。
こういうのはコードが悪くてどこかで処理が残ってると考えてたんですけど、
どういう理由が考えられるんでしょうか
それと、そういう場合に虫を見つけ、デバックする方法はないでしょうか?
654nobodyさん:04/01/23 12:51 ID:38BHYMJU
main.txtに、test1.txt、test2.txt・・・・test10.textを
書き込みたいのですが、各ファイルの文字列を配列に入れて、
main.txtに書き込むというやり方しか思いつきません(下記)。
直接ファイルをファイルに書き込む方法は無いのでしょうか?

for($x=1; $x<3; $x++){
open (FH,"kare${x}.wrl");
push(@list,<FH>,"\n\n");
close(FH);
}

open (FH,">>vmain.wrl");
for($i=0; $i<@list; $i++){
print FH "$list[$i]";
}
close(FH);
655nobodyさん:04/01/23 12:56 ID:???
% cat test1.txt test2.txt … test10.txt > main.txt
656nobodyさん:04/01/23 15:25 ID:???
>>654
open MAIN, ">> main" or die;
for (map {"text".$_.".txt"} (1..3) ) {
 my $buff = "";
 open F, $_ or die;
 print MAIN $buff while (read(F, $buff, 1024));
 close F;
}
close MAIN;
657nobodyさん:04/01/23 17:01 ID:ljQVqc4q
print "Location: URL\n\n";
でターゲット指定はできますか?
658nobodyさん:04/01/23 20:15 ID:???
>> 656
何かそのmapの使い方には違和感を感じるぞぉ。
素直に open F, "text$_.txt" でいいんじゃない?

>>657
フレームのターゲット指定の事なら出来ないよ
659nobodyさん:04/01/23 21:52 ID:???
>>651
http://docs.yahoo.co.jp/docs/help/mojibake/sonota.html
一応張っとくね。しかしYahooの中の人も(略

>>654
{
local $/;

open(WFH, '>main.txt') or die $!;
foreach(1..10){
open(RFH, "test$_.txt") or next;
print WFH <RFH>;
close(RFH);
}
close(WFH);
}

# メモリ食いまくり。
660質問者:04/01/23 22:31 ID:???
チャット作成についてなのですが、perlのweb cgi でリアルタイムチャットと言うのは可能なのでしょうか。
ポートを作ってそこに誘導すると出来るとか何とか聞いたのですが、

1.誘導の仕方
2.ブラウザからサーバにデータを送る方法
3.サーバで処理したデータをクライアントに送信して反映させる方法

がわかりません(ネットワーク関係です)
概念だけでも良いのでどなたかお教えいただけないでしょうか。
661nobodyさん:04/01/23 23:01 ID:???
>>660
ぱっと考えてCGIだけでは概念的に無理そうに思うが

「ポートを作る」と言っているところを見ると、
まさか、portをlistenするdaemonみたいなプロセスをCGIの子プロセスとしてforkする、
あるいはCGI自身がそういうプロセスになる(普通timeoutがあるから難しそうだが)
てことか?
662nobodyさん:04/01/23 23:31 ID:cIyX/bzQ
現在ログをHTMLファイルとして吐き出す掲示板を作っています。
動作自体は問題ないのですが、HTMLをファイルとして吐き出す性質上、
パーミッションが606にならざるを得ません。

こうしたHTMLファイルをサーバー上に置いた場合、外部から書き換えられる
危険性があるでしょうか。
まあ、普通の掲示板のログファイルが勝手に書き換えられるというのも聞かない
ので大丈夫だと思うのですが。

スクリプトでも埋め込まれると目も当てられないので。

ちと板違いな気もするけど、CGI作成上の問題ということでお許しを。
663nobodyさん:04/01/23 23:34 ID:???
>>662
CGI: Common Gateway Interface part 11
http://pc2.2ch.net/test/read.cgi/php/1055597189/
664660:04/01/23 23:56 ID:hLe3gFVq
>>661
解凍ありがとうございます。

やり方も全くわからないんですよ。前に一度見たことあるような気もしたんですが行方不明。
人からポートが何とかと聞いたので気になりまして。

新しいプロセスで作る…ですか。それかも知れません。(自作のウェブサーバーに置くので)
しかしブラウザとperlでリアルタイムはできるのでしょうか…。
665nobodyさん:04/01/23 23:56 ID:???
…回答ありがとうございます(訂正)
666nobodyさん:04/01/24 00:22 ID:???
>>663
ありがとう。いってきます。
667nobodyさん:04/01/24 00:25 ID:???
>>660
HTMLやJavaScriptでは無理なので、比較的多くのブラウザが
対応しているJavaAppletやflashを使う。
JavaAppletやflashが特定のポートに接続することでデータのやり取りを行う。
サーバ側の仕組みは、CGIっていうよりwebサーバとかと同等のサーバ機能だね。

サーバ側は特定のポートを使える言語であれば何で書いても構わない。
もちろんperlでも可能。
「perl ソケット ポート番号」でググればどんな感じか掴めるんじゃないかなぁ。
668nobodyさん:04/01/24 11:40 ID:3XmXG5Te
>>667
ありがとうございます。javaapplet行ってきます。
669nobodyさん:04/01/24 15:46 ID:RywpiCe0
foreach $n (a,b,c,d) {
&sub hoge($n);
}

これを順番どおりにやっていると遅くなるので、
&sub hoge(a)と&sub hoge(b)と&sub hoge(c)と&sub hoge(d)を
同時にやらせたいのですが、どんな方法がありますか?
670nobodyさん:04/01/24 16:04 ID:???
>>669
そのソースは動かないだろ
671660:04/01/24 16:24 ID:3XmXG5Te
あちこち探し回ったのですが、CのCGIですが
ttp://www-cms.phys.s.u-tokyo.ac.jp/~naoki/CIPINTRO/CCGI/chatserv.html
のような物が在りました。原理は少しわかったのですがperlでクライアントパソコンの
ブラウザにデータを送ることは可能なのでしょうか。
672660:04/01/24 16:27 ID:3XmXG5Te
失礼…。「相手のブラウザに送信して反映させることは可能なのでしょうか」 すみません
673nobodyさん:04/01/24 16:29 ID:ShluMD4z
Webプログラミングの初心者なのですが、基本的なことについて教えてください。

ローカルマシンにあるperlプログラムをHTMLから起動するには
どのように記述したらよいのでしょうか?

動的にHTMLを生成とかではなくて、
とりあえずCドライブにあるperlを起動したいだけなんですが。

教えてくんですみませんが、ご教示ください。
674nobodyさん:04/01/24 16:32 ID:???
少なくとも、ローカルマシン上でWWWサーバが起動してないと無理
675nobodyさん:04/01/24 16:33 ID:???
ローカルに自鯖を立てなさい。
676nobodyさん:04/01/24 16:40 ID:???
>>671
相手のブラウザをリモートから強制的にリロードさせてるんじゃなくて
JavaScriptで毎秒データを更新してるんでは?
677nobodyさん:04/01/24 16:46 ID:ShluMD4z
>>674
>>675

言葉足らずでした。
ローカルマシン上でwwwサーバ起動してます。

<A NAME="test"
HREF="c:\test\test.pl">テスト</A>

みたいに書けば動くと思っていたのですが
「次のファイルをダウンロードしています」というメッセージが
出てきてしまうんです。
678nobodyさん:04/01/24 16:55 ID:???
まず、アドレスは href="http://localhost/cgi-bin/test.pl"という感じ

cgiモジュールが入ってること。

設定ファイルのAddHandlerに .pl を設定

<Directory>コンテナで cgi が実行できる設定になってること
679nobodyさん:04/01/24 16:57 ID:???
>>673 >>677
その質問のどこが「Perlコーディング」についての質問なんだ?
680nobodyさん:04/01/24 17:07 ID:ShluMD4z
>>678
ありがとうございます。
やってみます。
681nobodyさん:04/01/24 17:49 ID:3XmXG5Te
>>676
いえ、どうやらjavascriptは下スクロールだけのようです。
cも少々見たのですが、send関数という物を使って出しているような感じでした。
perlにもsendはありますがsendしても処理してくれるかどうか…。と気になりました。
682nobodyさん:04/01/24 18:17 ID:???
>>681
それCGIじゃないぞ。
チャット処理専用の簡易WEB鯖をつくってる。

TimeOutさせずに接続を維持して、(HTMLも閉じずに)
メッセージが投稿されたらクライアントに渡してる。

ざっとソースを斜め読みしてみただけなので間違ってるかもしれんが
あんまり上手いもんじゃないなぁ。
683nobodyさん:04/01/24 18:31 ID:3XmXG5Te
>>682
簡易webサーバー…というとポートを開放して接続を維持している点を言っているのでしょうか。
確かにcgiでは畑違いだったかも知れません…。

一つお聞きしたいのですが、「送ってる」と言うのは後半にあるsend関数でしょうか。
送るだけで大丈夫なのでしょうか。
684yuki:04/01/24 18:42 ID:LIGGezky
誰もきてくれないよ
どこが悪いか誰か教えて

常時40店舗近くのショップが入っております。
品揃え抜群のネットモール街開店
http://www.geocities.jp/fmghr877/shopJun.html
685nobodyさん:04/01/24 18:49 ID:c5PUM45j
socketで送受信するアプリは明らかにHTMLでやることじゃないな。
先に出てきたようにJavaAppletかFLASHが良いのでは?
686nobodyさん:04/01/24 18:51 ID:c5PUM45j
>>684
その手には乗らない。お小遣い稼ぎはよそでやって。
687nobodyさん:04/01/24 18:54 ID:???

 ス レ 違 い の 話 題 は 他 へ 誘 導 し て 回 答 せ よ

688nobodyさん:04/01/24 18:58 ID:???
>for( int i=0; i<MAX_CLIENTS; i++ ){
>if( to[i].IsActive() ) to[i].Send(buf);
>}
の部分。

鯖だって言ってるのは自分でポート開いて待ち受けして
HTTPをテキトーではあるけど、解釈してるところ。

試してないから上手くいくかどうか走らんが、HTMLもソケットも閉じてないから
大丈夫なんじゃないの?
ブラウザから見れば読み込みの遅いページを読み込んでる感じ。

っつーか、一つ答えたら二つ質問して返すのかオマイは。
689nobodyさん:04/01/24 19:03 ID:???
688を書いててふと思ったけど
WEB鯖のTimeOutを伸ばせば、CGIでPerlでも上手くいくかもね。

最後に無限ループさせて、チャットログに追加が合った場合、そのつどprintさせる。
JavaScriptでTimeout発生したところで再接続させるとか。

誰か書いてみない?
690nobodyさん:04/01/24 19:08 ID:c5PUM45j
原理的にはうまくいくかもしれないがなんか無理やりだよな。
691nobodyさん:04/01/24 19:15 ID:???
>>690
うん、それが682で書いた上手くないなぁの本音。

683がなんでこんな変態的なやり方に憧れてるのかは
皆目見当がつかん。
692667:04/01/24 19:23 ID:???
ブラウザがデータ受信の途中でも逐次表示するのでたまたまうまく動くって感じだよね。
目の付け所はいいと思うけど、なんか無理やりっぽくてスッキリしない。。。
つーわけで>>667の発言を「HTMLやJavaScriptでは難しい」に訂正しまつ。
まぁサーバ側はperlでもCでもなんでも書けるので
ブラウザ依存の話はそろそろスレ違いかな。
693nobodyさん:04/01/24 19:27 ID:???
そうだな、
「このC++のソースをperlで書き直すにはどうしたらいいか」という話ならこのスレでもいいんだろうが、
俺はC++がわかんないのでパス
694660:04/01/24 20:47 ID:3XmXG5Te
>>688御回答ありがとうございました。少々調子に乗ってしまい、大量に質問してしまいました。申し訳ありません
色々ヒントをいただいたのでここから先はとりあえず自力でやってみたいと思います。ありがとうございました。

>>691
いや、ここ以外にソースを見れる「リアルタイムチャット」が無かったので

皆様有難う御座いました。
695nobodyさん:04/01/24 20:48 ID:WY1eQpTp
# 自分もそんな変態的なchat作ってた内の一人だったりして。

>>689
原理的にはcgiでも可能だけど、(timeoutさえ回避出来ればsocket使わずとも方法は多数有)
Chatの利用者一人一人がhttpdのコネクションをそれぞれ一つずつ占領する事になるので、httpdのパフォーマンス低下に繋がる。
通常、接続できるクライアントの数には制限があるので、運用前にはこの点をしっかり考える事。

後、ブラウザ側のTimeOutを回避するために常に何らかのデータを送り続けていないと
いけなかった(はず)// ブラウザ依存だろうけど、IE3とか4の時代だったから最近のは知らない
696nobodyさん:04/01/25 00:37 ID:g1HBAOuP
JoyfulNoteで禁止ワードの機能を追加するにはどうすれば良いのですか?
697nobodyさん:04/01/25 01:53 ID:???
作る動機が単にそう言うチャットが欲しいっていうだけなら、
JavaAppletで作ったIRCクライアントがあったような気がするから
それ使うのが一番早い。

#とにかく自分で作りたいんだって思ってるなら別
698nobodyさん:04/01/25 04:02 ID:A2CJsmcE
かなり悩んでます。
Perlでユーザーを追加するスクリプトをコーディングしているんですが、
パスワードの作成で躓いています。

シェルの内容は以下の通りです。
#!/usr/bin/perl
open(IN, "userlist.txt");
while($user=<IN>){
@user=split(/,/,$user);
`useradd $user[0]`;
`passwd $user[1]`;
}
でuserkist.txtの内容は、
user,pass
user1,pass2
です。
パスワードの設定がどうしてもうまくいきません。
どなたかご教授お願いします。
699nobodyさん:04/01/25 04:34 ID:???
>>698
マルチポストはやめような。
700nobodyさん:04/01/25 04:40 ID:???
>>699
黙れ
701nobodyさん:04/01/25 04:44 ID:???
( ´,_ゝ`)プッ
702nobodyさん:04/01/25 09:31 ID:???
>>701
黙って無視しような。
703nobodyさん:04/01/25 16:03 ID:???
bar.cgiで使ってるfoo.pl内で%param=&httpdecode();とやると空が返り、
bar.cgi内で直接%param=&httpdecode();とやると$ENV{'QUERY_STRING'}
を渡した結果が返ってきます。

そういうものなんですか?
704nobodyさん:04/01/25 16:45 ID:A2CJsmcE
703は黙って無視しような。
705nobodyさん:04/01/25 16:52 ID:???
(´‐`).。o(ID…
706nobodyさん:04/01/25 18:04 ID:???
>>703
普通は違うと思うけど。

# httpdecode()が何か知らないから、なんとも言えないけど。
707703:04/01/25 18:39 ID:???
>>706
httpdecode()はPOST(GET)データを切り分けてるだけです。
%param=&httpdecode($data)を%param=&httpdecode()としても
bar.cgi?xxx=xx&xxx=xxなデータは普通に処理していたので、はて?と。
708nobodyさん:04/01/25 19:01 ID:???
>706の言っているように普通は違う。
だからコードに問題がある。
以上。
709nobodyさん:04/01/25 19:04 ID:???
その前に日本語をマスターしてきてくれ
710nobodyさん:04/01/25 19:26 ID:???
>>708
普通は空なわけですね
それがわかれば十分です
711669:04/01/25 19:28 ID:???
>>670
あわわ、失礼しました。

foreach $n (a,b,c,d) {
&hoge($n);
}

こういうのをhoge(a)とhoge(b)とhoge(c)とhoge(d)と
一緒にやらせたいのです。hogeがとても時間の掛かる処理なので。
どうやったらできるでしょうか。
712nobodyさん:04/01/25 19:43 ID:???
>>711
一緒にやらせたところで、かかる時間は変わらないん
713nobodyさん:04/01/25 20:00 ID:???
hoge を別プロセスにして fork すれば、一緒にやってくれるかもしれないが
>>712 の言う通りかかる時間は変わらないのが普通だろうな
714nobodyさん:04/01/25 20:14 ID:???
>>710
何が普通かお前の言ってるだけの状況じゃ全然わからんって。
勝手に一人合点して面白い奴だな。
人の話聞かない奴だって言われないか?
715nobodyさん:04/01/25 20:17 ID:???
>>711
変わらないね。
コンピュータは本質的にはシングルタスクだ。
マルチタスクに見えてもそれは、
一定時間Aをやって、次の一定時間はBをやって……と高速で切り替えているだけだから、
順番にやった場合に比べても時間は変わらない。
むしろ、切り替えにかかる時間を考えると逆に長くかかる。
考え方がいびつだなあ。
716nobodyさん:04/01/25 20:41 ID:???
待ち時間がある、例えば外部サーバに問い合わせに行って戻りを待つようなケースだと、
並列化して待ち時間を重ねることによって処理時間が短くなることも場合によってはあるが、

>>711 のはそういうのじゃないんだろうなあ
717nobodyさん:04/01/25 21:18 ID:???
たちこまですね
718nobodyさん:04/01/25 22:03 ID:???
>>714お前も突き放したいのか答えたいのかわからない奴だなw
719nobodyさん:04/01/25 22:24 ID:???
>>718
態度を改めれば回答してもいいとみんな思ってるんじゃないのか?
720nobodyさん:04/01/26 12:30 ID:???
CGIとwinアプリケーションでYahoo!メッセンジャーみたいなのを
作りたいのですが、アレの仕組みってどうなってるんですか?
俺の予想だと、
クライアントからのメッセージをサーバーサイドのスクリプトが
受信すると、それを相手側のクライアントへ送信する…ってのだと思うんです。
そうすると双方のIPアドレスに対してサーバーサイドのスクリプトが
データを送受信するってことになります。
CGIから特定のwinアプリケーションに対してデータを送信することでできるのでしょうか?
とりあえず、今はwinアプリケーションからCGIへのメッセージの送信はできました。
でも、手動でリロードしなきゃいけないんです。
自動でリロードしてもいいのですが、ほぼリアルタイムで会話したい場合、
2・3秒おきにリロードし続けるのって鯖への負荷って大きいですよね。
だからリロードしなくても、
CGIにデータが到着したら相手側に送信できるといいなあと思っています。
色々調べて頑張ってみます。
721nobodyさん:04/01/26 12:41 ID:???
質問になってない。スレタイ嫁
722nobodyさん:04/01/26 13:20 ID:???
おまえらCGICGI言ってるけどな、
CGIが何の略か分かってんの?
 Common Gateway Internet の略だぞ。
それぐらい知っとけよ。
ついでに他のも教えておいてやるよ。
 www … World Wide Window
 HTTP … Hyper Text Tensou Protocol
 FTP … File Tensou Protocol
 POP … Professional Office Protocol
        (POP2とPOP3とあるが、前者は平成2年に定義され、後者は平成3年に定義された。
         その簡便さから現在はPOP3が広く利用されている)
 PFW … Private Fire Wall
 CSS … Compact Style Sheet document
 HTML … Hyper Text Multiaccess Language
 URL … Useful Resource Locator
723nobodyさん:04/01/26 13:36 ID:???
>>720
サーバ上のCGIからPC上のブラウザにメッセージをプッシュすることは通常できない。
ブラウザというものが、サーバからプッシュされてくるメッセージを
受け取れる作りになってないから。

サーバ上のCGIからPC上のYahooMessengerにメッセージを送ることなら
Net::YahooMessenger とか使えばできんこともない。
YahooMessengerはメッセージを受け取れる作りになっているから。

ついでに言うと、YahooMessengerの動きについての君の予想は完璧に間違っていて、
メッセージのやりとりはサーバを経由しない。
PC1からPC2に直にパケットが飛ぶ。俗に言うP2Pだ。
つまりCGIともWWWとも関係ないのね。
なので、みんな「そういうのは板違いだ」と怒ってるという話。
724nobodyさん:04/01/26 17:24 ID:cjaNnlMT
print "Content-type:text/html\n\n";

CGIレスキューのフォームデコード処理

$FORM{$name} = $value;
}
@ID = ("aaa","bbb","ccc");
@PW = ("111","222","333");

$ID = $FORM{'id'};
$PW = $FORM{'pw'};

if ($FORM{'pw'} eq $PW[$_] && $FORM{'id'} eq $ID[$_] && $ID[$_] == $PW[$_]) {
print <<"EOF";
<html><head></head><body>OK</body></html>

EOF

} else {

print <<"EOF";
<html><head></head><body>NO</body></html>

EOF

exit;
}

CGIレスキューのやつなんですが、ちょっと書き換えたらダメになりました
$ID[0]と$PW[0]が合ってるときしか、OKになりません
$ID[1]"bbb"さんと$PW[1]"222"を関連付けたりってどうやるんですか
お願いします
725 ◆ymwwFPCsCI :04/01/26 17:42 ID:Aup+rhTJ
本当にくだらない質問ですけど怒らないで下さい。
Linuxを使っていて、ユーザーの自動追加スクリプトを
書いています。
useraddコマンドとpasswdコマンドを自動的に発行するスクリプトは
どのようにコーディングすればいいのでしょうか?
726FTP:04/01/26 17:55 ID:D6YSJ/rJ
FTP … File Tensou Protocolなのかぁ〜
File Transfer Protocol と思ってたよ。
有賀と>>722
727nobodyさん:04/01/26 17:59 ID:???
>>726
ツッコミいれるとこはそこだけかよ!
728nobodyさん:04/01/26 18:01 ID:???
cgiってファイルの削除できないんですか?
1年ほど自分の作ったcgiでうpロダやってるのですが、いつも手動です。
フォームに"削除"という項目があり、
該当ファイルNOと削除PASSを放り込めばとりあえず
そのファイルにアクセスすることはできなくなるんですけど…
実際のところ、renameで別のファイル名に変えてるだけで削除されてないんですよねw
削除したファイルはDL可能なときのファイル名の先頭に「dust」ってついけてrenameしてます。
「img01762.jpg」→「dustimg01762.jpg」みたいな感じです。
それでファイル名の先頭に「dust」ってついたやつがたまってきたらそれを手動で削除してるんですけど。
Win鯖だから大した作業じゃないけどcgiで削除できたら楽なのに・・・と思ってます。
何かよい方法があれば教えてください。
729FTP:04/01/26 18:02 ID:D6YSJ/rJ
あとはわかるだろ!
730nobodyさん:04/01/26 18:03 ID:???
>>724
$ID[$_] == $PW[$_]
ってあるじゃん。そりゃ$ID[n]と$PW[n]が同じ数値である時しか一緒にならんよ

>>725
怒んないけど呆れることもある。

>>722
この国はITをいんたーねっとてくのろじぃだと思ってるやつが首相になる国ですぜ
731nobodyさん:04/01/26 18:05 ID:???
>>728
http://tohoho.wakusei.ne.jp/wwwperl2.htm#unlink
他の人は教えてくれないよ。ちゃんとそのぐらいググッてね。
732nobodyさん:04/01/26 18:06 ID:???
>>728
言い忘れた
CGI≠Perl
ここはPerlの質問するとこ
733728:04/01/26 18:10 ID:???
>>731,>>732
ありがとうございます!
俺のcgiスクリプトはperlで動いてます!
734724:04/01/26 18:15 ID:???
>>730
レスありがとうございます
[""]の数字が、両方0のときにしかOKにならないんです
例えば、$ID[1]と$PW[1]のときにはNOになってしまいます

foreach $_(0..2){
if ($FORM{'pw'} eq $PW[$_] && $FORM{'id'} eq $ID[$_]) {

とかやっても$IDも$PWも[0]じゃないとOKになってくれないんです
foreachって配列を0から順番に処理するんですよね?
なのに、[1]と[2]をわかってくれません
どうしたら、わかってもらえるんでしょうか
735nobodyさん:04/01/26 18:26 ID:???
なんかうぜぇな
答える気が激萎え
736nobodyさん:04/01/26 18:29 ID:???
>>734
foreachってのは配列の「中身」を参照する。

foreach $pass (@PW){
 foreach $id (@ID){
  if ($FORM{'pw'} eq $pass && $FORM{'id'} eq $id) {
   #なんかの処理
  }
 }
}

数字で回したいのなら
for(0..$#id){
}
とか?
要は構文ミス
737724:04/01/26 18:29 ID:???
>>735
すいません…
出直してきます。ありがとうございました
738724:04/01/26 18:32 ID:???
>>736
ありがとうございます!
多分に勉強不足のようなので、出直してみます
スレ汚しすいませんでした
739711:04/01/26 18:36 ID:???
>>716
hogeの内容はデータベースへの問い合わせです。
遅いのは1プロセスあたりのリソースが制限されているからのようなのです。
(ほんとのところはわかりませんが…^^;)

試しに、リストを二分割して、2つのスクリプトで動かしたら早くなったので、
1つのスクリプトの中でプロセスを増やせたらいいのかなと。

forkしてそれぞれ別々な引数を渡すのはどうやればいいのでしょう?
740nobodyさん:04/01/26 18:37 ID:???
>>734
多分foreachを一回しか回ってないんだよ。
741nobodyさん:04/01/26 18:38 ID:???
>>736
foreach $pass (@PW){
 foreach $id (@ID){
  if ($FORM{'pw'} eq $pass && $FORM{'id'} eq $id) {
   #なんかの処理
  }
 }
}

そりゃねぇよ
別人のIDとパスで一致することも有り得るじゃん
742nobodyさん:04/01/26 18:41 ID:???
print "\n \x23 \n";
$aa = 0x23;
print "\n \x$aa \n";
sleep(8);

上の出力は#が出ますが、下のは出ませんでした。
変数で数字を指定するにはどのように記述すればよいでしょうか?
743nobodyさん:04/01/26 19:17 ID:???
>>742

print"\n \x".$aa." \n";

かな?
わかんねーけど。
744nobodyさん:04/01/26 19:18 ID:???
age
745742:04/01/26 19:21 ID:???
>>743
ちょっと違うような気がするんですが。。
746nobodyさん:04/01/26 19:21 ID:???
print >> "hoge"
このなかで関数を開くことはできないのでしょうか?
1+5 = &Culc(1, 5);とか。
hoge
747nobodyさん:04/01/26 19:40 ID:???
>>742
print "\n ". chr($aa) . " \n";

>>746
君は今日のおっちょこちょいさん大賞だ。

sub calc { return $_[0] + $_[1] }
print <<"hoge";
1 + 5 = @{[ calc(1, 5) ]}
hoge
748743:04/01/26 19:55 ID:???
>>745
すいませんでした。
749742:04/01/26 21:00 ID:???
>>7747
ぬおおぉぉぉ!
ありがとう!
750nobodyさん:04/01/26 21:33 ID:???
>>725
useraddはsystemで呼び出す。
passwdは--stdinオプション付けてパイプで流し込む。
751未承諾広告※ ◆aiY4htt2.2 :04/01/26 21:37 ID:???
$aa = 0x23;
printf qq|\n %c \n|,$aa;
こゆのも。。。
752nobodyさん:04/01/26 21:42 ID:KP+mPnoD
スレ違いだったらすいません。

apeboard+を使ってます。
掲示板に書き込んで、そのページのソースを見ると、

<!--res-->

とあるんですが、それを出ないようにできませんか?
ちなみにcgi本体もスキンも弄ってません。
753nobodyさん:04/01/26 21:44 ID:???
>>752
【 スクリプト改造工房 PART 7 】
http://pc2.2ch.net/test/read.cgi/php/1063780103/
754 :04/01/26 22:37 ID:???
なんでいまどきPerlなんですか?
755nobodyさん:04/01/26 22:38 ID:???
>>754
なんでいまどきそんなことを聞くんですか?
756nobodyさん:04/01/27 00:41 ID:???
何言ってんだYO!今はperlがナウいんだYO!ヤングな女子高生も昨日パールってさぁとか言ってるYO!
757nobodyさん:04/01/27 00:41 ID:???
やつらは「パァル」だろ。
758nobodyさん:04/01/27 00:42 ID:???
あるCGIから同一フォルダ内にある別のCGIにあるスカラー変数の値を
取得したいときはどうすればいいのでしょうか?
759720:04/01/27 00:46 ID:???
>>723
なるほど、ありがとうございます。
直に通信してるんですか。
ってアレ?じゃあ非固定IPなのにどうして・・・

って話は他でします。
ありがとうございました。
760nobodyさん:04/01/27 00:46 ID:???
requireする
761nobodyさん:04/01/27 00:50 ID:???
>>758
なんでそんなことをする必要があるのかわからんのだが。
762758:04/01/27 00:58 ID:???
例えば、チャットでの現在の参加者を普通のHTMLにSSIで表示させるとして、
参加者が格納されている変数をSSIで直接呼び出すことが出来ないので、
一旦別の単純なCGIを用意し、それをSSIで呼び出して表示させるということを
考えたわけです。で、その「単純なCGI」からチャットのCGI内にある
スカラー変数を呼び出したいわけで・・・
チャットのCGIをrequireすると、チャット本体が実行されてしまいました(汗)
763nobodyさん:04/01/27 01:01 ID:???
根本的に発想がおかしいぞ
764nobodyさん:04/01/27 01:21 ID:???
>>763
はいはい。邪魔だから消えて。
765nobodyさん:04/01/27 01:25 ID:???
>>762
スカラ変数というのは、スクリプトの中に存在するわけじゃなくて、
実行中のプロセスの中に存在するものだぞ。

チャットCGIがチャットの参加者を変数に格納したとしても
そのCGIプロセスは、100ミリ秒以内に終了して、変数の内容も失われる。

君のやりたいことを実現するには、
参加者一覧をチャットCGIからいったんファイルに書き出して
(そういうファイルは既にチャットCGIが作っていそうな気がするのだが)、
SSIはそのファイルを読み出す、
という形にするのが良さそうだと思うのだが、どうだ。
766758:04/01/27 01:39 ID:???
>>765

なるほど、一旦変数の内容をファイルに書き出すのも考えたんですが
迂遠かなあと思って・・・
それで一旦やってみます、ありがとうです。
767nobodyさん:04/01/27 01:50 ID:???
>>766
>迂遠かなあと思って・・・
ほとんどのチャットCGIがこの形式を採用してるんだが……
チャットCGIをよく読んでみなよ。
768nobodyさん:04/01/27 02:04 ID:???
チャットデーモンでも立ち上げたら?
参加者書き出さなくてもすむよ、高速だし、たぶん。
769nobodyさん:04/01/27 02:07 ID:???
>>768
見事な回答だが、それができる技術力を>>766が持っているとは思えない。残念だが。
770nobodyさん:04/01/27 02:24 ID:???
掲示板を作成しようと思ってるんですが、

1.$actionにwriteが代入されている

 yes→logファイルに書き込み
     $actionにnullを代入
     ↓
 no
 ↓
2.展開して表示

3.書き込みがされると$actionにwriteを代入
4.1に戻る

でいいんでしょうか?logファイルからの読み出しは出来てるんですけど、
logファイルへの書き込みが成功しないんです。
もしかしたらそもそもの考え方が間違ってるんじゃないか、と不安になったので、どなたがお教えいただけませんでしょうか。
771nobodyさん:04/01/27 02:36 ID:???
>>770
掲示板てどれもこんな感じだと思ふ
if ($action eq 'write') {
 write_log();
} elsif ($action eq 'delete') {
 delete_log();
} elsif ($action eq 'edit') {
 edit_log();
} elsif (...) {
 ...
}
show_log();
exit;

772nobodyさん:04/01/27 02:43 ID:???
ついこの前、探すより自分で掲示板作ったほうが早いかと思って、
自分で作ったら5時間くらいかかった。がびーーーーーーーーん。

しかも、文字コード上の問題が思ったよりウザかった。
ハッシュのキーにスレのタイトルいれてスレの内容まとめたら、大変なコトになった(←アホ

773nobodyさん:04/01/27 02:43 ID:???
>>771
書き込みをしたときに、送られてきた$actionの中身で判別する、ってことですよね?
今はまだ削除機能とか搭載できるレベルじゃないので(一昨日からperl勉強し始めたばかりなので)、とりあえずwriteだけ与えてます。
>>770の考え方で進めていっても問題ないんでしょうか?
774770:04/01/27 02:46 ID:???
ちなみに、
if($action eq 'write'){
&write
}
でサブルーチンwriteに飛ばすようにしてます。
775nobodyさん:04/01/27 02:48 ID:???
>>770
どんな掲示板かにもよるかもしれないが、
俺の場合は…
送信されるデータに書き込みかどうかを判別するデータを付加している。
俺の場合は "mode" なんだけども。
一番上に書き込みフォームがあって、下に何件か書き込みが表示されるタイプ。
こんな感じか。
---------------------------------------------------------------------------

&modecheck;              #変数$modeに"mode"の値を入れる
if ($mode eq "write"){&write;}    #mode=writeであればデコード&書き込み処理
&htmlset;                 #HTML書き出し
exit;

---------------------------------------------------------------------------
実際はもっとごちゃごちゃしてるが、
まあ簡単に書くとこんなもんだ。
776770:04/01/27 02:52 ID:???
>>775
有難う御座います。
うちもそういう掲示板にする予定なんですが、

<INPUT type="hidden" value="write" name="mode">
を書き込みフォームにくっ付ければsub writeに行くように出来る、であってますか?

書き込み送信ボタンを押したときに、writeが送られてないようなんです。
試しに
print $mode;
(うちの場合は$actionですが)
とやっても何も表示されてないので、空のような感じです。
777nobodyさん:04/01/27 02:59 ID:???
俺フィーバー
778nobodyさん:04/01/27 03:09 ID:???
>>770
自分で作ろうというのはいいけど、そういうことを聞いているようじゃ
どこかの掲示板のソースを見て何をするべきか勉強したら?
セキュリティ面とかも考えてあるのかないのか不安ありありだし
ここでマンツーマンで教わりながらなんてやめてくれよ
779770:04/01/27 03:10 ID:???
>>778
「考え方があってるのか?この方向性でいいのか?」
が知りたかったのですが、どちらともとれない言い方をなさるので尋ね返す結果になってしまうのですが。
780nobodyさん:04/01/27 03:21 ID:???
>>779
それならはっきり言うけど>>770は話にならない。
これでいいか?
781770:04/01/27 03:25 ID:???
>>771
で受け取った分岐のさせ方(訊いてない)
>>775
>>770の焼き直し(訊いてない)

ふぅ。
782nobodyさん:04/01/27 03:26 ID:???
>>779
誰もが「それでいいよ」と言わないことでわかるよね
783770:04/01/27 03:29 ID:???
どこが間違ってるかの指摘もなく分岐のさせ方(訊いてない)を繰り返しされても困りますわ。
784nobodyさん:04/01/27 03:38 ID:???
他の掲示板のソースで勉強しろと言ってるのに愚痴(訊いてない)を繰り返しされても困る
785770:04/01/27 03:46 ID:???
>>784
そうですね。すみませんでした。
786nobodyさん:04/01/27 09:54 ID:???
>>785
>>776のようにしてCGIにデータを渡したら、CGI側でも受け取る処理が必要。、
例としては、
sub modecheck{
$buffer = $ENV{'QUERY_STRING'};
@query = split(/&/, $buffer);

foreach (@query) {
($name,$value) = split(/=/);
$form{$name} = $value;
}

これで初めて$form{'mode'}からデータを読めることになる。
これの意味が分からないようなら>>784が言うとおり
スクリプトを読み漁ってみた方がいいな。
787786:04/01/27 09:57 ID:???
>>786
これはGET専用だな、スマソ
GETメソッドとPOSTメソッドの処理の違いは他所で詳しく解説されているので検索してください
788説明くどくスマソ:04/01/27 10:40 ID:???
宿泊予約システムの改良をしております。
具体的には、料金計算を行ったCGIから連絡先を入力させるCGIに
飛ばし、計算した料金をHTMLに表示させています。
今回、これまで外税表記だった物を内税に修正しておるのですが、
ハッシュ配列に保持した料金を、変数に格納、*1.05しHTMLに出力
させております。

#改良前
 if ($FORM{'adult_price1'}) {
  print "($FORM{'adult_price1'}円)<br />\n";
  print "<input type=\"hidden\" name=\"adult_price1\" value=\"$FORM{'adult_price1'}\">\n";
  $plan1 = $plan1 . "($FORM{'adult_price1'}円)<\|>";
 }

#改良後
 if ($FORM{'adult_price1'}) {
  $pinctax = $FORM{"adult_price1"}*1.05;
  print "($pinctax円)<br />\n";
  print "<input type=\"hidden\" name=\"adult_price1\" value=\"$FORM{'adult_price1'}\">\n";
  $plan1 = $plan1 . "($FORM{'adult_price1'}円)<\|>";
 }

単純にこれだけですが、
「Software error: Execution of /home/sites/*****/*****/hoge.cgi aborted due to compilation errors」
と実行時エラーが発生し改良したCGIが実行されません。
調べた結果、

  $pinctax = $FORM{"adult_price1"}*1.05;

この記述があるとエラーを起こすようです。
ご教授をお願い致します。
789nobodyさん:04/01/27 10:45 ID:???
何もしなくてもフォームから渡された値が変数に入ってると思ってる香具師結構いるんだよな
しかし態度が気に食わんわ
790bull:04/01/27 10:55 ID:8BzI4/OG
CGIを使用した掲示板で、
投稿フォームを投稿されたメッセージ一覧のページとは別のウィンドで開きたいのですが。
よろしくおねがいします。
791nobodyさん:04/01/27 10:57 ID:???
>>788
そこは問題ないんじゃないかな?
テストしてみたが動いた
aborted due to compilation errors
↑これでググってみれ
792nobodyさん:04/01/27 10:59 ID:???
>>790
質問が漠然としすぎだ馬鹿。perlの質問じゃない
793nobodyさん:04/01/27 10:59 ID:???
http://pc2.2ch.net/test/read.cgi/php/995618200/535 から誘導されたと。

<a href="./bbs.cgi?mode=putform" target="_blank">投稿する</a> が一番楽な方法だと思われ、他には
新たに書き込み用CGIを作ってやるとか。2ちゃんねるのシステムに近くなるなぁ。
794nobodyさん:04/01/27 11:05 ID:???
>786

>787

ありがとうございます。肝心な
>CGI側でも受け取る処理が必要。、
に気付かなかったです。これを元に勉強します。
795bull:04/01/27 11:06 ID:8BzI4/OG
>>793
投稿用フォームの方に特別なスクリプトはかかなくてもよいのでしょうか?

>2ちゃんねるのシステムに近くなるなぁ。
でも2ちゃんって同じ画面にでてますよね?
796nobodyさん:04/01/27 11:06 ID:???
>>789
> 何もしなくてもフォームから渡された値が変数に入ってると思ってる香具師結構いるんだよな
 わかってんだったらそこを指摘すりゃいいじゃん。

> しかし態度が気に食わんわ
 まあお前に気に入られる必要性は微塵もないわけだが。
797nobodyさん:04/01/27 11:19 ID:???
>>795
まず最初に聞いておくけど、<a href="./bbs.cgi?mode=putform" target="_blank">の意味は分かるよな?

bbs.cgiのなかに投稿フォーム画面「だけ」を吐き出すサブルーチンでも組んで、
mode=putform と来たらそのサブルーチンを実行してやればいい。要するに
ログの操作や表示をする部分とは分離させるってわけだ。
798nobodyさん:04/01/27 11:21 ID:???
>>796
それぐらい自分で調べれば解ることだ。用が無いんならキエロ
799bull:04/01/27 11:23 ID:8BzI4/OG
>>797
リンク先にとぶとかってことだと思ってます。
でも今の説明はわかりました。
投稿フォーム画面「だけ」を吐き出すCGI素材ずっと探してんですけどないんです。
素材CGIのなかの投稿フォームぶぶんだけ抜き出しても動作しないみたいですし。
800nobodyさん:04/01/27 11:27 ID:???
>>798
なあ、ここ初心者スレだよ?
別に答えを強いてるわけでもないし、造語使って質問してるわけでもないし、
状況だって簡潔に書いて、質問内容もまとめてるんだから、
端から、「何もしなくてもフォームから渡された値が変数に入ってるわけじゃない」で終わる話だったわけだよな?

で、>>786がそれについて触れるまでは潜んでて、そんで急に初心者叩きかよ。
「回答しねえんなら黙ってろ」とか言ってるわけじゃないんだ。
ただ、なんで、お前に詰られなきゃならんのだ、ってこと。
801nobodyさん:04/01/27 11:42 ID:???
>>799
<a href="./bbs.cgi?mode=putform" target="_blank">投稿</a>
これをクリックすると、bbs.cgi に「mode=putform」ってのが送られる。
これをbbs.cgi側で受け取ってから↓のように進める。(受け取りの方法については>>786で書いた通りでいいと思う)

if($form{'mode'} == "putform"){ &form; exit; } else { 通常の処理 }
sub form{
print<<"FORM"
Content-type: text/html\n
<この部分に表示したいフォームのHTMLを入れてやる>
FORM
}

漏れもいろいろ試してみてるが、多分これが一番単純な方法と思われ。
802nobodyさん:04/01/27 11:44 ID:???
>>799
なんでもかんでも君の欲しているスクリプトがあるわけじゃないんだよ
投稿フォーム画面「だけ」を吐き出すCGI素材を探しても見つからんよ
いや、見つかるかもしれないが、それを参考にして、
今あるスクリプトに組み込まなきゃいけないわけ。
結局はperlを少しくらい勉強して、今あるスクリプトがどのように動作してるかを
理解し、その上でそれを弄らなきゃいけないわけ。
で、じゃあ一から教えて下さいとか言い出すかもしれないから言っとくけど、
君に「perlってのはだね」と一から手取り足取り説明するわけにはいかないのはわかるよね?
初心者ってのは右も左もわかんなくて、本当に大変なのはわかるけど、
その分自分で調べなきゃいけないのよ。みんな調べてるの。
本当に君がその機能を実装させたいなら、
ここのテンプレにいくつかリンク貼ってあるでしょ?
そこで少し勉強しといで

>>800 君の言ってることが正しいよ大正解。だからもう来なくていいよ
803nobodyさん:04/01/27 12:32 ID:???
>>802
> >>800 君の言ってることが正しいよ大正解。だからもう来なくていいよ
 ぐうの音も出なくなったか。教えたくないんなら教えてくれなくていいから命令すんな。
お前には「だからもう来なくていいよ」とか言う権利もないし、そんな身分じゃないんだから。
804724:04/01/27 14:10 ID:???
動いたよ
超うれしい。涙でました
皆さんありがとうございました。
また、今後ともよろしくお願いします
805nobodyさん:04/01/27 14:16 ID:/ioWy3ty
data.csvが存在しない状態で
OPEN(FH,> "data.csv");
を行うと自動で"data.csv"だ生成され書き込まれますが、
サーバにアップすると自動で生成されません。

また
unlink("test.wrl");
でファイルを消す作業もローカルでは動作しますが、
サーバにアップすると動作しなくなります・・・。
どうしてなんでしょう;;
806nobodyさん:04/01/27 16:01 ID:???
>>805
環境がよくわからないので、あくまでも俺のカンで回答するが、
ディレクトリやファイルのパーミッションを疑ってみた方がいい。

apache が suExec を使っていなくて、
ディレクトリやファイルの持ち主がユーザ自身で、
そのパーミッションが 644 や 755 の場合は、
そういう症状が起きる。
807805:04/01/27 16:47 ID:???
>>806
レスありがとうございます。
CGIファイルや書き込み、削除するファイルのパーミッション
ばかりいじっていて、ディレクトリのパーミッションを見落としてました^^;

ディレクトリのパーミッションをいじったら無事解決出来ました、
ありがとうございますm(_ _)m
808nobodyさん:04/01/27 16:54 ID:???
>>788
 「use utf8」とか宣言してない?していれば、
>  print "($pinctax円)<br />\n";
のうち、
「$pinctax円)」の部分が「変数名」であると解釈される。
809bull:04/01/27 17:41 ID:vAUQj7Yj
>>801
>>802
本当ありがとうございました。
何とかなりそうな感じです。
全くです。
自分で勉強してから助けを求めることにいます。
お手数かけてすみませんでした。
810nobodyさん:04/01/27 19:43 ID:???
>>801
>($form{'mode'} == "putform")

ん?
文字列のときは 「==」 じゃなくて 「eq」 じゃなかったっけか?
811nobodyさん:04/01/27 20:28 ID:???
文字コードを変換するとき、
 $buffer=~s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg;
としているのですが、
この場合 「jcode.pl」っていらないですよね?
812nobodyさん:04/01/27 21:13 ID:???
>>811
>$buffer=~s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg;
これはエスケープエンコーディングを元のキャラクタに戻す処理。
jcode.plはキャラクタセットの変換ライブラリ。
813nobodyさん:04/01/27 21:19 ID:???
文字コード変換だけなら、jcode.plのみ使う。
フォームからデータ受け取るなら両方付けておく。
814811:04/01/27 21:21 ID:???
>>812
ありがとうございます!
815811:04/01/27 21:22 ID:???
>>813
なるほど。
ありがとうございます。
816nobodyさん:04/01/27 22:05 ID:???
ほんまにわかったんかい
817811:04/01/27 22:29 ID:???
>>816
はい。

$buffer=~s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg;
だけだと文字コードが統一されていないので、
requireで"jcode.pl"を呼び出し、
&jcode'convert(*buffer,'sjis');
をすることによって文字コードをsjisにする。

ってことですよね?
818nobodyさん:04/01/27 22:38 ID:???
>>817
大正解!!!さすがだ。やれば出来る子だとは思ってたよ。
819nobodyさん:04/01/27 22:39 ID:???
あ、半角カナ入てっと化けるから注意
820nobodyさん:04/01/27 23:20 ID:???
pack("C", hex($1))
pack("H2", $1)

俺は後者派
821811:04/01/27 23:51 ID:???
>>818,>>819
あ、それで半角カナは全角になおすんですね。
ありがとうございます。
822801:04/01/28 07:42 ID:???
>>810
訂正サンクスです
823nobodyさん:04/01/28 12:19 ID:???
カウンタ作成中です。
sub counter {
if (open COUNT,"+>test.txt"){
$count = <COUNT>;
$count++;
print COUNT $count;
} else {
print "Cannot Open File <BR>\n";
}
return $count;
}
とゆうサブルーチンを読み込んでみると
「Cannot Open File」
となってしまいます。
return $count;してほしいんですが・・
どこが間違ってるのか教えてください。
824nobodyさん:04/01/28 12:52 ID:???
>>823
つまり 「open COUNT,"+>test.txt"」 ができないってことだよな。
test.txtのパーミッションは合ってる?
825746:04/01/28 13:05 ID:???
>sub calc { return $_[0] + $_[1] }
>print <<"hoge";
>1 + 5 = @{[ calc(1, 5) ]}
>hoge

なるほど、こうやると関数が呼び出されるんですね。
参考までにこれはどのような考え方をすれば良いのでしょう?
#配列を出力するようにみせて、配列内で関数を呼ぶ???
出力方法として決まった方法なのでしょうか。
826nobodyさん:04/01/28 15:27 ID:???
ルーチンチンから返ってきた値を配列とみなして表示してるんだべさ
827nobodyさん:04/01/28 17:57 ID:???
>ルーチンチン

なんかツボに入ってワロタw
828nobodyさん:04/01/28 18:09 ID:???
dat.txtに
id1:pass1
id2:pass2
と登録された順に追加していくスクリプトを作成したのはいいのですが
これを整形して表示するときはどうしたらよいでしょうか?
一つだけタグ作ってあとは行数分同じタグを出力したいのですが
どうすればいいでしょうか?何かわかりにくい質問ですがお願いします
829nobodyさん:04/01/28 18:13 ID:???
なに言ってるのか訳ワカメ
タグ???何が?
830nobodyさん:04/01/28 18:23 ID:???
>>828

print "<table>\n";
open(IN, "< dat.txt");
while(<IN>) {
chomp;
my($id, $pass) = split/:/;
print " <tr><td>$id</td><td>$pass</td></tr>\n";
}
print "</table>\n";

831nobodyさん:04/01/28 18:24 ID:???
>>823
それと "+>test.txt" だと書込優先 open なので test.txt の
中身が空になると思うのだが。

>>825
calc() の戻り値から成るリストの無名配列を作り、変数展開
コンテキスト内で配列変数として評価する為にデリファレンス
している。

my $list_ref = [ calc(1, 5) ];
my @list = @{$list_ref};
print "1 + 5 = @list\n";

>>828
printf "<dt>%d</dt><dd>%s</dd>\n", /(\d+):(.+)/ while <DAT>;
…という事か?
832nobodyさん:04/01/29 00:08 ID:???
変数に入っている物が、(型ではなく)数字か文字列かを見分けるには
どのようにすれば良いんでしょうか?

正規表現以外の方法が思いつかなくて。。。
833nobodyさん:04/01/29 00:18 ID:???
>>832
数字ってか数値な。数字の文字列もあるから

正規表現以外で実現したい動機は?
834nobodyさん:04/01/29 00:26 ID:???
一つの変数に数値が入っているのか、文字列が入っているのか
分からない状況ってどんな状況だ?
835nobodyさん:04/01/29 00:27 ID:???
>>833
型は関係ないので数字でも数値でもいいでふ。
正規表現を使うとなんか重いから。
いろんなプログラムで使いまわすための関数(インポート式のモジュール)作ってて、あんま重くしたくないんすよ
836nobodyさん:04/01/29 00:29 ID:???
>>834
コマンドライン打ち間違えの致命的エラー回避、外部入力からの文字列検査、いろいろあると思いますが…
837823:04/01/29 00:37 ID:???
>>823 です。ご報告遅くなり、もうしわけありません。

>>824さん。ありがとうございます!
まさにそのとおりで、test.txtのセキュリティfで
「IUSR_**」にフルコントロール権限をあたえたらできました!

まさかこんなことだったとわあああああ!!
って感じです!Perlに自信がなく、「+>」とかあやっしいいいいー
とか、かなり間違ったところばかり目が行ってしまいました。

さらに >>831さん。
えっと・・いろいろ書き換えてやってて、最終的にどうだったか忘れました・・・

ごめんなさい。学校でやっていて、いつのまにか2が読めなくなってて・・・
今、家に帰ってきて書き込んでいます。

みなさまの生暖かい声援のおかげで、どうにかなりました。
本当にありがとうございました。
838nobodyさん:04/01/29 00:37 ID:???
動機が不明瞭だな。
839nobodyさん:04/01/29 00:43 ID:???
>>832
'hoge' '123' '44,000' '12foo' bar34'

お前の言う「数字」「文字列」ってのがよくわからん。
上の例をそれぞれ分類してくれ。話はそれからだ。

つか、正規表現で重いって言ってるが、他の処理で軽くなる可能性があるとは思いにくい。
840nobodyさん:04/01/29 00:49 ID:???
全くの想像だけど一般にいう数字じゃないのかね?
123とか10.5とか
40,000とかの,が入るのは微妙だな
841nobodyさん:04/01/29 00:50 ID:???
数字と数値を混同するのはよくないと思う
842nobodyさん:04/01/29 01:00 ID:???
「重い」と言ってる奴はベンチも取らずにイメージだけで言ってるのが多い。
843nobodyさん:04/01/29 01:06 ID:???
Perl使いならそこまで細かなところに軽さを求めるものじゃないと思う。俺哲学
844nobodyさん:04/01/29 01:07 ID:???
試しに perl 5.8.2 でベンチマーク取ってみたところ、
if($a == $a+0) よりも if($a =~ /^\d+$/) の方が速かった。
またひとつ勉強になった。
845nobodyさん:04/01/29 01:07 ID:???
>>839
123これを数字と思って話してました。
44,000は今、数値用の単行演算子と通常の数字演算子でtestしてみたら、44と認識されてるみたいっすね。
と言うか今気付いたんですが、数値用の単行演算子(randとintを実験使用)に 'あああ' とか文字列しても実行エラーにならないんですね!
騒がせておいてあれですが、解決したので引き取らせてもらいます。すみません。

>>842
ちょっと他の処理と実行時間を比べようと思ったんですが、正規表現しか思いつかなかったので。。

846nobodyさん:04/01/29 01:12 ID:???
確かにながーい文字列を正規表現すると速度に影響は出るけど、
数値チェック程度じゃ影響は出ないよ。

影響が出るとすれば事前の文字列長チェックが甘い。
847nobodyさん:04/01/29 01:14 ID:???
>>834
数値か文字列のどっちかが欲しいだけなら
$var += 0
$var = "$var"
>>839 みたいなことしたいなら、素直に正規表現使え
848nobodyさん:04/01/29 04:14 ID:???
my ($agent) = ($ENV{'HTTP_USER_AGENT'});
if ($agent =~ /J-PHONE/){
$method = 'get';
} else {
$method = 'post';
}

とやってみたんですが、J-PHONEのUAでアクセスしても
$methodの中身がpostになっちゃうんですが、どうしたらいいですか?
849nobodyさん:04/01/29 04:20 ID:???
知らんけど、とりあえず print $agent; とかしてみろよ。デバッグの基本。
850nobodyさん:04/01/29 04:30 ID:???
>>849
Operaで試してみたら(peraを含む文字の場合、に変更して)、出来ました。
Operaだと、$agent;は出るんですが、IEだと出なかったんです。

他のブラウザでも試すべきでした。
ただ、なぜIEで出ないかは依然不明です。
851850:04/01/29 04:31 ID:???
言葉足らず

print $agent; とやったらUAがOperaでは出たんですが、IEでは何も表示されませんでした。

です
852nobodyさん:04/01/29 04:36 ID:???
まあUAは自己申告制だから。少なくとも携帯ならUA吐くだろう。
853nobodyさん:04/01/29 07:54 ID:???
携帯用は作った事ないんで、良く分からないんだけど
/J-PHONE/i とかしてみれば。
854nobodyさん:04/01/29 07:59 ID:???
>853
エラーになりました。
855nobodyさん:04/01/29 08:42 ID:???
とりあえず、すべての環境変数を表示してなにが取得できているかチェックするのがよろし。
print %ENV;
856nobodyさん:04/01/29 10:39 ID:???
プログラム板の方でも聞いたのですが、
ほとんど答えがいただけなかったので、こちらでもお願いしてみます。

while(<>) { if (/errorが発生/i) { print; } }

を、jperl5005→perl582用に書き換えようとして、

use encoding "sjis";
use open ":encoding(sjis)";
binmode STDERR, ":encoding(sjis)";

while(<>) { if (/errorが発生/i) { print; } }

とやったら、実行時間が10倍以上かかるようになってしまいました。
何か対処方法とか、勘違いとかありますでしょうか?

582でも
if (/errorが発生/) { print; } や
if (/[Ee][Rr][Rr][Oo][Rr]が発生/) { print; } は
10倍時間とかにならないので、/i に何らかの問題(相性?)がありそう、
というところまでは自力でわかったのですが。
857825:04/01/29 10:48 ID:???
>>826>>831
ルーチンチン。非常に勉強になりました。
858nobodyさん:04/01/29 11:03 ID:???
リファレンスについて質問です。
@foo = (0..2, 0..2);
$bar{"foobar"}= \(0..2, 0..2);

print << "END_OF_PRINT";

@foo
@{$bar{"foobar"}}

END_OF_PRINT

とすると、@fooは012012となるのですが
$bar{"foobar"}の方は012だけになります。
簡単に@fooと同じように表現できないでしょうか?
859nobodyさん:04/01/29 11:19 ID:???
>>858
そのコード実行すると
Not an ARRAY reference at hash.pl line 4.
になるよ。
860nobodyさん:04/01/29 11:20 ID:???
$VAR1 = {
'foobar' => \2
};
861nobodyさん:04/01/29 11:20 ID:???
$bar{"foobar"}= [0..2, 0..2];
862nobodyさん:04/01/29 13:27 ID:???
863nobodyさん:04/01/29 13:30 ID:XNrQ/XgQ
こんにちは、質問ですが、別のサーバーのログに書き込むのってどうやってするんですか?

目的はチャットのログを2つのサイトで共有したいのです。

ちなみに書き込み&読み込みをフルパスでしましたができませんでした。

セーブするファイル形式はtxtでもなんでもいいのでご返事の方よろしくおねがいします。
864nobodyさん:04/01/29 13:35 ID:???
無理だろ
socketでややこしいことしたらできるかな
865nobodyさん:04/01/29 13:37 ID:???
nfs とか
ロックをどうかけるかは知らない
866nobodyさん:04/01/29 13:39 ID:???
>>863
そうですね・・・
socket使えばできないこともないでしょう。

WinOSならある程度簡単なのを一つ二つ思いついたが…
実用的ではないな。
867nobodyさん:04/01/29 14:10 ID:???
a鯖のログをb鯖にソケットで送って、
それを受ける側でロック何なんなりもした上で追加すれば出来るので和?
ソケット詳しくないんで憶測。
868nobodyさん:04/01/29 14:38 ID:???
socket を受けるには
プロセスが daemon みたくずっと常駐してないといかんような気がするが
そういうことってそのサーバ上でできるの?
869nobodyさん:04/01/29 14:40 ID:???
httpd はじょーちゅーしてるけどなにか?
870nobodyさん:04/01/29 14:49 ID:???
LWP で POST して、相手も CGI で受けるのなら、OK だな
871nobodyさん:04/01/29 15:02 ID:???
いっそログをファイルじゃなくPostgreSQLみたいなRDBで管理しる
両方のサーバからDBまで接続しにくれば宜しい
ロックもDBのトランザクションで管理すれば勝ち
872nobodyさん:04/01/29 15:46 ID:???
>>856
 理由はよく解らんが、以下は私の想像ということで....
・Perl5.8 では sjis にも対応しているが、内部処理は全て utf-8 で実行
される。
・utf-8 に対応したとき、マルチバイト文字にも大文字・小文字があるため、
照合・置換関数のオプションに"i"を付けたとき、それに対応しようとする。
その処理が非効率的であるために時間を取られていると思われる。
 以上の想像が正しいとすると、

while(<>) { if (/error(.*)/i && $1 =~/^が発生/) { print; } }

 にすると、かなり速くなると思われるが、どんなもんでしょうか。
873nobodyさん:04/01/29 17:13 ID:3F2OSt0J
$aaa = "aiueo aaa ";
$aaa =~ s/\s$//;
print "$aaa";

文字列の最後にスペースが付いたらそれを除きたいのですが、
これだと1個しか取れません。
874nobodyさん:04/01/29 17:19 ID:???
・・・
・・・
・・・


・・・で?
875nobodyさん:04/01/29 17:29 ID:3F2OSt0J
複数取れる方法を教えて下さい。
876nobodyさん:04/01/29 17:39 ID:???
$aaa =~ s/\s\s$//;
877nobodyさん:04/01/29 17:45 ID:???
>>873->>876
ワロタw
878nobodyさん:04/01/29 17:59 ID:???
いいよいいよ、いい空気だw
879nobodyさん:04/01/29 18:02 ID:???
>>874,876
オマエ、いいヤツだな。正直見直した。
880874:04/01/29 18:47 ID:???
残念ながら俺は>>876では無い。
>>876ワラタ
解決!
881nobodyさん:04/01/29 19:37 ID:???
$aaa =~ s/\s$//;
$aaa =~ s/\s\s$//;
$aaa =~ s/\s\s\s$//;
(略
$aaa =~ s/\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s$//;

これで 16個まで取れるようになりますた
882nobodyさん:04/01/29 20:19 ID:???
>>876
禿藁w
883nobodyさん:04/01/29 20:46 ID:???
みんな不親切だな

$aaa=~ s/\s{20}$//;

これで冗長にならなくて済むよ。20の末尾スペースを一気に取り除く技
884nobodyさん:04/01/29 20:56 ID:???
$aaa =~ s/\s$//$;
$aaa =~ s/\s\s$//$;
(略
$aaa =~ s/\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s$//$;
$aaa =~ s/\s{17}$//;
$aaa =~ s/\s{18}$//;
(略
$aaa =~ s/\s{32}$//;

32個まで対応しましすた
885nobodyさん:04/01/29 21:05 ID:???
みんな素直じゃないなぁ。ちゃんと教えてあげようよ、
その方法だと、スペースが4つの時とかにスペースが一つ残ってしまうよ。

$aaa =~ s/ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? $//;

これでスペース40個まで対応だ。
886nobodyさん:04/01/29 21:24 ID:???
みんなわかってないなぁ
$aaa =~ s/.*//;
これで何も考えないで済むよ
887nobodyさん:04/01/29 21:34 ID:???
 教えて下さい。
 アスキーアートを出力したり、改変する Perl スクリプトを
組もうとしています。使用するフォントは「MS Pゴシック 中
(12ポイント)」(IE標準) です。
 この条件下で、各文字の幅を取得する必要があるので、文字が与え
られると、その幅(ドット数)を返す関数が必要です。
 以下のような関数を作成しようとしたのですが、正直言って疲れます。
もっと「まし」な方法は無いでしょうか?
 環境はWin2000 + ActivePerl 5.8 です。
 
sub get_char_width{
shift @_;
return 3 if /.,:;'il/;
return 4 if /|!{}jjiI.,:;'il゙/;
return 5 if /()[] _f/;
     :
   (以下略)
888nobodyさん:04/01/29 22:03 ID:???
>>887
お前、Pゴシックの「P」はプロポーショナルだって事知ってて質問してるんだろうな。
それなら、HDC取得してGetTextExtentPoint32で取れ。
知らないならあきらめろ。
889nobodyさん:04/01/30 00:13 ID:???
P-chan
890nobodyさん:04/01/30 00:17 ID:???
>>889
なんでうちのハムスターの名前しってんだ?
891887:04/01/30 00:59 ID:???
>>888
とほほ...。
やっぱりそれしか無いですか。
Win API のことはよく解らないので、頑張って
get_char_width を完成させるようにしましょう。
892nobodyさん:04/01/30 09:42 ID:???
>>891
正直、WinAPI の勉強した方が「マシ」な方法だよ。
ドカタみたいなことすんな。
893nobodyさん:04/01/30 10:21 ID:YQ5dcM/M
perlでtelnetすることって出来ますか?
とりあえず、ログインして、ps -aux だけしてその結果を取得できると
いいのですが。
894nobodyさん:04/01/30 10:28 ID:r6WYD04X
hoge.shtmlとfoo.cgiがあり、
hoge.shtmlのなかに上下に2つfoo.cgiをexec cgiで呼び出す記述をし、
foo.cgiの方で、UserAgentを見て携帯電話の時とPCの時に処理を分け、
それぞれ表示させてるんですが、
携帯ユーザーの時は、上下2つあるうちの下の方は、
何も表示させないようにしたいんです。

cgiからの戻り値をssiに渡すことができるなら、
cgiから、表示させる文字列に加えて、携帯の時はフラグとして1を返し、
フラグが立ってたら下のexec cgiは実行しないような書き方をすると
出来るのではないかと思うのですが、、
何処を探してもそういうことが出来ると書かれたところを見つけられませんでした。

ssiスレを探しましたが無いようで、こちらに書かせていただきました。
何かいい方法無いでしょうか?

#ssi側でUAを判定することで下のexecをさせなくすることはできるのですが、
#cgi内でも表示させる文字列を分けるためUA判定する必要があるので、2度でまなんです
895nobodyさん:04/01/30 10:32 ID:???
つまりssiとcgiで、変数を共有、若しくは戻り値、引数として値を渡せないかということです。
896nobodyさん:04/01/30 10:32 ID:???
ここはPerlスレだ
897nobodyさん:04/01/30 10:44 ID:???
すいませんでした。CGIスレ逝きます
898nobodyさん:04/01/30 14:11 ID:???
全ての自称初心者君へ。

「Perl で何々ができますか?」系の質問する前に perlfaq 読め。
http://www.kt.rim.or.jp/%7ekbk/perl5.005/
http://perldoc.com/perl5.8.0/pod/perlfaq.html

あと、自分がやろうとしている事は大抵誰かが先にやっていると思っとけ。
そのノウハウの蓄積は CPAN にモジュールの形で置いてある。
http://search.cpan.org/
899nobodyさん:04/01/30 16:23 ID:???
質問です。
1:CGIで他のサーバに置かれた画像ファイルを読み出したい
2:open FILE, "http://hoge〜";等は無理でした
3:Net::HTTPモジュール等を使用し、一度ローカルに保存すればうまくいくらしい
 のですが、CGIですのでNet::HTTPが使えるかどうか不明。

ということで、例えば
<img src="hoge.cgi?url=http://hoge.com/piyo.png">
といった風にページに組み込んでhttp://hoge.com/piyo.pngを表示させたいので
すがどのようにすればよいでしょうか。

CGIスレとPerlスレ、どちらに書けば迷ったのですがCGIスレのほうがよければそち
らで出直してきます。
900nobodyさん:04/01/30 16:30 ID:???
>>742,>>747に近いと思うんですが、うまくいかないので聞かせて下さい。
POSTで受けた\x82\xb3 とかの文字"列"をSHIFT_JISで
表示させるにはどうすればいいですか?

print "\x82\xb3" とやれば表示できるのですが、
read(STDIN,$str,$ENV{"CONTENT_LENGTH"})で取り出した$strを
printすると、そのまんま表示されてしまいます。
901nobodyさん:04/01/30 16:33 ID:???
[Fri Jan 30 16:23:59 2004] [error] [client 127.0.0.1] malformed header from script. Bad header=<br><br><br><br><br>: test.cgi,

このエラーの原因は何でしょうか?
調べたところヘッダーが不正らしいのですが、不正なヘッダーは出力していないのです。
Perl5.6、Apache2.0.43、Windows2000です。
902nobodyさん:04/01/30 16:41 ID:???
>>899
さんざん既出の話だが、実際にあるホスト名を使うのはイクナイ。
example.comとか使おうな。

>CGIですのでNet::HTTPが使えるかどうか不明。
標準添付のモジュールでネットワーク扱えるのはIO::Socketだけじゃないかな。
しかもHTTPの面倒は自分で面倒見なくちゃいけないし。

諦めて標準添付じゃないモジュールを使うか、IO::Socketでガンガるかのどっちかだな。
必要なモジュールを一緒に添付するって手もあるが。

>>900
意味分からん。

>>901
>調べたところヘッダーが不正らしいのですが、不正なヘッダーは出力していないのです。
君の調べ方が多分間違ってる。
どうやって調べてどういう結果が得られたから、不正なヘッダじゃないと判断したのか教えてくれ。
903900:04/01/30 16:49 ID:???
すんません。
"\x82\x97" を "w"と表示させたいんですが
"\x82\x97"のまま出力されてしまいます。
904nobodyさん:04/01/30 16:51 ID:???
>>903
俺の環境では unescape しさえすればちゃんと表示されるんだがな
ひょっとして "\x80" と "%80" がごっちゃになってないか?
905nobodyさん:04/01/30 16:57 ID:???
>>899
自鯖ならモジュール突っ込む
レンタル鯖で突っ込めないなら、使えるの調べるべし
foreach(qw(LWP::Simple Net::HTTP)) {
eval("use $_;");
my($version) = '$'.$_.'::VERSION';
print "$_ : ".eval("$version;")."\n";
}
って感じで何使えるか調べられるぞ

>>900
$a = "\x82\xb3";
で変数に取り込んでからShift_JISにコンバートは?
print "\x82\x97"で w と表示されるなら取り込めると思うが・・・
906901:04/01/30 16:58 ID:???
>>902
HTMLで出力するのですが、その際には専用の関数を使って出力しています。
&Header;
print "hogehoge";
&Footer;
またエラー前後でヘッダー関連の変更は行っていません。
また<br><br><br><br><br>という出力もありません。
907nobodyさん:04/01/30 17:04 ID:???
>>906
じゃあその専用の関数がおかしいんだろ
908900:04/01/30 17:09 ID:???
>>904
いや、間違いなく\x82です。
$value =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("C",hex($1))/eg;
でデコードしてるんですが、もしかするとここがマズいんでしょうか。
909900:04/01/30 17:14 ID:???
小出しにすると余計わからなくなりそうなんで、
POSTの読み取り部全部書いてみます

read(STDIN,$str,$ENV{"CONTENT_LENGTH"});

@src = split('&',$str);
foreach(@src){
($variable,$value) = split("=");
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$value =~ s/\r\n/\n/g;
$value =~ s/\r/\n/g;
$cgi{$variable} = $value;
}

print $cgi{"hoge"};
910nobodyさん:04/01/30 17:56 ID:???
>>909
printf ("%s", $cgi{"hoge"});
911900:04/01/30 18:01 ID:kjxlq4kM
>>910
同じです・・・。
912nobodyさん:04/01/30 18:16 ID:???
>>900

$test = "\\x82\\xb3";
while ($test =~ s/\\x([\d\w]+)//){
  $char .= chr(oct("0x$1"));
}
print "$char \n";
913nobodyさん:04/01/30 18:18 ID:LRfxaIu4
IPアドレスが書かれたファイルから一行ずつ取り出して wget http://www...[取り出したIPアドレス]
と言う風に自動でweget接続したいのですが、「while文」というのを
書けばいいのでしょうか?
なにか必要な制御文?ありましたら教えてほしいのです


====== SPAM.txt =======
61.149.25.4  --> wget http://www... を順に繰り返す
61.149.26.199
61.149.79.7
61.49.138.183...
=======================
914nobodyさん:04/01/30 18:22 ID:???
おっと。912 の2行目の \d はいらない。
915900:04/01/30 18:25 ID:???
>>912
ばっちりです、ありがとうございました。
単純に出るかと思いきや、こんな事になるとは・・・。
916nobodyさん:04/01/30 18:29 ID:???
>>902
hoge.comってあったんですね(汗
失礼しました。

>>905
ありがとうございます、モジュール使う以外に方法はないってことですね。
それで調べて使えそうならその方法で試してみます。

ありがとうございました。
917nobodyさん:04/01/30 18:48 ID:LLMKM8sm
いろんなソースを見ていると
GET : {
〜〜〜
〜〜〜〜
} #END OF GET

みたいな事が書かれてあったのですがこれはどういうことなのでしょうか?
サブルーチンでもないし、オブジェクト指向とかならパッケージ宣言しなきゃ
だめですよね?
perl初心者で大体の文法などは把握できるようになってきたのですが
これだけがどうしても分かりません。
検索しようにも:[が記号の為引っかけることができなくて・・。
よろしければ教えて頂けないでしょうか?
918nobodyさん:04/01/30 18:56 ID:???
>>917
http://www.kt.rim.or.jp/~kbk/perl5.005/perlsyn.html#Simple_statements
の下の方 LOOP: { 〜 }

perldoc とかちゃんと読んでる?
919nobodyさん:04/01/30 19:01 ID:???
>>906
content-type:text/html;
を吐いてる?
920nobodyさん:04/01/30 19:11 ID:???
>>913
wgetにfile読み込みのオプションがあるはず。
--base=URLと組み合わせて使う。 例) wget --base=http://example.com/ -i url.list
921nobodyさん:04/01/30 20:06 ID:???
>899
著作権法違反。
922nobodyさん:04/01/30 20:11 ID:???
>>891
Win32::GUIパッケージのWin32::GUI::FontにGetTextExtentPoint32があるよ。
# 使い方がサパーリ分からなかった。。

>>900
print eval qq{"$str"};

>>901
以前、ヒアドキュメント使っていたら、何かのエラーで出た記憶が。
答えじゃなくてごめん。
923nobodyさん:04/01/30 21:18 ID:???
>>918
perldocは読んでませんでした。
ありがとうございました。
紹介して頂いたHPやラベルとブロックと言う単語を頼りに
検索することで理解できました。
これからはperldocを熟読していこうと思います。
924900:04/01/30 21:22 ID:???
>>922
まだ理解できていませんが、表示が一発なのは確認できました
ありがとうございます。
925899:04/01/30 21:41 ID:???
>>921
どこがどう著作権法違反なのでしょうか。
CGIの想定動作としては、サーバA上のページからサーバB上のCGIを呼び出したときに、
サーバA上の画像ファイルを表示させるといったものなのですがどこかまずかったでしょ
うか?

そして>>899の問題はuse Socket使うことで解決しました。
アドバイスをくれた方、改めてありがとうございました。
926nobodyさん:04/01/30 21:52 ID:???
>925
自分の画像なら問題ないよ。
自分の画像なら別鯖に置く必要性をあまり感じないけどね。
負荷と転送量を増やすだけだし。
927899:04/01/30 22:08 ID:???
>>926
それは大丈夫…だと思いますが利用者のモラルに任せるしかないですね。
ありがとうございました。
928912
>>922
> print eval qq{"$str"};

 素晴らしい!目が覚めるようです。