【Perl】初心者コーナー Part17

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

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

1と3が無いと誰も答えられないよ。
良い回答は良い質問から。一緒に勉強しましょう。

CGIだけど、なんか質問ある? Part 8
http://pc.2ch.net/test/read.cgi/php/1032704121/
参考書籍の話題は【Perl,CGI】参考書籍 第三版
http://pc.2ch.net/test/read.cgi/php/1030209573/
その他の雑多な話題は、【CGIに依存しないPerlの話題一般/Part2】
http://pc.2ch.net/test/read.cgi/php/1030548610/
スクリプトの改造依頼は 【 スクリプト改造工房 PART 5 】
http://pc.2ch.net/test/read.cgi/php/1028193595/

過去ログ、その他の役立ち情報は>>2-10あたりを見よう。
2nobodyさん:02/10/14 17:25 ID:???
2
3 ◆Go4ZKngPGE :02/10/14 17:29 ID:???
[過去ログ]
Part1 http://tako.2ch.net/test/read.cgi?bbs=perl&key=957208980 参照不能
 DAT: http://tako.2ch.net/test/read.cgi?bbs=perl&key=971817087 参照不能
 DAT: http://tako.2ch.net/test/read.cgi?bbs=perl&key=979894521 参照不能
 DAT: http://tako.2ch.net/test/read.cgi?bbs=perl&key=984430156 参照不能
 DAT: http://tako.2ch.net/perl/dat/979894521.dat
Part5 http://pc.2ch.net/php/kako/988/988728069.html
Part6 http://pc.2ch.net/php/kako/996/996075607.html
Part7 http://pc.2ch.net/php/kako/1000/10002/1000267444.html
Part8 http://pc.2ch.net/php/kako/1003/10039/1003900311.html
Part9 http://pc.2ch.net/php/kako/1009/10095/1009549309.html
Part10 http://pc.2ch.net/php/kako/1014/10145/1014556702.html
Part11 http://pc.2ch.net/php/kako/1017/10172/1017201229.html
Part12 http://pc.2ch.net/php/kako/1019/10199/1019917048.html
Part13 http://pc.2ch.net/php/kako/1022/10227/1022731565.html
Part14 知らん
Part15 http://pc.2ch.net/test/read.cgi/php/1028816385/
Part16 http://pc.2ch.net/test/read.cgi/php/1032070299/

[ひまぢん氏のミラー]
Part1 http://www.angelfire.com/ak5/2ch-web-program/kako/957208980.html
Part2 http://www.angelfire.com/ak5/2ch-web-program/kako/971817087.html
Part3 http://www.angelfire.com/ak5/2ch-web-program/kako/979894521.html
Part4 http://www.angelfire.com/ak5/2ch-web-program/kako/984430156.html
Part5 http://www.angelfire.com/ak5/2ch-web-program/kako/988728069.html

コピペしただけなんで誰かフォローおながいすます。
4前の973:02/10/14 17:39 ID:???
http://www.perlpress.com/perl/gres
例の通りに実行しても全然動かないのですけど、どうやれば動くのでしょうか?
以下は何もおきずに終わります。
perl gres.pl -e 's!and!or!g' *.txt

以下は"Processed 0 files." と表示されて終わります。
perl gres.pl -v -e 's!and!or!g' *.txt

ファイルを見つけられないのかとファイル名を直接指定すると、
perl gres.pl -e 's!and!or!g' readme.txt
GLOB(XXXX) ←こんなのが画面いっぱいに表示されて、readme.txt は 0 バイトになってしまいます。

未解決なので引き続きおながいします。
まだ動かないので...
5 ◆hhGmOG73gc :02/10/14 18:29 ID:???
                            / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
             ┷===〓□┘ ∧=∧  <  コテは皆殺しだゴルァ!
                 _┗ __(゚Д゚ )__\__________________
   ____        / ̄ ̄ > 7 /   /==|=== ̄||
  〇 )))) )) ̄ ̄ ̄ ̄ ) ̄))  // Г/ 〇)./ ▽  |  ⇒⊥______
    ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|回 ̄] (( /_7  " /     | ☆ / \  >   ヽ
            __ >――ゝ __ /____ |__\_ノ__ ノ__ノ
          ∠__ / ̄ ̄ ∠___// ̄ ̄◎ ̄ ̄◎ ̄ ̄ ̄◎ ̄ ̄¬}
           〈==={\ ̄ ̄ 〈==={ (◎)                (◎)/
            ゝ==\\_  ゝ== > ((◎) ((◎) ((◎) ((◎)((◎) /
              ゝ==ヽー ̄ ̄ ゝ==ヽ===========
6nobodyさん:02/10/14 18:33 ID:???
固定=低スキル
7nobodyさん:02/10/14 18:34 ID:???
歴代固定は糞ばっか
8デフォルトの名無しさん:02/10/14 20:09 ID:???
コテハンだったって、何も目くじら立てることないと思うけどな。
9nobodyさん:02/10/14 20:20 ID:BFM6g6aW
2chのsubject.txtを取得してcgiが置いてあるフォルダにコピーしたいのですが
soket→connectでsubject.txtの内容を$aに格納してclose
フォルダにあるsubject.txtに$aを書き込むと言う形をとろうとしても
subject.txtには何も書き込まれていないと言う状況です。
どのようにしたらいいのでしょうか?
10nobodyさん:02/10/14 20:31 ID:???
system('wget','-O path/file','www.2ch.net/xxx/subject.txt');
119:02/10/14 20:58 ID:b64mpFF2
>>10
ありがとうございます。
システムコマンドは全く解らないんですが
システムコマンドを使う場合コピーはどうしたらいいんでしょうか?
12nobodyさん:02/10/14 21:51 ID:???

>>1

   お い テ メ エ

       ち ょ ー し の ん な よ ! ! ! ! ! ! !

131@ ◆Go4ZKngPGE :02/10/14 22:20 ID:???
前スレに書いたけど、このトリップは
#コテハン
だよ。スレ立てのためだけに使ったんだよ。
そんなに必死にならなくてもボク自身は初心者だよ。
コテハン使いたかったキミもそうでないキミも
みんなで仲良く使えばいいじゃん。ネ。
#コテハン
14nobodyさん:02/10/14 22:32 ID:???
system関数は、そのPerlが動いているシステムに依存するから
一般的なことは書けない。WindowsなのかLinux|Unixなのかで
違いますから。
15nobodyさん:02/10/14 22:41 ID:???
>>11
wgetというコマンドラインのダウンロードソフトを
呼び出しているだけ。
16質問!:02/10/14 23:38 ID:9ZSiyech
http://tohoho.wakusei.ne.jp/wwwperl1.htm
の下のほう(ライブラリ)のところ・・・

>コメントを記述する場合は
>シャープ( # )の前にセミコロン( ; )を追記する必要がある場合もあるそうです。

とありますが具体的にどういう場合でしょう?
(jcode.plにはセミコロンついてますね)
17nobodyさん:02/10/14 23:41 ID:???
>>16
過去レス嫁
18nobodyさん:02/10/14 23:53 ID:???
死ねョ禿
19質問!:02/10/14 23:56 ID:???
>>17
既出でしたか、すいません(・・;
20nobodyさん:02/10/15 00:01 ID:???
どこよ?
21nobodyさん:02/10/15 00:05 ID:???
データ落ちしてるよ。でもキミにはプリプロ関係ないだろ
22nobodyさん:02/10/15 00:17 ID:???
貼り付け希望
23デフォルトの名無しさん:02/10/15 00:17 ID:???
>>21
プリプロって何よ。
24nobodyさん:02/10/15 00:41 ID:???
>>23
プリンタプロファイラ
25nobodyさん:02/10/15 00:55 ID:???
>>24がネタかマジレスか分からんオレには関係なさそうだな。
26 ◆Rr7AiK6DvQ :02/10/15 01:02 ID:???
プリプロセッサ−
27nobodyさん:02/10/15 01:23 ID:???
厨な質問します。
掲示板作るにCGI使いたいのですが、
HTMLに埋め込む形でテーブルの中に掲示板を入れることってできるでしょうか。
28デフォルトの名無しさん:02/10/15 01:47 ID:???
>>24
っんだよ。変な言葉覚えちゃったよ。ちょっと:

      人
    (__)
  \(__)/ ウソコー!
   ( ´A` )
29nobodyさん:02/10/15 01:47 ID:???
30nobodyさん:02/10/15 02:01 ID:???
マルチポストはレスしてくれた人の善意を踏みにじりかねない
31nobodyさん:02/10/15 02:08 ID:???
>>30
失礼いたしやした。
むこうで一本化します。
32nobodyさん:02/10/15 02:39 ID:nVvEr8H/
2ちゃんねるのスクリプトに極めて近い掲示板を探していますが、
ありませんでしょうか?
33nobodyさん:02/10/15 02:40 ID:???
>>32
自作すれば? 処理の流れは察しがつくから簡単だよ
34nobodyさん:02/10/15 03:02 ID:???
>>16 貼り付けて!
35nobodyさん:02/10/15 03:41 ID:???
>>32
いっぱいあるよ。
【スレッド】2ch型掲示板 その6【フロート型】
http://pc.2ch.net/test/read.cgi/php/1028384308/
36nobodyさん:02/10/15 04:20 ID:???
>>34
自分で探そうや
そんなに前でもなかったと思うし
37nobodyさん:02/10/15 13:43 ID:0TY8yVdT
前スレ888です。httpdのエラーログの見方をやっと覚えました。
“Premature end of script headers”でInternal Server Errorになります。
ヘッダの終わりが早すぎる? やっぱりわかりません。
Mac OS Xでローカルマシンで実行しています。
perlのパスは間違っていないはずです。何が悪いんでしょう?

#!/usr/bin/perl

use CGI qw(:satndard);
print header;
print start_html('Hello');
print h1('This is hello.cgi');
print end_html;
38nobodyさん:02/10/15 14:20 ID:???
satndard ⇒ standard
39nobodyさん:02/10/15 14:22 ID:???
>>37 =~ s/satndard/standard/;
ネタですか?
40nobodyさん:02/10/15 14:42 ID:0TY8yVdT
>>38-39
ありがとうございます。解決しました。
すみやかに回線切って逝ってまいります。
41nobodyさん:02/10/15 15:07 ID:1tgEM8TW
日本語をひらがなで区切って、出現単語をカウントするものってご存じでしょうか?
自分で作れっていわれそうですが、先人のプログラムがあれば是非利用してみたいです。
英単語をカウントするものはごろごろ落ちてるんですが、日本語のものってちょっと見つからなくて困っています。

例)
一番は一番で三番は四番。


一番 2
三番 1
四番 1

42nobodyさん:02/10/15 15:09 ID:???
文字を云々する際は、文字コードぐらいは・・・
43nobodyさん:02/10/15 16:08 ID:???
>>41
ひらがなで単語を区切る?
じゃあ、これはどうよ。←
「これはどうよ」が一単語かよ。
日本語を単語に区切るにはchasenなどの形態素解析ソフトが必要。
4441:02/10/15 16:45 ID:???
>42さん、43さん
ご返答ありがとうございます。
茶筅も調べてみたのですが、細かく区切り過ぎてしまうようです。
一連の単語として区切るようなオプションがあれば一番なのですが。。

茶筅例)
拉致被害者→拉致 被害 者

拉致被害者→拉致被害者の一単語としてカウントしたい。

そこで、ひらがな、もしくは記号(、。「」等)で区切ることができればと考えています。
あくまで漢字、カタカナのみで、ひらがなの単語はカウントしないと考えています。
45nobodyさん:02/10/15 16:51 ID:???
>44
「これはどうよ」はさ、「これは どうよ」なのか「これ はどうよ」なのかの判断はどうさせる気よ?
すでにPerlの問題でもない気がするけど。

こないだ見たプロジェクトXのワープロ開発の話を思い出したさ。
4642:02/10/15 16:52 ID:???
>>44
文字コード書いてないからSJIS対応で書いた。不完全だけと十分だろ。

map($set{$_}++, split(/(?:\x82[\x9f-\xf1])+/));
4743:02/10/15 17:06 ID:???
>>46
おおすばらし!大洲薔薇師!
たいなし!→他伊那市
48login:Penguin:02/10/15 19:40 ID:???
Perl DBI 詳しく紹介したサイト教えて 英語でもOK
また、PerldBIで構築したサイト教えて下さい

また、強化書ですが、 oreilly の perl dbi が
がいいですか
それともascii のperl DBIの本がいいですか?
49nobodyさん:02/10/15 20:18 ID:???
50nobodyさん:02/10/15 20:34 ID:???
前スレの続きになりますけど、
push@log,$_ while<LOG>;

@log=<LOG>;
とで、スピード的、メモリ的な違いは出ませんかね。
調べられないもので。
51nobodyさん:02/10/15 20:38 ID:???
>>50
メモリは結局同じこと、スピードはベンチマークとらないと・・・
52nobodyさん:02/10/15 20:43 ID:???
>>50
<LOG>から1行づつ読んで処理するとメモリ的に優しくなる。
5351:02/10/15 20:46 ID:???
>>50
スピードは大差ない

Benchmark: timing 1000 iterations of code1, code2...
  code1: 1 wallclock secs ( 1.43 usr + 0.00 sys = 1.43 CPU)
  code2: 2 wallclock secs ( 1.43 usr + 0.00 sys = 1.43 CPU)
5450:02/10/15 20:51 ID:???
あらま。<スピードは大差ない
じゃぁメモリに優しそうな前者を使うのがベターってことですかね。
5551:02/10/15 20:53 ID:???
>>54
前者が優しいということではないです。>>52さんの言う優しいとは以下のように
すること。

while (<LOG>){
処理
}
5650:02/10/15 20:59 ID:???
>>55
じゃ配列に格納する2つの例は結局違いはないとなりますな。
調べてくれてありがとございますた
57nobodyさん:02/10/15 23:01 ID:???
>>53
何を測りたいベンチなの?
意味のある数字が出ていない気がするが。

--- bench ---
#!/usr/bin/perl
use Benchmark;
timethese( 5, {
 handle => q{
  open F, '<./test.log' or die;
  my @log = (); @log = <F>;
  close F;
 },
 while1 => q{
  open F, '<./test.log' or die;
  my @log = (); push @log, $_ while <F>;
  close F;
 },
 while2 => q{
  open F, '<./test.log' or die;
  my @log = (); while (<F>) { push @log, $_ }
  close F;
 },
});
__END__

> perl -e 'print map { "$_\n" } (0..999_999);' > test.log
> perl bench
Benchmark: timing 5 iterations of handle, while1, while2...
 handle: 19 wallclock secs (14.92 usr + 3.61 sys = 18.53 CPU)
 while1: 10 wallclock secs (10.52 usr + 0.19 sys = 10.70 CPU)
 while2: 12 wallclock secs (11.11 usr + 0.13 sys = 11.24 CPU)
5850:02/10/15 23:56 ID:???
>>57
おおう。省略形のwhileが最速ってことですかこれは。
省略形の方が速いんすね。
そして @log = <F> が一番遅いとは思いませなんだ。

結論として push @log, $_ while <F>; っていう記述が一番よろしいカンジですか。
59 ◆hG4XfSMGTg :02/10/16 00:42 ID:???
その程度の差はどうでもいいと思うが。
60nobodyさん:02/10/16 01:13 ID:???
この程度の差を突き詰めていくもんなんじゃないのperlは
61nobodyさん:02/10/16 02:10 ID:???
Perlでは一気にファイルをメモリにいれる方法はあるけど、そのやり方同士で
ベンチを競うほどでもないし、自分が好きなやり方でやったほうがいい。
やり方は何通りもあるってやつです。

速度が気になるのなら、
while (<LOG>) {
 処理
}
とやるか、いっそCで書き直すというほうがマシでしょ。
6257:02/10/16 04:13 ID:???
>>59-61
>>57 の数字を信じるなら、100万行*5で せいぜい10秒の差だ。
数千行のファイルをたまに触るだけの人が気にしなきゃいけない
数字じゃない。しかし日常的に数十万行のファイルを*Perlで*
扱っているなら、知っておくべき実験結果だろうな。

やり方は色々ある。どんな風に書くも自由だ。
だけど状況によって最適解は変わる事を常に意識しなきゃだめだ。
63nobodyさん:02/10/16 05:58 ID:???
至極当たり前のことを。書いてて恥ずかしくないか?
64nobodyさん:02/10/16 07:32 ID:???
>>62
まあ、数十万行のファイルを触るときに数千行と同じやりかたをするのか?って疑問を
もって欲しいもんだ。
# しかもそれが日常的な場合だと特に。
65nobodyさん:02/10/16 07:42 ID:???
つか10.70 CPUと18.53 CPUじゃ2倍近い差なんだから
普通に効率のいい方を使えばいいっていうだけの話ちゃうの
66 ◆hMJAPH9PWA :02/10/16 08:05 ID:???
100万行のファイルに対してで@log = <LOG>;なんてことを行ったらマシン止まりそうな気がする
67nobodyさん:02/10/16 11:11 ID:???

localtime の逆関数みたいのないですか?
$year $mon $mday $hour $min $sec --> $epoc にしてくるようなの。
68nobodyさん:02/10/16 11:28 ID:4mkRoll6
>67
use Time::Local;

$epoc = &timelocal($sec, $min, $hour, $mday, $mon, $year);
69nobodyさん:02/10/16 11:36 ID:4mkRoll6
>68
補足
年は4ケタ(2002とか)、それ以外はlocaltimeと同じでつ。
曜日は求めた値をlocaltimeにかけると分かるです。
不正な値はエラーになっちゃうんでうまく対策してください。
70nobodyさん:02/10/16 11:54 ID:???
>>68
&timelocalの'&'は要らないと思う。
7167:02/10/16 12:01 ID:???

ありがとうございます。
助かります。
7251:02/10/16 12:58 ID:???
>>57
>何を測りたいベンチなの?
>意味のある数字が出ていない気がするが。

前レスを受けてのベンチだからわかると思ったんだけど・・・

意味のある数字? timing 1000 でとったんだけど・・・
73nobodyさん:02/10/16 13:15 ID:???
>>72
だからさ、高負荷をかける状況になる場合、ファイル丸ごと変数に取り込む
ようなことしないよね。ってことから意味のある数字かどうか考えたらいいんじゃないか?
東京大阪間を最短で歩くコースを考えてくれても、「なんで新幹線乗らないの?」って
言われたらおしまい。これと同じこと。
74nobodyさん:02/10/16 13:27 ID:???
全角数字を半角数字に直すにはどうしたら良いですか。
$hoge =~ s/0/0/g;
$hoge =~ s/1/1/g;
$hoge =~ s/2/2/g;
これを9まで続けるでいいでしょうか。
7551:02/10/16 13:29 ID:???
>>73
意味がわからないんだけど・・・
76nobodyさん:02/10/16 13:40 ID:???
>74
ttp://www.din.or.jp/~ohzaki/perl.htm#JP_Z2H

まぁ、そのやり方が一番楽だと思うよ。
77nobodyさん:02/10/16 13:43 ID:???
つーかさ、前から思ってたんだけど

open(F,"test.log");
my @log = (); push @log, $_ while <F>;
#@log = <F>;でもどっちでもいいよこの際。
close(F);
foreach(@log){
....
}

より

open(F,"test.log");
my $log = '';read(F,$log,-s "test.log");
close(F);
while($log =~ /\G([^\r\n]+)[\r\n]+/g){
....
}

とかにした方が全然速くない?
特に「ファイルを早く閉じたいから一気読みしてる」とか言ってる奴が
前者を使う理由がわからない。

#for$n($start..$end){$log[$n]の加工}とかで一部だけ
#加工したいなら読み込み段階で素直に
#while(<F>){$n++;next if($n < $start);last if($n > $end);$_の加工}
#とでもした方が全然速いし当然メモリはほとんど使わないし。
78nobodyさん:02/10/16 13:44 ID:???
>76
ありがとうございます。
とりあえず今は数字しか必要ないので今のやり方でやります。
7973:02/10/16 14:41 ID:???
だからでかいファイルを一気にメモリに読み込むようなことはしないから、
それを前提にしたベンチやってても、その結果を考慮に入れる香具師は
いないってこと。
80nobodyさん:02/10/16 14:50 ID:???
>>79
逆じゃないの?
一気にメモリに読み込む仕様にした時にでかいファイルを読まれたら
どうなるかは視野に入れて作った方が良いというか。
製作者の意図通りに使ってくれない人なんて沢山いるだろうし。
81nobodyさん:02/10/16 15:12 ID:???
>>80
だからね、
「一気にメモリに読み込む仕様にした時にでかいファイルを読まれたら
どうなるかは視野に入れ」たら、普通そういう仕様にしないでしょ。
検討はしましたが、実際には使いませんね、でいいじゃん。

制作者の意図って誰の意図? Larryのことか?
8280:02/10/16 15:35 ID:???
>>81
落ちけつ。俺だってそんな仕様にはしないし
確かに普通そんな仕様にはしないだろう。

だがその話をしてる人は普通の用途では無いかもしれんし
実用云々は置いておいて単なる処理の話をしてるのかもしれん。
自分じゃまずやらない事だからこそ何か発見があるかもしれんし
色々話すだけなら構わんのでない?
83nobodyさん:02/10/16 15:49 ID:???
置換演算子と変換演算子って似てると思うんですけどどこが違うんですか。
s/あ/ア/;
tr/あ/ア/;
これはどっちも同じですよね。
対象文字列に正規表現が使えるか使えないかの違いでしょうか。
84nobodyさん:02/10/16 15:56 ID:???
>>83
下って

あの1バイト目とアの1バイト目
あの2バイト目とアの2バイト目

に置換。
85nobodyさん:02/10/16 17:30 ID:???
最近、$CMD::form{'data'} みたいに、::を付けるソースが多いのですが
流行なんでしょうか?昔は見なかったような・・・
86nobodyさん:02/10/16 17:46 ID:???
時代はPerl5ですよ。
87nobodyさん:02/10/16 18:44 ID:???
昔か…
88nobodyさん:02/10/16 18:50 ID:???
>>85は浦島さんですか?
89nobodyさん:02/10/16 20:34 ID:???
>>77
>while($log =~ /\G([^\r\n]+)[\r\n]+/g){

\Gってなんですか?
あとテキストファイルの読み込みは<FILEHANDLE>が一般的と明言されてますけど
例にあるreadの方が本当に速いんですか?
90nobodyさん:02/10/16 20:56 ID:???
>>89
\Gは前回マッチした場所の直後からスタート。
スピードは計ってみりゃいいじゃん。

#! /usr/bin/perl
open(LOG,">test.log");for(1..1000){print LOG 'a' x 1000 ."\n";}close(LOG);
use Benchmark;
timethese(50,{
  1=>q{
  open(F,"test.log");
  my @log = (); push @log, $_ while <F>;
  close(F);
  foreach(@log){next;}
  },
  2=>q{
  open(F,"test.log");
  my $log = '';read(F,$log,-s "test.log");
  close(F);
  while($log =~ /\G([^\r\n]+)[\r\n]+/g){next;}
  }
});
#Benchmark: timing 50 iterations of 1, 2...
#1: 22 wallclock secs (19.37 usr + 0.82 sys = 20.19 CPU) @ 2.48/s (n=50)
#2: 5 wallclock secs ( 3.37 usr + 1.01 sys = 4.38 CPU) @ 11.40/s (n=50)

91nobodyさん:02/10/16 21:44 ID:???
>>89
readは読み込み専用に用意された関数だから、そりゃ速いだろ。
ファイルハンドルで回すのが一般的なのは扱いやすい、発展しやすいからじゃ
ないかな。(といってもreadで読むのは別に珍しくは無いと思うけど)
92nobodyさん:02/10/17 01:50 ID:???
送信元ポートを指定してUDPパケットを発射したいんですけど、
どうやればいいんですかねえ?
93nobodyさん:02/10/17 03:57 ID:???
配布されている掲示板のスプリクトをダウンロードして、
デザインを大幅に変えていた。
変え終わってローカルで最終テストをしている時に気づいた



パスワードが暗号化されていない・・。・゚・(ノД`)・゚・。

このままでは、ダメだと思い、別のところで配布されている
スクリプトに変えようかと思ったが、デザイン変えてしまったし、
折角だから、自分で暗号化してみようかと思い必死で暗号の仕方を探した。

何度も何度も試した。
エラーの繰り返し。

それから、12時間経過・・・(´Д`) =3

もう、別のスクリプト探すyoヽ(`A´)ノウワァン

こんなことなら、初めから別のスクリプトにしておけば良かった。
無駄な12時間だった・・・。(-_-)
94nobodyさん:02/10/17 08:19 ID:???
>>93
パスワードの暗号化の部分だけ、別スクリプトからもらってきたら
よかったんじゃない? っていうかパスワード暗号化って必要な
ものなのか?
95nobodyさん:02/10/17 09:13 ID:???
書き込み時に入力されたパスを crypt(パス,93)で暗号化して保存
記事変更・削除時に入力されたパスをcrypt(入力,93)使って暗号化、記録してある物と比較
一致すればOK   パスが記録されたファイルを見られても大丈夫

>>93 これじゃ駄目?
96nobodyさん:02/10/17 12:19 ID:???
cryptがMD5な鯖でDESなcryptをシミュレートできますか?
97nobodyさん:02/10/17 15:52 ID:???
>>94
>パスワード暗号化って必要なものなのか?

((((;゚д゚)))))
98nobodyさん:02/10/17 16:52 ID:???
($buf_tmp,@lines)=$buf=~/[^\x0D\x0A]*\x0D?\x0A?/g;
を訳してください。
99nobodyさん:02/10/17 17:03 ID:???
>>98
$buf の先頭から改行までを $buf_tmp にセット

以降を同様に配列 $lines にセット
100nobodyさん:02/10/17 17:06 ID:???
>>99
ありがとうございます。
10199:02/10/17 17:07 ID:???
$lines ⇒ @lines
10296:02/10/17 17:25 ID:???
放置されたので自分でぐぐって調べてみますた。
http://www.mikeneko.ne.jp/~lab/perl/des/
103nobodyさん:02/10/17 20:41 ID:???
>>94
何度も別のスクリプトからもらってきて
試してみたんですが、無理でつた。
僕の知識不足です。
さすがに、生のパスワードがそのままログに
残ってしまうのは、もしも漏れた時に・・と考えると・・・。
それに、自分では来訪者のパスワードが見れてしまうので
気持ち悪いのです。。

>>95
わざわざ説明ありがとうございますた。
今試してみたのですが、記事削除時の比較がなかなか上手く
できないです。もう少し頑張ってみます。ペコリ
104nobodyさん:02/10/17 21:26 ID:???
>>103
漏れないようにログは拡張子だけのファイルにしてしまいませう
105nobodyさん:02/10/17 23:44 ID:???
漏れの姦違いですね・・・
吊るされに逝ってきます
106nobodyさん:02/10/18 01:16 ID:eCvV6YKP
古くなったwin95マシンを鯖にしたんですが、アプロダを設置してテストしたところ、

Error 500
CGI エラー - Content-Type ヘッダが正しくありません。
CGI 出力メッセージ:
"my" variable $year masks earlier declaration in same scope at C:\www\up\upload.cgi line 1366.
flock() is not available on Win95!

と出てしまったのですが、OSが95で flock() を含むスクリプトは使えないってことですか?
何か解決策はありませんでしょうか?
107nobodyさん:02/10/18 01:32 ID:???
eval{ flock(); }
108107:02/10/18 01:50 ID:???
間違った

eval{ flock() };
109106:02/10/18 01:58 ID:???
>>107-108
できました!ありがとうございました。
110nobodyさん:02/10/18 13:52 ID:lRuefofg
会員を募って会員にメールを送るシステムを作りたいんですけど、まず何から覚えるべきですか。
perlで作れるのは掲示板とかチャットとかです。
パスワード発行のやり方とかは知りません。
111nobodyさん:02/10/18 15:00 ID:???
>>10
物事をチキンと説明、理解できる日本語
112nobodyさん:02/10/18 15:11 ID:???
>>111 遅レスだなw
113nobodyさん:02/10/18 17:46 ID:???
>>110
掲示板やchat作れるんならパスワード認証くらい簡単なはず。
一。<form action="hoge.cgi"></form>の中にメールアドレスとパスワードを入力する画面の設計。
二。hoge.cgiでメールアドレスとパスワードをファイルにかき出す。
三。メールアドレスを集めて、sendmailで用意したメール本文を送信。
ところで、パスワードは何に使うのかなぁ
(゚Д゚)ハァ?
115110:02/10/18 19:48 ID:???
>>113
メールの送る内容(情報)を選べるようにしたいので、
会員登録後もIDとパスワードでログインして送信設定などを各会員にやってもらう予定なのです。

会員システムの時、IDとパスワードをユーザーが自分で決める方式と
IDは任意でパスワードは自動発行のだいたい二通りがあると思うんですけど
これってどっちがいいんでしょうか。別にどっちも大して変わらないんでしょうか。
116超凄腕プログラマー:02/10/18 20:22 ID:???
ペリル程度でグダグダ質問してんじゃねぇよ!( ´,_ゝ`)プッ
117nobodyさん:02/10/18 22:04 ID:XuCvNIce
何度試しても上手く行かないんですが、
CJ-CLUB の I-BOARD2001
のアイコンの種類と文字色の種類を増やしたいんですが、
set.cgi で増やしても
500 Internal Server Error
が出てしまいます。
他に書き換えなければならない部分があるのでしょうか?
エディタは秀丸とメモ帳でやってます。
改行は自分では入れていません。
118nobodyさん:02/10/18 22:30 ID:???
改造工房逝けば?
119nobodyさん:02/10/18 22:31 ID:???
>>117
どこをどうやったのか解らないので何も答えられません。
書き換えた部分と、その前後をコピペくらいしろ
120nobodyさん:02/10/18 23:08 ID:???
>>115
自動発行ってトリップみたいなものかな?
実状は自分で決めたパスワードさえ忘れてしまう人が呆れるほど多かったりする罠。
自動発行だと忘れる人は倍増する気もするけど、
メールでしっかり忘れないようにするなら逆に忘れられても大丈夫かもしれない。
121nobodyさん:02/10/18 23:56 ID:Ts+deQMH
ローカルでは動くのに、鯖にUPすると500エラーがでます。
どんな原因が考えられるでしょうか?
まったく見当がつかなくて困っています。
おながいします。
122nobodyさん:02/10/19 00:00 ID:???
>>121
・CGIが使えない設定
・Perlやシェルの場合のパス違い
・パーミションの実行権なし
・アップロード時の文字コードまたは改行の設定ミスあるいはバイナリモードでアップした
123 ◆hMJAPH9PWA :02/10/19 00:11 ID:???
・必要なモジュールが存在しない
・環境依存なコードが書かれている
・Perlのバージョン
124デフォルトの名無しさん:02/10/19 00:45 ID:???
・250台の鯖が死んでる。500もえらがとれたとはね。
125nobodyさん:02/10/19 00:53 ID:SecGkhKp
正規表現にマッチした部分だけを変数に格納するには
どう書けばイイですか?
126121:02/10/19 01:17 ID:???
>>122-123
べんきょうになりますた。
>>124
すっげー根詰めてやってたから、和んだ(w

メールアドレスの@が犯人でした
ありがとうございました
127rubyist@カラアゲうまうま:02/10/19 09:13 ID:???
>>121-126
糞言語に相応しい糞なやりとりだな。
128デフォルトの名無しさん:02/10/19 09:36 ID:???
>>127
あんたさあ、糞言語の糞スレなんか読んでないで、
rubyスレでまともな発言したらぁ

129nobodyさん:02/10/19 09:51 ID:???
>125
()で変数にしたい部分を囲む。
したら$1という変数に勝手に入る。
正規表現のとこに書いてあるだろ。
130名無しさん@カラアゲうまうま:02/10/19 15:26 ID:5SBDqdQD
Perlのコーディング標準みたいなものってありますか?
131nobodyさん:02/10/19 15:28 ID:???
>>130
1行目にPerlパスを書くことぐらいかな
132nobodyさん:02/10/19 15:31 ID:???
教えてください。
perlと格闘してますがぁ、

^Mがどうしても消せません!!!!!!!!!!!!!!!
^Mがどうしても消せないのです!!!!!!!!!!!!!!!

chompやchopでは
^Mがどうしても消せません!!!!!!!!!!!!!!!
どうやって消すのでしょうか?
133nobodyさん:02/10/19 16:01 ID:???
>>132
chop を2かいやれ
134nobodyさん:02/10/19 16:05 ID:???
いまいち判らないので質問。

perl -e 'BEGIN{}' -p ファイル名 引数
みたいに、-e 、-pを共存してかけますか?
135nobodyさん:02/10/19 16:38 ID:???
EXPR が 真なら、ループ処理を行なうコードをブロックを使わずに書くことって
できますか?
136 ◆hMJAPH9PWA :02/10/19 16:46 ID:???
>>130
perldoc perlstyle
perldoc.jpなどに日本語訳あり

>>134
こういうこと?
perl -pe "..." file1 file2 ...

>>135
出来るけど、ブロックだと何か困ることでも?
f() while EXPR;
137135:02/10/19 17:01 ID:???
>>136
あっ、そうだった・・・
質問間違えてた。EXPRが真なら処理A(ループ含む)をし、偽なら処理B(ループ含まない)なんてことできますかね?
べつにブロック使って困ることはありませんが、できそうになかったので敢えて質問してみました。
138nobodyさん:02/10/19 17:05 ID:???
>>137
whileはEXPRが真の時しか実行されないんじゃ…
139 ◆hMJAPH9PWA :02/10/19 17:20 ID:???
>>137
処理を関数にすれば、普通にifなり三項演算子なり使えば問題なさそうだけど。

sub A
{
ループする処理
}
sub B
{
ループしない処理
}

if(EXPR){
A()
}else{
B()
}
140135:02/10/19 17:24 ID:???
>>139
やっぱりそうするしかないみたいですね。ブロックなしでは書けない処理もある
ということで・・・
141nobodyさん:02/10/19 17:55 ID:M9PYtBQy
ちょっと質問があります。
kiseiという配列があって、その中には数字のみのデータが入っているのですが
(こんな感じに→ @kisei=(256, 512, 4444); )
$idという変数にも何か数字が入っているとして、$idが@kiseiに含まれているかどうか
調べる為にはどうすれば良いでしょう?
やはりforeachで配列を回して探さなければいけませんか?
142nobodyさん:02/10/19 18:38 ID:???
>>141
うん
143通行人さん@無名タレント:02/10/19 18:41 ID:???
>>141
ハッシュかな、、、、簡単にプログラムするなら
144134:02/10/19 18:42 ID:???
>>136

-peではまとまって書かなければならないですよね。

そうではなくて、
-p hoge.pl
のhoge.pl内の変数に対し、
-e 'BEGIN{}'
で初期値の設定がしたいのです。

145nobodyさん:02/10/19 19:04 ID:???
例えば、
"─"
を含む行を消す時ってsedだと
sed /─/d
のように短く出来るけど、perlだと結構冗長にならない?

146nobodyさん:02/10/19 19:16 ID:???
>>141
grepとか
147141:02/10/19 19:17 ID:M9PYtBQy
>>142
まじで?
148nobodyさん:02/10/19 19:18 ID:???
sedは知らないけど、Perlだと
perl -ibak -ne "print unless /―/"って感じかな?
sedみたいに特化してないから、仕方ないと思うけど。
149nobodyさん:02/10/19 19:20 ID:???
>>145
だから?
150nobodyさん:02/10/19 19:21 ID:???
>>144
無理だと思うけど。
151nobodyさん:02/10/19 19:33 ID:???
>>144 -pオプションの意味が分かってないだろ。
152nobodyさん:02/10/19 19:39 ID:???
>>144
perl -e "...; require 'file'; ..."
153デフォルトの名無しさん:02/10/19 20:38 ID:???
>>141
もっとまとめて簡潔に質問してください。
grep $id, @kisei;
rubykitchさんを調べてるのですか?
154nobodyさん:02/10/20 00:20 ID:???
>>153
grep の使い方をお勉強しましょう。
155nobodyさん:02/10/20 07:05 ID:???
prohostingを使っています。
URLに使える文字以外をエスケープしようと思うのですが
下記のようにすると、記号の前に\が入ったりします。
(http://hogehoge.com/\~xxx/)
どうしたらいいでしょうか?

s|([^\w\[\];/\?:@&=\+$,-\.!~\*'\(\)])|'%'.unpack('H2',$1)|eg;
156デフォルトの名無しさん:02/10/20 11:15 ID:???
>>154
rubykitchのidは、正規表現ラッパーになってると
聞いてるが、何か?
157nobodyさん:02/10/20 21:52 ID:???
Larry Wall はどうやら日本が好き見たいだ。

158nobodyさん:02/10/20 23:20 ID:S0+M+/Ux
パーセント(百分率)を求める式を教えて下さい。

$total 全体
$A   求めるもの
$percent パーセント

おながいします。
159nobodyさん:02/10/20 23:55 ID:???
>>158
パーセント=求めるもの÷全体×100

160nobodyさん:02/10/20 23:56 ID:???
$percent= $A / $total * 100;
161nobodyさん:02/10/21 00:02 ID:???
いつから算数初心者コーナーに
162nobodyさん:02/10/21 00:15 ID:???
円周率求める式教えて下さい。

$pai   円周率。


おなかしいます。
163nobodyさん:02/10/21 00:18 ID:???
ネタが怖い今日この頃。
164nobodyさん:02/10/21 00:30 ID:???
しつもん。

perldoc て日本語訳ありますこ?
165nobodyさん:02/10/21 00:34 ID:???
jperldoc
166nobodyさん:02/10/21 00:49 ID:???
167 ◆hMJAPH9PWA :02/10/21 11:36 ID:???
168nobodyさん:02/10/21 15:22 ID:???
すいま千円。
リファレンスの使い方は一応わかったんですけど、どんな時に使うのかがわかりません。
169nobodyさん:02/10/21 16:08 ID:???
>>168
ちょっと高度なことをするとき。
よく使う場合はねぇ、
配列引数をサブルーティンに複数渡すとき、
多元配列を扱うとき、
ハッシュ変数にアクセスするとき、
だやね。

170nobodyさん:02/10/21 16:34 ID:???
無名配列、無名ハッシュを使うときですね。
171nobodyさん:02/10/21 16:47 ID:???
KENTのこの掲示板なんですけど、http://www.kent-web.com/bbs/aska.html
そのまま何も変えないで使うとデータファイルはaska.logです。
で、このlogファイルは投稿内容や暗号化された削除キーなどが記録されています。
そのlogファイルをブラウザからアクセスすると容易に閲覧できます。
投稿内容だけならともかく、投稿者のホスト名や暗号化された削除キーが載っています。
これはセキュリティ的に危険だと思うんですがこんなんでいいんでしょうか。
管理者以外にlogファイルを見られなくする方法は.cgiファイルにすれば見れないと
前に知りましたがこの方法が一番簡単なんでしょうか。
172nobodyさん:02/10/21 16:57 ID:???
>>174
簡単だわな。確かに。
173nobodyさん:02/10/21 17:23 ID:nGDYlndq
質問です。
CGIで
パスワードを入力してボタンを押す
  ↓
パスワードが合ってるか? →エラーの為のHTML出力
  ↓(YES)           (NO)
管理人しか見れない様なHTML出力

という風に同一CGI内でパスワードの処理をしたいんです。
んで、
<form action=\"$URL\" method=\"POST\">\n
<input type=\"hidden\" name=\"mode\" value=\"admin\">\n
<input type=\"password\" name=\"pass\" size=\"8\">\n
<input type=\"submit\" value=\"管理用\"></form>
というのを出力してみたのですが、
ここからパスワードを取得して、比べる→その結果によって出力っていうのがどうやったら良いのかわかりません。
どなかたご教授お願いします。
174 ◆4/qmJJukCQ :02/10/21 17:27 ID:???
・パスワードの取得はPOSTだから標準入力を解析する。
 分からなければCGI.pmとかcgi-lib.plでも使え。
・分岐は if を使う。
・出力は print を使う。
175173:02/10/21 17:30 ID:nGDYlndq
CGI.pmとかcgi-lib.plですか。
やってみます。
ありがとうございました。
176nobodyさん:02/10/21 17:47 ID:???
>>172
おいレス番、違ってるだ炉。
誰に向かって言ってるんだ、はっきりしろ。
それによっては、どやす。
177 ◆4/qmJJukCQ :02/10/21 17:49 ID:???
>>176 174は実際簡単じゃないか(藁
178nobodyさん:02/10/21 17:57 ID:???
>>177
納得。>>172はアフォ天才か
179_:02/10/21 18:01 ID:???
>>171
ログファイルの名前を分かり難い物に変える。
(英字と数字を組み合わせて「a5mhp3f」とか。)
パーミッション600等が使えれば600にしておく。
180173:02/10/21 18:33 ID:nGDYlndq
すいません、もう一度…。
cgi-lib.plの使い方はわかりました。
>>173
<input type=\"submit\" value=\"管理用\">
この部分でできたボタンを押したことを感知するイベントハンドラ(?)みたいな処理にしないとマズいですよね?
そこを押したらpassを取得して比べるという事をしなければならないので。
そーいったのはどうすればできるのでしょうか?
181nobodyさん:02/10/21 18:44 ID:???
>>180
> <input type=\"hidden\" name=\"mode\" value=\"admin\">\n

mode が admin な時に実行すれば?
182nobodyさん:02/10/21 18:53 ID:???
>>179
パーミッション600だと読み込みが出来なくなっちゃうのでダメですよね。

結局見せたくないなら、手っ取り早くcgiファイルにしとけって事ですかね。
プロの人はどうやってるんでしょうか。
183173:02/10/21 19:09 ID:nGDYlndq
# ---フォームのデータを受け取る
%form = &read_input('euc');
$iptPass = $form{'pass'};
$mode = $form{'mode'};

if($mode eq admin){
 # ---パスワード認証された時の処理
 if ($iptPass = $PASS){
  (略)
 }
 # ---パスワードが間違えてた時の処理
 else{
  (略)
 }
}

>>181さんを参考にして、こんな風に付け足ししてみたんですけど、ダメでした。。。・゜・(ノД`)・゜・
もうちょっと詳しく解説して戴けますか?
184 ◆4/qmJJukCQ :02/10/21 19:16 ID:???
>>182
>パーミッション600だと読み込みが出来なくなっちゃうのでダメですよね。
suexec対応の鯖使え。
共有鯖でsuexecでCGI動かしてない鯖は糞だから見限れ。

>結局見せたくないなら、手っ取り早くcgiファイルにしとけって事ですかね。
・見られたくないファイルはHTTP経由で見れないディレクトリに置く。
・suexecでCGIが動く鯖を使う。
・.htaccessでdenyる。
どれかにしる。

>>183
if ($iptPass = $PASS){
    ↓
if ($iptPass eq $PASS) {
だべさ。
185nobodyさん:02/10/21 19:32 ID:???
>>183

if($mode eq 'admin'){
186173:02/10/21 19:56 ID:nGDYlndq
>>184-185
どうもありがとうございます。
でもできないです…。
187173:02/10/21 20:05 ID:nGDYlndq
一応全部の物をうpしましたので、どなたか教えて下さい。m(_ _)m
http://www.geocities.co.jp/SiliconValley-Sunnyvale/6220/chlog.zip
188nobodyさん:02/10/21 20:18 ID:???
あやしいわーるどRemix@はじめてのPerl
http://www.strangeworld.cx/cgi-bin/remix/bbs.cgi?area=soft15
189nnd:02/10/21 21:51 ID:j4V+CWpA
物凄く初歩な質問なんですがよろしくお願いします。

$count =1;
$data = "$count" . ".html";

上のように自動に作成された1.htmlというファイルですが、
特定のフォルダ下に自動作成するにはどうしたらいいのでしょうか?
/html/1.html
という様にhtmlというフォルダの下に1.htmlというファイルを
自動的に作る場合はどのように指定してやればよいのでしょうか?

どなたかご教授お願いします。
190nobodyさん:02/10/21 22:07 ID:5oRhJ4R+
>>189
open(FH,">./html/$count.html");
close(FH);
がむばれ
191nobodyさん:02/10/21 22:13 ID:???
>>173
キミは決定的な勘違いをしている。
パスワード入力画面を出力したプロセスで
その結果を受け取れるワケがない。

ブラウザ「cgi呼び出し」

CGI「パスワード入力画面出力」

ブラウザ「パスワード入力画面表示」

これで1プロセス。ここでCGIの実行は終了。
この操作と同時に「CGIが吐き出したフォームに書き込まれる内容」を
CGI自身が受け取れるわけがない。

同じCGIの中でパスワードのチェックもしたいなら、
CGIが実行する一番最初の処理に
「パスワード付きの呼び出しが来たらこっちで処理」
という分岐をいれなければダメだ。
192nobodyさん:02/10/21 22:17 ID:???
>>182
> 結局見せたくないなら、手っ取り早くcgiファイルにしとけって事ですかね。
> プロの人はどうやってるんでしょうか。

プロじゃなくっても、サーバいじれるなら、.datへのアクセスを
禁止しておくのが普通でしょ。
193nobodyさん:02/10/21 22:26 ID:5oRhJ4R+
>>192 まったくですなあ。データは.cgiに限りますね。
それか、httpでアクセスできないとこに設置するとか。
194作ってみた:02/10/21 22:34 ID:???
>>173
これじゃだめか?

#!/usr/local/bin/perl

# パスワード
$pass='pass';

# このファイル名
$file='pass.cgi';

read(STDIN,$_,$ENV{'CONTENT_LENGTH'});
foreach (split(/&/)){
($name,$_)=split(/=/);
s/%([a-fA-F0-9][a-fA-F0-9])/pack('C',hex($1))/eg;
$input{$name}=$_;
}
print "Content-tyep:text/html\n\n<html><body>";

if($input{'pass'} ne ''){
if($input{'pass'} eq $pass){
print "本物";
}else{
print "偽者";
}
}else{
print '<form action="'.$file.'" method="POST"><input type="password" name="pass"><input type="submit"></form>';
}

print "</body></html>";
195189:02/10/21 22:35 ID:j4V+CWpA
>190様どうもです。

明日試して見ます。すいません。今日はもう寝させてくださいzzz
196nobodyさん:02/10/21 23:24 ID:???
>>192-193
cgiにするのはアマチュア。
1 httpでアクセスできないところに置く
2 .htaccessで禁止する
197173:02/10/21 23:33 ID:nGDYlndq
>>191
難しい…。
何となく前半はわかったのですが、後半がよくわかりません。
もう少し考えさせてください。m(_ _)m

>>194
わざわざ作っていただいてありがとうございます。m(_ _)m
>print "Content-tyep:text/html\n\n<html><body>";
Content-tyepではなくて、Content-typeですよね?
でも、それを直してうpしても、エラーが出ちゃうんですよね…。(^^;
198nobodyさん:02/10/22 00:27 ID:???
データファイルの拡張子を.cgiにした場合、たとえば掲示板なら書き込みの汚染チェックしっかり
しとかないと大変なことになるよね。
パーミッションしっかりしてれば問題ないけど、それなら.cgiにする必要もないし。
199173:02/10/22 00:29 ID:EEwgqrao
拝啓 >>194

ごめんなさい、エラーが出たのは私めのせいでございました。。。
パーミッションを変えないという初歩的なミスを…。
ちゃんと動きました、ごめんなさい。

                                     敬具
200nobodyさん:02/10/22 00:54 ID:???
批判の多い.cgi。
いろいろな共有鯖で使う尼向け配付にはもってこいの気もする
・・・・・・・・・・なんだ結局尼むけだなぁ
仕事に使ったらAFOってことで
201nobodyさん:02/10/22 02:35 ID:???
良く見かける、
$_ = reverse($_);1
の1って何でしょう?
202nobodyさん:02/10/22 02:44 ID:???
>>200

拡張子cgiて定石だけど、あくまでアマの定石ってこと?
でも「簡単に設定できる」というのは重要だと思うけど。
仕事でもそれは変わらないと思うんだけどな。
203nobodyさん:02/10/22 02:44 ID:???
>>201
良く見かける?

わたしの環境ではエラーでましたが・・・
204nobodyさん:02/10/22 03:00 ID:???
>>201

たぶんモジュールの最後に書かれた 1 のことじゃねえの?
205nobodyさん:02/10/22 04:15 ID:???
>データファイル
「.passwd」みたいに拡張子のみにリネームするのが定石じゃないの?FTPツールとかで。
まぁ鯖によっては置けなかったりFTPツールから見えなかったりするけど。
206nobodyさん:02/10/22 07:04 ID:???
perlのmap関数の良いところを述べてください。

また、grep関数の良いところを述べてください。
207201 :02/10/22 07:05 ID:???
>>204
意味は?
208nobodyさん:02/10/22 08:42 ID:qoySgddo
>>205
「拡張子のみ」とか言わないで「ドットファイル」と呼んだほうがかっこいいよ
209nobodyさん:02/10/22 09:38 ID:???
210nobodyさん:02/10/22 11:52 ID:???
$value =~ s/% ([a-fA-F0-9][a-fA-F0-9]) /pack("C", hex($1))/eg;
クエリーデータを取得して分解する時のこの行は何をしているんですか。
211nobodyさん:02/10/22 12:31 ID:???
>>210
209にあるような%8A%D6%90%94という文字を、変換前の日本語や記号に戻してるんだよ。
URLデコードっていうんだよ。
212nobodyさん:02/10/22 13:14 ID:???
>211
わかりました。
213nobodyさん:02/10/22 13:19 ID:???
$url = 'http://www.yahoo.co.jp/';
open(HTML,"$url") || die "ダメ:$i";
while(<HTML>){
  print;
}
close;

これエラーになるんですけどなぜでしょう。
214nobodyさん:02/10/22 14:00 ID:???
http経由では開けないから。
215nobodyさん:02/10/22 14:39 ID:???
>>214
それはどこで習いましたか?
216194:02/10/22 16:17 ID:???
>>199
確かにtyepは間違いでtypeだけど、何で動くんだろう?
俺もテストして動いたから気づかなかった
217nobodyさん:02/10/22 16:27 ID:???
>>215
そろばん教室
218nobodyさん:02/10/22 16:57 ID:???
>>217
僕もそろばん教室通っていましたけどそれは習わなかったです。
perlを教えてくれるそろばん教室なんてあるんですね。
219173:02/10/22 17:06 ID:1nArfp1i
すいません。
パスワードの部屋、>>194を発展させて作ろうと思ってます。
でも、>>191さんの
>同じCGIの中でパスワードのチェックもしたいなら、
>CGIが実行する一番最初の処理に
>「パスワード付きの呼び出しが来たらこっちで処理」
>という分岐をいれなければダメだ。
という所が理解できないので、サンプルソース戴けませんか?
わからないままってのはこれから困るし…。
どうかよろしくお願いします。m(_ _)m
220194:02/10/22 17:09 ID:???
とりあえず俺は>>191を理解できない
221nobodyさん:02/10/22 17:57 ID:???
>>219が配布スクリプトを参考にしようとしないのは何故ですか
教わったところで自分が何を実行してるのかわからないだろうから
こんなとこで「理解」はどのみち無理かと。
222nobodyさん:02/10/22 18:25 ID:???
>>219
とりあえず、
> 「パスワード付きの呼び出しが来たらこっちで処理」という分岐
に相当する処理を>>194から探してみようよ。
223nobodyさん:02/10/22 20:21 ID:TiLNiSf4
jcode.plって日本人が作ったんですよね?
なのにどうしてスクリプト内のコメントは全部英語なんですか?
外国人のために英語で書いてあげてるんですか?
でも圧倒的に日本人が使う頻度が高いですよね?
それとも単なるかっこつけですか?
224iui:02/10/22 20:34 ID:qg3kIz94
自作で適当な掲示板つくってますが、詰まってしまいました。
ぜひどなたかおしえ頂きたいのですが・・・

フォームのテキストエリア内での改行についてなのですが、
2CHに書き込みすると改行が生かされていますよね?
これはどのようにするのでしょうか?
WRAPとは違うのですよね?書き込みデータを出力しているときに
<br>が入っているのでしょうか?
面倒な質問ですがどなたかご存知の方いましたらよろしくお願いします。

225iui:02/10/22 20:34 ID:qg3kIz94
↓一応自分でやって見た物です。
テキストエリアに書かれた内容をメソッドポストで
write.cgiに送りdata.htmlに出力し、
それをread.cgiで表示しています。

具体的にはこうです。
==write.cgi==
$data = "data.html";
$name=$cgi{'name'}; #POSTで送られてきたデータ
$text=$cgi{'text'}; #POSTで送られてきたデータ

open(FILE, ">>$data") || &error("");
print FILE "<font size=\"2\">$name</font><font size=\"3\">$text</font>";
close(FILE);


==read.cgi==
open(FILE, "<$data") || &error("");
@lines=<FILE>;
close(FILE);
print @lines;

data.htmlを見ても文章に改行コードが入っていないので
改行する訳ないのですが・・・

テキストエリア内での改行コードを<br>に変換???
テキストエリア内の改行コードってどうやってみるの???
などなど、悩んでました。アホな悩みですがよろしくお願いします。
226マジレスw:02/10/22 20:38 ID:???
>>223
一般的なPerlユーザならあの程度の英語は理解できるからです。
日本人Perlユーザの100人中99人は理解できます。
読めない1人(=223)が減っても、2人ぐらいなら海外から補填出来ます。

結局読める人は計101人で日本語で書くより読めるユーザが増えます。
227マジレスw:02/10/22 20:45 ID:???
>>225
改行コードが入ってないってのがよく分からんが

-------------------------------------------------------------
$data = "data.html";
$name=$cgi{'name'}; #POSTで送られてきたデータ
$text=$cgi{'text'}; #POSTで送られてきたデータ

$text =~s{\x0D\x0A}{<br>}g;
$text =~s{\x0D}{<br>}g;
$text =~s{\x0A}{<br>}g;

open(FILE, ">>$data") || &error("");
print FILE "<font size=\"2\">$name</font><font size=\"3\">$text</font>";
close(FILE);
-------------------------------------------------------------

他にも<,>,",@とかもエスケープせんと酷い目に合うよ。
228nobodyさん:02/10/22 20:50 ID:???
>>225
既に$cgi{'〜'}の形に変換されてる事から、
その変換時(=デコード処理)のときに改行を削除してると思われ
229228:02/10/22 20:51 ID:???
文章ちょっと変だが気にするな
230nobodyさん:02/10/22 20:54 ID:???
デコード処理きちっとしてないんですよ、きっと。
文字コードの変換とかもしてなさそうな予感。
231173:02/10/22 21:19 ID:1nArfp1i
>>221
参考にしようとしました。
kent-webのプチボードの管理モードの部分です。
j-code.plは使ってたけど、&read_inputを使ってなかったので、
&read_inputを使った他のソースが欲しいなって思った所です。

>>222
if($input{'pass'} ne ''){
 # ↓ここから
 if($input{'pass'} eq $pass){
  print "本物";
 }else{
  print "偽者";
 }
 # ↑ここまでですよね?
}else{
 print '<form action="'.$file.'" method="POST"><input type="password" name="pass"><input type="submit"></form>';
}
232nobodyさん:02/10/22 21:20 ID:???
自分の身近にもいるけど、perlをHTML感覚で扱えると思われてると
根本的に認識がずれてるからどう説明すればいいかとても悩みますね

ところで>>227の $text =~s{\x0D\x0A}{<br>}g; って初めて見たけど
$text =~s/\x0D\x0A/<br>/g; じゃだめなん
233iui:02/10/22 21:22 ID:nQEHGPbT
皆様お手数お掛けします。

デコードできてないとの事なのですが、本に載っていたデコードを
そのままやったのでおそらくそれが原因なのでしょうか?
↓のデコードで問題あるのでしょうか?またコノヨウナ半角カタカナも
文字化けしてしまうのはデコードが上手くいってないからでしょうか?
度々すいませんがよろしくお願いします。

sub decode{
$readSize = read(STDIN, $form_data, $ENV{'CONTENT_LENGTH'});
if ( $readSize && ( $readSize != $ENV{'CONTENT_LENGTH'} )){
&error("");
}
@part = split('&', $form_data);
foreach $i (@part) {
($names, $value) = split('=', $i);
$value =~ tr/+/ /;
$value =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("C", hex($1))/eg;
&jcode'convert(*value,$mycode
$value =~ s/&/&/g;
$value =~ s/"/"/g;
$value =~ s/</</g;
$value =~ s/>/>/g;
$value =~ tr/\r\n//d;
$cgi{$names}=$value;
}
}
234nobodyさん:02/10/22 21:22 ID:???
>>223
環境によってperldocを通らないことがあるからではないですか。
オンラインマニュアルに求められるのは、なるべくどこでも読めることですから。
これから学習して腕を上げていかれるかと思いますが、間違っても>>226のように
人を見下すことしかできない厨房にはならないでくださいね。
235nobodyさん:02/10/22 21:35 ID:???
>>233
それは名前の処理で本文の処理ではないんじゃ
236nobodyさん:02/10/22 21:43 ID:???
>>233
>$value =~ tr/\r\n//d;
これ
237iui:02/10/22 21:52 ID:nQEHGPbT
>>235
>>236
様、有難うございます。確かにtrされてますね。恥かしい。
すいませんでした。
これを<br>に置換してやって見ようと思います。

あと、もう一つすいませんが、半角カタカナはどのように
すれば文字化けせずに表示できるのでしょうか?
これもデコード処理によるものなのでしょうか?
調べる取っ掛かりになるヒントだけでも良いのでお願いします。

238nobodyさん:02/10/22 21:58 ID:???
>>237
・ まずjcode.plはあるのかどうか。
・ require 'jcode.pl'; してるのかどうか。
・ $mycode = 'euc(もしくはsjis)'; があるのかどうか。
239nobodyさん:02/10/22 22:01 ID:???
あと表示するHTMLで文字コードを明記してるのかどうか。
<meta http-equiv="Content-Type" content="text/html; charset=EUC-JP(もしくはShift_JIS">
240nobodyさん:02/10/22 22:05 ID:???
掲示板とかで半角カナの文字化けを防ぐには変換しないってのが正解じゃない?
通常SJISだからそれ以外は投稿できないように(2chはこうなってるはず)
無理にjcodeを使うから文字化けするのでは?

文字コードに関しては無知なのであってるかどうかは分からんが
241iui:02/10/22 22:15 ID:nQEHGPbT
度々すいません。また、此方の情報不備でした。

jcode.plはあります。
require 'jcode.pl'; も宣言しています。
$mycode = 'sjis'; にしています。
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS>でやっています。

>>240
するとSjisでないと文字化けするということですか?
テスト書き込みの際はSJISでやったのですが文字化けが起こって
しまいました。



 
242240:02/10/22 22:27 ID:???
>>241
言い方が変だったかな?
SJISで半角カナを書き込むと、それがEUCのコードと一致してEUCとみなさえれて文字化けします(たぶん)
だからjcodeの仕様だと文字化けが起こるのはしょうがないと思われ(たぶん)
ということで文字化けを防ぐなら変換しないのがいいと思われ。

さっきからただの勘違いだったらスマソ
243iui:02/10/22 23:15 ID:???
なるほど。夜分まで付き合っていただき有難うございます。
とりあえず明日、jcodeを洗って見ようと思います。
もしかしたら明日もまたご厄介になるかもしれませんが
よろしくお願いします。
244nobodyさん:02/10/23 00:41 ID:???
>>234
>>226を叩くひまがあれば、英語を読めない人のために和訳をつけてやれよ。
変な訓示よりもそっちのほうが役にたつだろ。
245nobodyさん:02/10/23 01:04 ID:???
つーか、英語読めずにプログラミングやってるのか…?
246nobodyさん:02/10/23 01:18 ID:???
>>244
「それとも単なるかっこつけですか?」なんて事書いてる馬鹿に
マジレスしてる時点で、>>234は脳みそがイカレてると思われ。
247nobodyさん:02/10/23 01:52 ID:???
>>245

> つーか、英語読めずにプログラミングやってるのか…?

こういうこと言う人けっこういるけど
よく聞いてみるとほとんどの奴は和英ソフトとかに頼ってんだよね
実際には単語をちょいちょいくらいしか読めないやつがね、多いね。
248nobodyさん:02/10/23 02:26 ID:???
> つーか、英語読めずにプログラミングやってるのか…?

すいません、foreachとかcryptとか
意味すら調べないまま認証制のCGI自作して使ってます。
249nobodyさん:02/10/23 04:57 ID:???
>>247-248
こういうこと言う人もけっこういる罠
250nobodyさん:02/10/23 05:04 ID:???
>>241
perlはEUCで書きましょうや。そうすりゃjcodeなくても化けないし
251nobodyさん:02/10/23 09:19 ID:???
>>248
foreach, cryptみたいな基本的な単語でさえ、これか… という
感じはあるけど、せめてMLとかできちんとエラーが表示されて
いるのに、「わけのわからないエラーが出て」みたいなやつは
逝ってよいと思う。
252nobodyさん:02/10/23 10:10 ID:???
>>250
フリーのCGI配布サイトって半分以上がs-jisで書いてますよね。
おそらくそういう人たちが模範的にEUCで書いてくれれば
perlを覚えてみようという人たちも真似てEUCで書くと思うんですよね。
あ、もしかして、フリーのサイトは配布用は初心者が開いて文字化けしてる、と混乱しないように
s-jisで書いてくれてるんですかね。
253nobodyさん:02/10/23 11:13 ID:???

LWPでHTTP要求したときに一定時間応答がなかったらタイムアウト
させたいのですが、どうしたらいいですか?
254nobodyさん:02/10/23 12:15 ID:???
>>253
% su - root
% shutdown -r now
255nobodyさん:02/10/23 13:22 ID:???
<input type="checkbox" name="okasi" value="poteti">ポテチ</input>
<input type="checkbox" name="okasi" value="tyoko">チョコ</input>
こうやってチェックボックスがあって、nameが同じ時はどうやって値を取得したらいいですか。
getで引数を確認したら、?okasi=poteti&okasi=tyoko こうでした。
$buffer = $ENV{'QUERY_STRING'};
local(@pairs) = split(/&/,$buffer);
foreach $pair(@pairs){
 local($name,$value) = split(/=/,$pair);
 $FORM{$name} = $value;
}
@FORM;

これにどんな手を加えればいいんでしょうか。
256nobodyさん:02/10/23 13:27 ID:???
>>255
nameが同じってのを何とか汁!!
257nobodyさん:02/10/23 13:36 ID:???
>255
やり方はあるけど、>256の言う方が正しい。
258nobodyさん:02/10/23 13:41 ID:???
>>256-257
確かにnameを別々のにすればなんの問題も無いんですけど、
普通チェックボックスってグループが同じだとnameは同じですよね?
やり方があるのなら教えて欲しいんですけど。
259nobodyさん:02/10/23 13:47 ID:???
>258
無駄に鯖負荷増やすだけだからやめれ。
グループが同じでnameが同じなのはチェックボックスじゃなくてラジオボタン。
260nobodyさん:02/10/23 13:50 ID:???
cgi-lib.pl風でいくと

$FORM{$name} .= "\0" if (defined($FORM{$name} )); # \0 is the multiple separator
$FORM{$name} .= $value;
261x:02/10/23 14:07 ID:YR7PdIKr
これって本当か?

↓ ↓ ↓
http://www.dream-express-web.com/space-trust.htm
262名無しさん@Emacs:02/10/23 16:28 ID:???

>>254
つまらん
263nobodyさん:02/10/23 17:00 ID:???
IDを自動発行する時、使用する文字は半角英字小文字だけにしたとします。
すると使える文字数は26文字になります。桁数は6文字です。
最大で26の6乗個=308915776個のIDが使える計算なんですが。(合ってますかね?)
生成されたIDが既に登録されている場合はもう一度生成し直す。
という風に考えていますが何か問題ありますでしょうか。
ちなみにID発行数は約1万個前後くらいだとした場合です。
------------------------
# 候補文字列を定義
@char = ('a'..'z');
# 乱数で種を抽出
srand;
$salt = $char[int(rand(@char))] . $char[int(rand(@char))] . $char[int(rand(@char))] . $char[int(rand(@char))] . $char[int(rand(@char))] . $char[int(rand(@char))];
print "$salt";
264nobodyさん:02/10/23 17:10 ID:???
srand;
print $char[int(rand(27))] for(0..5);

とりあえずこっちのほうが短いけど改造するとき大変。
265264:02/10/23 17:18 ID:???
間違えた鬱死。

srand;
print (('a'..'z')[int(rand(27))]) for(0..5);

上のが正解。
でもこれだと出来たIDが保存されないから、するなら

srand;
$salt.=(('a'..'z')[int(rand(27))]) for(0..5);
print $salt;

ていうか>>263は短いソースを求めてるわけじゃないんだけどね・・・
同じのがいくつも出てきたから直したくなってしまったスマソ
266263:02/10/23 19:42 ID:???
>>264
レスありがとうございます。
流れ的には悪くはないんですよね?


IDを自動発行にしたのは、IDをユーザーが好きなのに決めるタイプだと
重複していた場合「このIDは既に登録されています、別の・・・」
というエラーを出さないといけないからです。
これってユーザーにとっては結構わざらわしいですよね。
高アクセスのサイトとかじゃないと重複する事はあまりないと思いますけど。
だったら自動でID発行した方が良いと思いこのタイプにしました。
て、別に説明するまでもないと思うんですが・・・。
267nobodyさん:02/10/23 19:48 ID:???
aaaaaaから順番に発行したらだめなの?
268nobodyさん:02/10/23 20:09 ID:???
ところで>>266は自分の書いたソースを確認したかっただけなの?
269253:02/10/23 20:14 ID:???

自己レス。
>LWPでHTTP要求したときに一定時間応答がなかったらタイムアウト
>させたいのですが、どうしたらいいですか?

$ua->timeout([$secs])
秒単位でタイムアウト(timeout)を取得/設定します。
デフォルトのtimeout()の値は180秒、つまり3分です。

ちょっと調べたらすぐ出てきました。ごめんなさい。
270263:02/10/23 20:22 ID:???
>>267
いえ、別にいいと言えばいいですが、、、
でも普通の会員サイトでIDを自動でくれるとこは連番とかで出してるとこ少ないですよね・・・。
なんででしょう。。

>>268
はい、そうです。すみませんでした。
自分で考えてやってたので不安でしたので。
携帯向けと仮定しているので、数字や英字の小文字、大文字が混じると
IDの入力が面倒だと思って英小文字に限定したりするのは自分で決めたんですが、
あんまりそうやってるとこ無くていいのか確かめたかったんです。
271iui:02/10/23 20:40 ID:GY8eUNRB
お世話になっています。
昨日皆様のご教授によりフォーム内の改行は解決しました。
デコードで改行コードを排除していたのが原因でした。

しかし、半角カタカナの問題が解決できません。
素直にEUCつかえば・・・もっともですが、やはりここまで
悩んだのならSJISで行きたいのです。勝手な思い込みで申し訳有りません。

先日も述べたように全てのソースにsjisを指定しております。
しかし上手く行きません(ンパ=>保狂になる・・・)
2CHはいったいどのような処理をしているのでしょうか?
すべてsjisで処理しているようですが、なぜ文字化けしないのでしょう?
jcode.plの違いなのでしょうか?デコードの問題なのでしょうか?
サイト巡りをしていると「表示」というのも文字化けする
との事ですが、これは文字化けしませんでした。
これはjcode.plが進化したという事なのでしょうか?
なんか取り留めのない質問ですがよろしくお願いします。
272nobodyさん:02/10/23 20:43 ID:???
質問です。

STDERRへの出力の時に、「YYYYMMDD-hh:mm:ss:エラーメッセージ」というようにしたいのです。

open(STDERR, '| sed -e"/^/`eval date +%Y%m%d-%H%M%S`/"');
だと、perlインタプリタが `eval date +%Y%m%d` を評価した時間になってしまい、
実際にエラーが出た時間で出力されませんでした。

$main::SIG{__DIE__}=\&hogehoge のようにSTDERRへの出力イベントをハンドルできるかと思って
調べたけど、ないようでした。

どなたかご存知でしたらご教授願います
273 ◆hMJAPH9PWA :02/10/23 21:04 ID:???
>>272
timeとlocaltimeを調べよ。
274272:02/10/23 21:25 ID:???
ばーか
275nobodyさん:02/10/23 21:35 ID:???
>>271
> 素直にEUCつかえば・・・もっともですが、やはりここまで
> 悩んだのならSJISで行きたいのです。勝手な思い込みで申し訳有りません。

意味不明なんだが。そういう思い込みで仕様を決めるって厨房??
276nobodyさん:02/10/23 21:47 ID:???

そういえば、2chのAAをJcodeでShift_JISからEUCにすると
すると化ける文字があるけど。
277nobodyさん:02/10/23 21:52 ID:J0Bj1TbG
>>271
SJISで送信してくるとわかってるUAに対しては
jcodeを通す必要がないのでは?
そうすれば文字化けも起こらないと思われ
278_gunzip ◆eiH/XdoCNg :02/10/23 21:56 ID:???
>>272
$SIG{__WARN__} = \&my_warn_handler;

sub my_warn_handler
{
my $now = strftime "%a %b %e %H:%M:%S %Y ", localtime;
print STDERR $now, @_;
}
279_gunzip ◆eiH/XdoCNg :02/10/23 21:57 ID:???
use POSIX qw[strftime]; 忘れた。
280nobodyさん:02/10/23 23:07 ID:???
>>271
2chはSJISでしか投稿できないようになってるはず
EUCだと判断したら書き込めない仕組みだと思う
その判断はjcodeなのか何なのかはわからない

あと、スクリプトの文字コードって送信される文字コードとは関係ないのでは?
まあファイルに何か書き込むときにはスクリプト内の文字コードと送信された文字コードを一致させないといけないけど

それと「表示」が化けるのはS-JISでスクリプト内に書いた場合(print "表示";)
送信されてくる文字は無関係
281nobodyさん:02/10/23 23:18 ID:???
_gunzipという名前を久しぶりに見た。
282nobodyさん:02/10/24 01:32 ID:???

>280
俺はページがSJISならSJISで送信されるもんだと思ってた。
詳しい人解説キボン。
283眠いyo...:02/10/24 01:56 ID:???
>>272 こんなんは?

#!/usr/bin/perl -w

use strict;

package LogHandle;
require Tie::Handle;

@LogHandle::ISA = qw(Tie::StdHandle);

sub TIEHANDLE {
open(SV, ">& $_[1]");
bless \*SV, $_[0];
}

sub PRINT {
*SV = $_[0];
my @t = (localtime);
print SV sprintf('%d%02d%02d-%02d:%02d:%02d: %s',
$t[5] + 1900, $t[4] + 1, @t[3, 2, 1, 0],
"$_[1]");
}

sub PRINTF { PRINT($_[0], sprintf("$_[1]", @_[2 .. $#_])) }
sub _fh { *{$_[0]} }

# つづく…
284283:02/10/24 01:57 ID:???
# (283 の続き)

package main;

tie(*LOG, 'LogHandle', 'STDERR');
*STDERR = \*LOG;

print STDERR "ハァ?\n";
warn('ヒィ?');

sleep(1);
printf STDERR "フゥ%02d?\n", 2;

*STDERR = tied(*LOG)->_fh;
close(LOG);

warn;
die('ヘェ?');

__END__
285kiki:02/10/24 02:09 ID:MQ2xHT1g
質問です。
アンケート用のCGI(Perl)についてです。

現在、枝分かれする質問から、
その質問の回答により質問ページが決まるようになっています。
以下のとおりです。


my ($next_tmpl, @loop);
foreach my $n (grep (/^enq_ans_\d+$/, (keys %form))){
$n =~ m/enq_ans_(\d+)/;
my $num = $1;
if($form{$form{enq_branch}} eq $form{$n}){
$next_tmpl = $form{"enq_template_$num"};
last;
}
}

my $template = HTML::Template->new(filename => "template/$next_tmpl",
(die_on_bad_params => 0)
);


enq_branchの質問の回答であるenq_ansからenq_templateを決めるというものだと思うのですが、これをただ単にenq_templateを決めるだけにしたいときはどのように記述すればいいのでしょうか?

HTMLのほうに
<INPUT TYPE="hidden" NAME="enq_template_1" VALUE="○○.html">
と埋め込んで、○○.htmlへ質問の回答を送りたいのです。

どうか教えてください。
286nobodyさん:02/10/24 02:29 ID:???
>>282
ページがSJISでもEUCで送ることもあったはず。
ゆいチャットのページにそれ系の調査結果が載せてあったような。
とりあえずWindowsでページがSJISだったらSJISで送ると思っていいんじゃないかな。
287nobodyさん:02/10/24 03:20 ID:???

最近HTML::Template使い始めたんですが、メインページのパーツ
のテンプレートから更にテンプレートを作ってそれをメインの
テンプレートに埋め込んで最終的にメインのページを作るってな
ことは普通にやるものですか?


288nobodyさん:02/10/24 08:58 ID:???
>>287
意味が分かりません。
289nobodyさん:02/10/24 09:35 ID:???
8文字の数字って正規表現だと \d{8} これで合ってますか?
8文字未満だとちゃんとエラーが出るんですけど、9文字以上だとスルーしちゃいます。
290nobodyさん:02/10/24 09:51 ID:???
>>289
とりあえず全部書いたら?
291nobodyさん:02/10/24 10:13 ID:???
>>290
はい、すいません。lengethで見ることにしました。

あと、$numに4桁の数字が入っているとして4桁とも同じ数字(3333)とかだったら警告する時は
$num = "3333";
($a,$b,$c,$d) = split(//,$num);
if(($a eq $b) and ($b eq $c) and ($d eq $d)){
 print "警告";
}
これでいいでしょうか。もっと簡単なやり方ある気がするんですけど。。。
292nobodyさん:02/10/24 10:53 ID:???
>>291
ビット演算して
if(($a & $b & $c) == $d)
かな

数字の比較はeqじゃなくて==
293nobodyさん:02/10/24 11:33 ID:???
if(($a & $b & $c & $d) == $d)
294nobodyさん:02/10/24 11:48 ID:???
>>291
print "警告!" if $num =~ m/^(\d)\1\1\1$/;
とかじゃダメ?
295nobodyさん:02/10/24 12:38 ID:???
>>282
送信される文字コードはOSで決まると思われ
296nobodyさん:02/10/24 12:50 ID:???
>>295
少なくともWin版のIE6.0,Mozilla1.1,Opera6.05,NN4.78はページの
文字コードで送信しますが?
もちろん何かの拍子に別のコードで送ってしまう事もあるでしょうが。
297nobodyさん:02/10/24 12:58 ID:???
>>296
きみが正解! SJISでしかページを書いてない人は、意外と知らないよ
298295:02/10/24 12:58 ID:???
>>296
ん、勉強になった。
299nobodyさん:02/10/24 13:32 ID:???
KENTのCGIで、暗号化部分なんですけど。
@char = ('a'..'z', 'A'..'Z', '0'..'9', '.', '/');
srand;
$salt = $char[int(rand(@char))] . $char[int(rand(@char))];
$crypt = crypt($inp, $salt) || crypt ($inp, '$1$' . $salt);
$crypt;
これの
$crypt = crypt($inp, $salt) || crypt ($inp, '$1$' . $salt);
この行の || 以降の部分が意味がわかりません。
$crypt = crypt($inp, $salt);
こうやってただcryptするだけじゃいけないんですか?
300nobodyさん:02/10/24 13:47 ID:???
CRYPT_MD5
301nobodyさん:02/10/24 17:14 ID:???
>>295
RFCでは決まっていないからブラウザ依存なはずです。
302nobodyさん:02/10/24 18:14 ID:???
303nobodyさん:02/10/24 18:23 ID:???
>>302
- - -
まとめると・・
ほとんどのブラウザは、ページの漢字コードと同じコードでエンコードする。
ページの漢字コードがSJIS以外の時にSJISでエンコードするブラウザがある。
- - -
ちょっとイヤンな気分だ。
304nobodyさん:02/10/24 21:01 ID:hTxulthN
http://ruffnex.oc.to/ipusiron/hyoujyunn_tokumei_mail.htm
ここにある匿名メーラー設置したら
http://suraimu.s21.xrea.com/tokumei/tokumei.html

The script did not produce proper HTTP headers.
Please see the error log to see the detail of the errors.
Depending on the server configuration, you can also run this script under CGI
Wrap debugging. Usually, either rename or link the script temporarily to a file which ends with .cgid extension, or add a
AddHandler cgi-script-debug .cgi line to your .htaccess file.

ってエラーがでました。どうすれば直りますか?
305主婦のサークルで〜す:02/10/24 21:19 ID:2CJLXaF+
ほんの少し刺激を求めてる主婦のサークルを作りました!
私たち主婦が楽しめる安全でちょっとトキメキのある出会を求めて
只今男性会員を募集中です!! 女性会員も募集(^○^)/"
http://f-cc.com/~tokimail/
306nobodyさん:02/10/24 23:18 ID:???
307nobodyさん:02/10/25 00:56 ID:NH/dosqC
http://x68000.startshop.co.jp/~68user/net/http-3.html
このページのソースを参考にして外部のHTMLを参照しようとしているのですが
特定のサーバーから正常に取得できません
例えば
http://www.yomiuri.co.jp/04/20021024ic42.htm
をこのクライアントで読み込むと
(以前省略)<H1>Invalid URL</H1>
The requested URL "??ic42?htm", is invalid.<p>
</BODY></HTML>(以降省略)
となぜか/や.が文字化けして返ってきます
$pathは正常で、文字化けしていない状態なのですが
どなたか助言お願いします
308nobodyさん:02/10/25 01:02 ID:???
>>307
1つ前のページのヤシを使ってみては?
309nobodyさん:02/10/25 01:27 ID:???
前のページの簡易版で
print SOCKET "GET /04/20021024ic42.htm HTTP/1.0\r\n";
というふうに直接指定しても同じように
The requested URL "&#47;04&#47;20021024ic42&#46;htm", is invalid.<p>
と返ってきました

と、ためしにhttpからこんな風に入力してみたら
print SOCKET "GET http://www.yomiuri.co.jp/04/20021024ic42.htm HTTP/1.0\r\n";
無事正常に取得できました
お騒がせしてすみませんでした
310nobodyさん:02/10/25 17:38 ID:???
*.cgiにカウンターを埋め込もうと思い、
counter.cgiのperlへのパスの所をpackage counter;に書き換えて
*.cgiに
require './counter.cgi';
と記述したのですが、ローカル(Win)鯖ではrequire 以下も表示されたのですが
プロホスティングにupすると、それ以下が表示されません。

エラーが出るわけでもないので、どうしたらいいか分かりません。
ヒントを頂けないでしょうか?
311nobodyさん:02/10/25 20:33 ID:???
>>310
counter.cgiの中でexitしてるとか(それならローカルでも動かないか・・)
312nobodyさん:02/10/25 23:22 ID:???
今Perlで掲示板を作っているのですが、
名前、タイトル、文章を書きこむページをbbs.htmで作っておいて、
送信ボタンが押されるとPerlの方で、STDIN・QUERY_STRINGで取得できるのは分かりました。
文字を取得してPerlの中にHTMLのタグを記述して取得した文字を表示したのですが、そこで終わってしまいます。
Perlからまたbbs.htmにジャンプする場合どうすればよいのでしょうか?

また2chなどのようにbbs.htm(書きこむページ)を作らずに、1つのPerl上で掲示板を作る場合、

print <<"END";
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<FORM ACTION="http://***.****.**.**/*****/******" METHOD="POST">
投稿者<INPUT TYPE="text" NAME="name" SIZE="100" MAXLENGTH="50"><BR>
タイトル<INPUT TYPE="text" NAME="title" SIZE="100" MAXLENGTH="50"><BR><BR>
<TEXTAREA ROWS="7" COLS="50" NAME="box"></TEXTAREA><BR><BR>
<INPUT TYPE="submit" VALUE="送信">
</FORM>
</HTML>
END

とした場合submitから送られた文字はSTDINで受け取るのでしょうか?それともQUERY_STRINGで受け取るのでしょうか?
まだPerl始めてまもないもので分かりづらいと思いますがお願いします。
313nobodyさん:02/10/25 23:55 ID:???
>>312
http://www.aikis.or.jp/~s-suzuki/cgilabo/kouza/cgi2.html

5.ブラウザからの引数の渡し方
5.1 フォームから送信
5.2 METHOD="get"とMETHOD="post"
5.3 フォーム処理のCGI例(METHOD="get"の場合)
5.4 フォーム処理のCGI例(METHOD="post"の場合)
を読めばわかるべ。読んでわからなかったらまた聞いて。
314312:02/10/26 01:34 ID:???
>>313さん
上の「Perl」って表現じゃなくて「CGI」のほうが良いのですね。すいません。
フォームから来た文字をPOSTの場合とGETの場合で取得するのはわかったのですが、
一度掲示板に書きこむと終わってしまうので、続けて2回3回と書きこむ場合はどうすればよいのでしょうか?
それと、HTMLとCGIを両方を使用した掲示板ではなく、CGIのみで掲示板を作る場合はどうすればよいのでしょうか?

今作っている掲示板の状況です。書き込み用のページをHTMLで用意しています。【bbs.htm】
<HTML>
<HEAD>
<TITLE>サンプル</TITLE>
</HEAD>
<FORM ACTION=http://***.*****.or.jp/*******/bbs.cgi METHOD=POST>
<FONT face="MS ゴシック">
投稿者:<INPUT TYPE=text NAME=name SIZE=50 MAXLENGTH=50><BR>
題名 :<INPUT TYPE=text NAME=title SIZE=48 MAXLENGTH=50><BR><BR>
<TEXTAREA ROWS=7 COLS=40 NAME=textbox>メッセージ</TEXTAREA><BR><BR>
<INPUT TYPE=submit VALUE=送信>
</FONT>
</FORM>
</HTML>
315312:02/10/26 01:38 ID:???
(つづき)
こっちがCGIです。【bbs.cgi】
#!/usr/local/bin/perl
$buffer="";
$data="";
@date_str_dim;
$num="";
$dummy="";
$count=0;
if($ENV{'REQUEST_METHOD'} eq "POST"){
read(STDIN,$buffer,$ENV{'CONTENT_LENGTH'});
}else{
$buffer=$ENV{'QUERY_STRING'};
}
@buf=split(/&/,$buffer);
foreach $data(@buf){
($dummy,$num)=split(/=/,$data);
$num=~ tr/+/ /;
$num=~ s/%0D%0A/<BR>/g;
$num=~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg;
@data_str_dim[$count]=$num;
$count++;
}
($toukou_name,$toukou_title,$toukou_bunsyou)=@data_str_dim;
print <<"end_print";
content-type: text/html\n\n
<HTML><HEAD><TITLE>サンプル</TITLE></HEAD>
投稿者:$toukou_name<BR>タイトル:$toukou_title<BR>$toukou_bunsyou<BR></HTML>
end_print
exit;
316nobodyさん:02/10/26 02:13 ID:???
>314
最初からCGIにアクセスすればhtmlは要らない。
本文が空のときは表示だけする。
書込み後も表示する。
FORMも含めて全部CGIから送出すればよい。
317nobodyさん:02/10/26 13:17 ID:???
>>313
で、あとは何がわからないの?
318272:02/10/26 13:42 ID:???
しばらく2chをみてなくて、返事が遅れてしまいすみません。

>>272 さん
ご回答ありがとうございます。これは、、、いけそうですね。
来週の月曜に試して、それから再度結果を書き込みます。

ここには書いてませんが、ご返答下さった皆さん、ありがとうございました。
319272:02/10/26 13:46 ID:???
318の書き込み間違えました。s/>>272/>>283/
>>283 さん にお礼をいいたかったのです。

(自分で自分にお礼をいってどうする、俺)
320312:02/10/26 17:32 ID:???
>>313,316さん
すこしずつ形になってきました。
書き込んだの文章を保存する処理はまだですけど、なんとか頑張ってみます。
ありがとうございました。
321 ◆hMJAPH9PWA :02/10/26 19:12 ID:???
warn/dieをトラップするのなら>>278にあるように$SIG{__WARN__}, $SIG{__DIE__}を使った方が軽くていいと思われますが。
322nobodyさん:02/10/27 00:11 ID:???
AwkとPerlは実際どちらが、速いのですか?
323nobodyさん:02/10/27 00:20 ID:???
>322
出来ることが違うんだからスピードなんか比較すんな。
AWKで出来ることしかしないならAWKつかっとけ。
324rubyist@カラアゲうまうま:02/10/27 01:30 ID:???
Perlしかできない糞厨房どものたまり場はここですか?
325nobodyさん:02/10/27 02:03 ID:???
perlもできない>>324が来るスレです。
326nobodyさん:02/10/27 03:56 ID:bCdIKdeb
同じ処理ならPerlの方が速い。(よっぽど簡単な処理でもない限り)
AwkのできることはみなPerlにできるが逆は真でない。
よって、Perlでやるが吉。
327nobodyさん:02/10/27 04:47 ID:???
上級者えwkjgfっちうえうふぃえwrふぇrfdgbjfdぶほfdbjhっpjp
328nobodyさん:02/10/27 08:38 ID:???
最近良く見かける、
#! perl

って文頭に書くのはどういう意味でショーか?

パス通さなくていいの?


329322 :02/10/27 08:40 ID:???
へー、そーなんですか?

-rwxr-xr-x 2 root root 708188 8月 10 2001 /usr/bin/perl*
-rwxr-xr-x 2 root root 224860 7月 31 2001 /bin/gawk*

プロセスのサイズとかでワンライナーとかのときは、
プロセス起動(ロード)時間って関係してこないのでしょうか?
330nobodyさん:02/10/27 11:36 ID:???
>>329
何故自分で実測してみないのだ?
331rubyist@カラアゲうまうま:02/10/27 12:12 ID:???
>>328
程度ひくぅ
一からUNIXとシェルの勉強やり直したら?
332 ◆hMJAPH9PWA :02/10/27 12:15 ID:???
>>328
Unixで実行可能コマンドにするためにはパスは必要だよ。
でも単に#!perlとするだけでもその行のコマンドラインオプションが有効だし、
どこからコードになるのかを明示するためにも(-xオプション参照)そうしてる。
333nobodyさん:02/10/27 17:01 ID:???
誰かruby使いの奴の相手してあげろよ
334nobodyさん:02/10/27 18:01 ID:vtRyJ45U
あるHPにアクセスした場合、アクセス解析があるのかどうか、
どうしたらわかるんでしょうか?
ソースを表示したらなんて書いてあるのですか?
超初心者ですみません。
教えて下さい。お願いします。
335nobodyさん:02/10/27 18:08 ID:???
>>334
<!-- アクセス解析はじめました -->
336nobodyさん:02/10/27 19:25 ID:???
普通webサーバのログをみて解析しますから、HP見ただけではわかりません。
337nobodyさん:02/10/27 23:57 ID:pqTA1DY8
また、ruby基地が紛れ込み始めたから注意しろ。
あいつ周期的に出てくるな。ム板のrubyスレでもあほ言ってる。
338nobodyさん:02/10/28 00:02 ID:???
ImageMagick & perlで
画像の高さ・幅のどちらかが200ピクセル以上ならば
大きい方を200にしてリサイズするスクリプトって
どんな風に書けばいいのでしょうか?

ぐぐっても情報がすくないんで よろしくお願いします。
339_gunzip ◆eiH/XdoCNg :02/10/28 02:28 ID:???
>>338
$ ./thumb.pl infile.jpeg output.jpeg 200
のように使ってね。

#!/usr/local/bin/perl

use strict;
use Image::Magick;

die "usage: $0 infile outfile pixel" if @ARGV != 3;
my ($infile, $outfile, $pixel) = @ARGV;

create_tumbnail($infile, $outfile, $pixel);

sub create_tumbnail
{
    my ($infile, $outfile, $pixel) = @_;
    my $image = new Image::Magick();
    $image->Read($infile);
    my ($width, $height) = $image->Get("width", "height");
    my $r = $width > $height ? $width / $pixel : $height / $pixel;
    if ($r > 1) {
        $image->Resize(width => $width / $r, height => $height / $r);
    }
    $image->Write($outfile);
}
340nobodyさん:02/10/28 06:18 ID:???
$hoge = "0x01";
この$hogeを数値として扱う方法は無いでしょうか?
ただ、0x01のかたちは崩さないようにしたいんです。

pack("C*",$hoge)とpack("C*",0x01)じゃ同じ結果が出なかったので。。
341nobodyさん:02/10/28 11:42 ID:???
>>340
eval "\$hoge = $hoge";
342nobodyさん:02/10/28 17:41 ID:???
Perlで、
symlinkでシンボリックリンクファイルを生成したら
全部不可視ファイルになってしまいました。
どうすれば可視ファイルになるんでしょうか?
それから、symlinkで生成したシンボリックファイルを
読み込むことも消すことも出来ません。
343nobodyさん:02/10/28 18:37 ID:MVvLcWrn
>>342
ApacheならOptions +FollowSymLinkにしてみたら
344nobodyさん:02/10/28 18:39 ID:???
>>341
うまくできましたTHX!
345nobodyさん:02/10/28 19:18 ID:MHCjzLTr
javascirptで、

function a(){
with(document.forms[0]){
alert('testtest');
  elements[0].value=100;
}
}

ってやっても普通に表示されると思いますが、
この場合はalertには(document.forms[0])は付加されないんですか?
付加されたらエラーですよね?
でもelements[0]には(document.forms[0])が付加されないと
エラーですよね?

その辺の切り分けはjavascriptではどうなっているのでしょうか?


346nobodyさん:02/10/28 19:18 ID:MHCjzLTr
失礼しました。。
Perlのスレでした…。
347nobodyさん:02/10/28 19:21 ID:???

ループで
000000から、ffffffまでの全ての色を表示するHTML文字を出力したいんですが、
やばいかな?

6桁だから、10進数で考えても十万ループだよね?
しかもこれ16進数。

CGIで動かしたいから鯖が落ちると困るんですよ。

このくらいのループって余裕なんですか?
それとも無謀ですか?

と言うか出力された画面を見るのも大変そうだね。
10万以上だから。
348nobodyさん:02/10/28 19:23 ID:V8hOlb/A
ゲームCGI置いてるんですが、データをそのままで別の鯖に移動する事はできますか?
さっきやったらどうしてもエラーが出るんですが・・
349nobodyさん:02/10/28 19:29 ID:???
>>348

全部コピーすれば?
レンタルサーバの場合、ファイル構造の制限をちゃんと理解して
プログラムのファイル指定をしっかり変更する事。
350nobodyさん:02/10/28 19:53 ID:OVLPNyBE
うまくいかずに困ってます。是非、ご教授ください。

バックグラウンドでプログラムを走らせる実験として
test.phpというプログラムとtest_back.phpという
プログラムを作りました。
=======test.php==========
<?php
system ("/home/sites/home/test_back.php > /dev/null &");
echo "OK";
>
=======test_back.php========
<?php
sleep (30);
>
=====================

という風に、test.phpから、test_back.phpを
呼び出して、30秒間sleepするものです。

しかし、ps で確認しても、うまく呼び出されていないようです。
そのため、test.phpのほうの  > /dev/nullを抜いて試してみた
のですが、すぐにOKが表示されるので、やはり呼び出されていないようです。

色々と調べて、自分では、間違っていないつもりなのですが、
問題点が、分かりましたら是非、教えてください。お願いします。

351350:02/10/28 19:57 ID:???
失礼しました。perlスレでした。
PHPスレに逝って来ます。。
スレ汚しすみませんでした。
352nobodyさん:02/10/28 20:10 ID:???
ログイン機能の作り方を教えてください。
353名無しさん@Emacs:02/10/28 20:16 ID:???
(゚Д゚)ハァ?
354nobodyさん:02/10/28 20:49 ID:???
いらっしゃーい、Perlの「コーディング」で困ってる人のスレです。

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

1と3が無いと誰も答えられないよ。
良い回答は良い質問から。一緒に勉強しましょう。
355rubyist@カラアゲうまうま:02/10/28 21:08 ID:???
馬鹿ばっか
356347:02/10/28 21:38 ID:???
347はどうなの?
馬鹿なんですか?
357rubyist@カラアゲうまうま:02/10/28 21:40 ID:???
perlなんかやっている時点で馬鹿です。
358 ◆hMJAPH9PWA :02/10/28 21:51 ID:???
>>356
…それは不可能だよ。0xffffffって約一千六百万だよ。
それだけのループも大変だけど、
それらの組み合わせ全てを出力すると100MB超えると言うことを考えると、
無茶にも程があるってもんです。
359347:02/10/28 22:15 ID:???
やっぱ馬鹿でしたね。。
出なおしてきます。


では、表示出来る色を全部一気に見る方法はありますか?

perlじゃなくなってきてごめんなさい。
360nobodyさん:02/10/28 22:34 ID:???
>>359
画像エディタのグラデーションバーでも見てりゃいーじゃん
つか1色ずつ判別できるとでも言うのか
ttp://tohoho.wakusei.ne.jp/wwwjscol.htmこの辺で遊んでれ
361nobodyさん:02/10/28 23:10 ID:???
1024*768に1ドットづつ表示しても786432(768K)色しか表示できないんだぞ。
ffffffというと16M色だぞ、どうやって一気にみると言うのだ?
362nobodyさん:02/10/28 23:42 ID:???
>347

絵の具でも混ぜてろってこった
363nobodyさん:02/10/28 23:59 ID:???
>絵の具でも混ぜてろってこった

( ´,_ゝ`) プッ 頭弱そう
364nobodyさん:02/10/29 00:11 ID:expKwbl4
>363
黄色でも食ってろよ
365342:02/10/29 00:18 ID:???
>>343
書いてみたんですがダメでした・・
Options +FollowSymLink
ですよね・・
366nobodyさん:02/10/29 01:38 ID:???
>>365
どこで見れないのさ?
FTP?ならFTPクライアントに設定項目あるはず。
UNIXシェル?なら ls -alLF で見れるはず。

そもそもほんとにシンボリックリンクが作成されてるのかどうかを疑う。
367365:02/10/29 08:50 ID:???
>>366
Telnetでls -lで参照してみたらちゃんとシンボリックリンクが存在するんです。
でもFFFTPで見てみると不可視ファイルになってて
設定でLISTコマンドで取得で見てみたら
一応シンボリックリンクは存在するけどシンボリックファイルが全て
<DIR>とかになってて、
Web上からアクセスしに行ってもForbiddenとかになってます。

Perlに関係無ければ他所の板行きますが、
Telnetでls -sで作った時はちゃんと可視ファイルになっていて
Perlで生成した時は何故か不可視ファイルになってたもので。。
368365:02/10/29 08:54 ID:???
>>367 に追加
多分Perlでシンボリックリンク「ファイル」生成したはずが
「ディレクトリ」になっちゃってるのが原因だと思うんですが・・

symlink ("test.cgi","../$id/test.cgi");

でファイルにはならないんですか?
369nobodyさん:02/10/29 09:21 ID:NNir1Y8I
LWPのHTTP::Request::Commonなのですが
ファイルを読み取って、その中の内容をPOSTするのに、
[ $file, $filename, Header => Value... ] とか
init => ["$ENV{HOME}/.profile"],とかあるのですが、
上手くいかないのですが。実際./test.txtをpostするときは
どう記述すればよいのでしょうか?おねがいすます。

370369:02/10/29 10:29 ID:NNir1Y8I
追加。
textfileのアップロードではなく、テキストエリアにファイルの内容を
入力したものを送信する状態です。
371369:02/10/29 10:55 ID:???
解決しました。
ここに書き込むと自己解決できるすばらしいすれっ度ですね。
ありがとうございました。
372365:02/10/29 11:24 ID:???
368の問題自力で解決しました。
373nobodyさん:02/10/29 13:31 ID:rgUUtj5z
フォームメールからの受信内容で「NsNu」という文字化けがたまに発生します。
エージェントを見るとマックからだけで、Winからはこの現象は発生しません。
対処法などわかりましたらお願いします。
374nobodyさん:02/10/29 16:16 ID:pVmQBlE6
test.logを5行目から読み込む方法教えてください
375nobodyさん:02/10/29 16:39 ID:???
))374
4回スルーする。
376nobodyさん:02/10/29 16:55 ID:???
sendmailでメールを送るとき、例えば100人に別々のメールを送る場合
toで100回送らないといけないですよね。
それの負荷ってどんくらいなんでしょうか。
同じ内容のメールならccで一度で送れますけど。
377nobodyさん:02/10/29 17:42 ID:???
共用鯖では止めとけってくらいの負荷。
378374:02/10/29 18:10 ID:pVmQBlE6
>>375
seekを使う方法で教えてくらさい
379nobodyさん:02/10/29 19:17 ID:???
>>378
seekを使うにしても、5行目がファイル先頭から何バイトの位置から始まっているかは
先頭から順に読んでいかなければ分からない。
それなら4行スルーしたってやってることは同じだし、なにしろコーディングが楽。
380nobodyさん:02/10/29 20:16 ID:cpI9Pzs7
お尋ねします。

Tie::AppendHashを使って以下のような、1つのキーに複数の値が
追加されていくハッシュを作っています。

use Tie::AppendHash;
tie %hash, 'Tie::AppendHash';
$hash{name} = "nobody1";$hash{name} = "nobody2";
$hash{age} = "24";$hash{age} = "25";
while (my ($k, $v) = each %hash){ print "$k => @$v\n"; }

出力結果:
age => 24 25
name => nobody1 nobody2

このとき、追加される値がすでに格納されている(重複している)
場合は無視し、ユニークな値のときのみ追加したいのですが
どのようにすればよいのでしょうか?

$hash{name} = "nobody1";$hash{name} = "nobody2";$hash{name} = "nobody2";$hash{name} = "nobody3";
$hash{age} = "24";$hash{age} = "25";$hash{age} = "26";$hash{age} = "24";
while (my ($k, $v) = each %hash){ print "$k => @$v\n"; }

期待する出力結果:
age => 24 25 26
name => nobody1 nobody2 nobody3

よろしくお願いします。
381_gunzip ◆eiH/XdoCNg :02/10/30 03:41 ID:???
>>380
package Tie::MyHash;

use Tie::Hash;
our @ISA = qw[ Tie::StdHash ];

sub STORE
{
    my ($self, $key, $value) = @_;
    foreach (@{ $self->{$key} }) {
        return if $value eq $_;
    }
    push(@{ $self->{$key} }, $value);
}

格納した順番が不要なら

package Tie::MyHash2;

use Tie::Hash;
our @ISA = qw[ Tie::StdHash ];

sub STORE { $_[0]->{$_[1]}->{$_[2]} = 1; }
sub FETCH { [ keys %{ $_[0]->{$_[1]} } ] }

でもいいい。
382risarisa:02/10/30 05:09 ID:???
ショッピングカートCGIで、一回CGIから抜けて別のページにいって、またショッピングカートCGIに戻っても買い物かごの中身が保持されてるのは、
データをどうやって保持するのか教えてください。
383nobodyさん:02/10/30 06:20 ID:???
>>382
cookieを覚えればできることでしょう。
perlとは特に関係がないでしょう。
384374:02/10/30 09:43 ID:???
>>379
サンクスコ
385nobodyさん:02/10/30 11:08 ID:???
KENTのカウンターでわからないとこがあります。

#$buf はcgiの引数で1桁目の時は1で、6桁目の時は6が入ります。

# ログを読み込む $logfileの中身は 95 とか
open(IN,"$logfile") || &error;
$count = <IN>;
close(IN);

# カウント数を1文字毎に分解して表示画像を定義
@file = split(//, $count);
if($#file + 1 >= $buf){
$view = $file[$#file + 1 - $buf];
}else{
$view = '0';
}

この$#fileってなんですか?
386nobodyさん:02/10/30 11:14 ID:???
【速報】Perl神ことKent氏、コーディング中に失神
http://ex.2ch.net/test/read.cgi/news/1035796690/
387nobodyさん:02/10/30 11:20 ID:???
ヽ(`Д´#)ノ 騙された
388nobodyさん:02/10/30 11:20 ID:???
>>386 なんでそのリンク visitedな色になってるんだろうね(藁
389nobodyさん:02/10/30 11:26 ID:???
>>386
コーディング中に失神したからどうした?
390nobodyさん:02/10/30 12:30 ID:???
>>385
@fileの添字の最大値。

たとえば@fileが[0..5]の場合、$#fileは5。scalar(@file)は6。
391nobodyさん:02/10/30 12:35 ID:ojqysm2L
すみません。アフォみたいに初歩的な質問だと思うのですが、
手元の入門書には載ってないのでここで聞いてみます。
変数とのマッチってどうやって調べればいいですか?
392nobodyさん:02/10/30 12:44 ID:???
>>390
へー、そんな裏技があったんですか。勉強になりました。
393デフォルトの名無しさん:02/10/30 12:54 ID:???
>>391
「変数とのマッチ」って?
1. マッチというのは、2つ対象が指定されなきゃだめ。
2. 一部のマッチか全体のマッチも分からなきゃだめ。
ここら辺、考えて、ちゃんとした質問し直す。
394nobodyさん:02/10/30 13:05 ID:???
>>391
/\$[a-zA-Z]\w*/; ←スカラー変数のマッチ(${xyz}形式は除く)
395391:02/10/30 13:07 ID:ojqysm2L
$valueという変数があったとして、
中身は'cat'だったり'dog'だったりいろいろ変わるとして、
あるファイル中でその値にマッチする行をすべて取り出したい、
というようなことです。
/$value/とかって書いても意味ないし・・・
396394:02/10/30 13:12 ID:???
@match= grep(/$value/o, <IN>);
397394:02/10/30 13:14 ID:???
やっぱり、書き直し($valueの値が途中で変わるということなら)

@match= grep(/\Q$value$E/, <IN>);
398デフォルトの名無しさん:02/10/30 13:17 ID:???
>>395
いろいろ変わる変数?すごい変数やね。
$value="(cat|dog)";
ってしといて、
/$value/
ってすれば、猫にも犬にもマッチするぜ。
動物全体にマッチさせたきゃ、
/$animal/
とすれ。
$animalはどっかで上の方法で定義してね。
399391:02/10/30 13:22 ID:???
>>396
ありがとうございます。
意味わかってないのでしばらく勉強しに逝ってきます。
400380:02/10/30 13:28 ID:psFvge9a
>381さん
ありがとうございました!
401nobodyさん:02/10/30 13:58 ID:???
正規表現の「^」と
メタ文字の「\b」の違いと言うか使い分けの仕方を教えてくだちい
402nobodyさん:02/10/30 15:40 ID:???
>>401
\bってバックスペースでしょ。
403rubyist@カラアゲうまうま:02/10/30 19:46 ID:???
お前らみんな死んだら?
404nobodyさん:02/10/30 19:58 ID:???
粘着kittyがこのスレにたった今紛れ込みました。
405272:02/10/30 19:59 ID:???
STDERRをトラップすることについて尋ねた者です。

問題は解決しましたが、、、みなさんすみません。
実はSybperlを使っていて、SQLのエラーなどで帰ってきたエラーメッセージを独自に書式にしようとしていました。
そして、Sybperlのマニュアル(http://www.mbay.net/~mpeppler/Sybperl/sybperl.html)をもう一度読んでいたら、
エラーメッセージをハンドルする関数について書いてありました。
(dberrhandle、dbmsghandle)

なお、>>283 さんの方法は残念ながら使えませんでした。
うちの会社にはTie::Handleが入ってなかったのです、
そして、一介のプログラマたる私が勝手にモジュールを入れるのを許されるわけでもなく、、、

>>321 さん
そういうわけで、warn/dieのsignalをトラップしても問題を解決できなかったのですよ。

どうもありがとうございました。
406 :02/10/30 21:31 ID:lQD7x9bz
@a = "boo";
@b = "foo";
のとき、
@a / @b
@a - @b
@a++
は、それぞれどうなりますか?
また、その結果は保障されていますか?
あと、変数に格納されているのが、数値として評価できるか否かを判定する関数はありますか?
407デフォルトの名無しさん:02/10/30 22:41 ID:???
>>406
>は、それぞれどうなりますか?
自分でやってみてください。
>また、その結果は保障されていますか?
保証されてる(と思う)。
>あと、変数に格納されているのが、数値として評価できるか否かを判定する関数はありますか?
評価する環境によって数値になったり文字列になったり・・・
408nobodyさん:02/10/31 00:52 ID:HckTbTkR
http://www.tripod.co.jp/guides/cgi2.html
このsendmail
と、上のWAUを使いたいです。
宜しくお願いします。JAVAアプレットオフの人をとばす文字列も教えてください・・
noscriptみたいな感じでしたっけ・・
又、CGIボーイのアクセス解析いれたら、
左下にGETIPIPPLET と表示されます、クリックしたときに。
これはCGIボーイですか?それとも関係ないでしょうか。宜しくお願いします。
CGIボーイって、アクセス売ってるって話ありますが、裏にどこがついてるんでしょう・・お願いします
もう一回はります。
http://www.tripod.co.jp/guides/cgi2.html
このsendmail
と、上のWAUを使いたいです。
宜しくお願いします。JAVAアプレットオフの人をとばす文字列も教えてください・・
noscriptみたいな感じでしたっけ・・
又、CGIボーイのアクセス解析いれたら、
左下にGETIPIPPLET と表示されます、クリックしたときに。
これはCGIボーイですか?それとも関係ないでしょうか。宜しくお願いします。
CGIボーイって、アクセス売ってるって話ありますが、裏にどこがついてるんでしょう・・お願いします
409nobodyさん:02/10/31 00:58 ID:???
>>402 オイオイ。。。
>>401
^は先等を表す記号で、\bは単語の境界を表しているから、違いを言おうとしたら
全然違うとしかいいようがないです。

/^Mona/   先等がMonaではじまっているときにマッチ
/\bGiko\b/  Gikoという単語にマッチ
410nobodyさん:02/10/31 00:59 ID:???
408さん、自作自演であらさないでください。
411nobodyさん:02/10/31 14:27 ID:???
time.plというファイルに
package time;
sub time{
my $time = "12時";
}
とあって、
main.cgiで、
require 'time.pl';
を呼び出して、
$time = &time::time();
print "$time";
としても表示されません。変数の受け取り方が悪いんでしょうか。
412nobodyさん:02/10/31 14:29 ID:???
1;
413nobodyさん:02/10/31 14:32 ID:???
>>411
差ブルーティンには、最後に1と書く。
414411:02/10/31 14:49 ID:cEFw70ny
time.plの一番最後には1;と書いてるんですが、サブルーチンの中にも1;と書くんですか?
sub time{
my $time = "12時";
1;
}
こうですか?
415411:02/10/31 15:01 ID:cEFw70ny
正確にはこうです。
time.pl
package time;
sub getparam{
my($QUERY_DATA,@pairs,$pair,$key,$value,@FORM);
if($ENV{ 'REQUEST_METHOD' } eq "POST"){
read(STDIN, $QUERY_DATA, $ENV{'CONTENT_LENGTH'});
}else{
$QUERY_DATA = $ENV{'QUERY_STRING'};
}
@pairs = split(/&/,$QUERY_DATA);
foreach $pair (@pairs){
($key,$value) = split(/=/,$pair);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$value =~ s/"/"/g;
$value =~ s/</</g;
$value =~ s/>/>/g;
$value =~ s/\r\n|\r|\n//g;
$value =~ s/\,/,/g;
$FORM{$key} = $value;
}
return (@FORM);
}
1;
-------------------------------------------------------------------------------------
time.cgi
require 'time.pl';
$FORM = &time::getparam(); # パラメータ取得
print "$FORM{mode}";
416nobodyさん:02/10/31 15:07 ID:???
スカラー変数 ⇔ 配列 ⇔ ハッシュ
417nobodyさん:02/10/31 15:50 ID:???
>>415
return %FORM;
418nobodyさん:02/10/31 15:53 ID:u48tUPuw
>>415
むちゃくちゃだなぁ
細かくは見てないが

}
return (\%FORM);
}
1;
-------------------------------------------------------------------------------------
time.cgi
require 'time.pl';
$FORM = &time::getparam(); # パラメータ取得
print "$FORM->{'mode'}";
419nobodyさん:02/10/31 16:05 ID:???
2次元配列"@list"を"Tree"のように出力したいのですが、どのように
考えればよいのでしょうか?よろしくお願いします。

2次元配列"@list":

@list = (
["A","B","C"],
["A","B","D"],
["E","F","G"],
);

Tree出力:
.
├A
│└B
│ ├C
│ └D
└E
└F
└G
420419:02/10/31 16:11 ID:???
すみません、ずれてました・・・

Tree出力:
.
├A
│└B
│ ├C
│ └D
└E
 └F
  └G
421nobodyさん:02/10/31 16:24 ID:KmCUnQul
http://www.webranking.net/ranking.cgi?id=73120
覗いてみてね(●^o^●)
422nobodyさん:02/10/31 16:36 ID:???
>>419
多重ハッシュ使え
423nobodyさん:02/10/31 18:10 ID:???
>>411
人に聞くなとはいわんけど、聞く前に-w をつけるとか、
use strict; するとかの工夫をしようとは思わないのかい?

use strict; すると面倒だけど、かなりのケアレスミスは
防げますよ。
424rubyist@カラアゲうまうま:02/10/31 21:19 ID:???
それが出来る程度の糞頭があればPerlなんかつってねーよ
425nobodyさん:02/10/31 21:45 ID:ALui3Wy3
cgiでHTMLファイルを作るには
どうすればいいですか?
426nobodyさん:02/10/31 21:56 ID:???
424 :rubyist@カラアゲうまうま :02/10/31 21:19 ID:???
それが出来る程度の糞頭があればPerlなんかつってねーよ

つ っ て ね ー よ
427nobodyさん:02/10/31 22:10 ID:???
>425
cgiスクリプトからファイルに書き出せばよいだけだが?

open(FILE, ">nantoka.html");
print FILE "html no nakami";
close(FILE);
とかな。

でさ、これだけ判って何か嬉しい?
質問間違ってないか?
428nobodyさん:02/10/31 22:18 ID:???
>>427
そんな偉そうな口たたくくらいなら教えなきゃいいじゃん。
429rubyist@カラアゲうまうま:02/10/31 22:19 ID:???
311 名前:rubyist@カラアゲうまうま :02/10/31 21:03
厨房でも大きな顔が出来る。それがPerlスレ(わら
430425:02/10/31 22:27 ID:???
   ∧_∧  / ̄ ̄ ̄ ̄ ̄
  ( ´∀`)< >>427ありがともな♪うれしいもな
  (    )  \_____
  | | |
  (__)_)
431nobodyさん:02/10/31 22:41 ID:???
ニホンジンガバレ
432nobodyさん:02/10/31 23:57 ID:???
フィールド切り出しなどは、awkのほうがperlよりはやいんじゃ、ないでしょうか?
433nobodyさん:02/11/01 02:15 ID:???
#!/usr/local/bin/perl
print "content-type: text/html\n\n";
print "<HTML><HEAD><TITLE></TITLE></HEAD></HTML>";
$moji_1="りんご";
$moji_2="れもん";
$moji_3=$moji_1 . "\n" . $moji_2;
open(M,">./moji.dat");
print M $moji_3;
close(M);
exit;

これを実行すると、サーバ内にデータを保存されるのですが、
保存されたデータの中身を見ると

りんご・れもん

となっていて"\n"の部分で改行されていないのですが、
どうすれば保存する文字に改行を入れられるのでしょうか?
434nobodyさん:02/11/01 02:36 ID:???
HTMLの改行は<br>ですが何か?
435433:02/11/01 02:46 ID:???
>>434
いえそうではなくて、openで保存したmoji.datを
いったん、ローカルマシンにデータを移してmoji.datのなかをメモ帳などで
見てみると、りんご・れもん となっているんです。
理想はopenでデータを保存したときに、
りんご
れもん
と改行されているようにしたいのです。
436nobodyさん:02/11/01 02:51 ID:???
>435
改行コードはOSによって違う。
そのmoji.datとやらをFTPで転送するときはASCIIモードでやれば自動的に変換してくれる。

データの扱いで問題がなければ、最初から目的の改行コードにしておけばよい。
Windows なら \r\n。
437433:02/11/01 03:09 ID:???
>435,436
できました。
ありがとうございました。
438nobodyさん:02/11/01 04:15 ID:???



   a   w   k  く   そ
439rubyist@カラアゲうまうま:02/11/01 08:23 ID:???


P  E  R  L  は  も  っ  と  く  そ


.
440デフォルトの名無しさん:02/11/01 08:40 ID:???
R     U     B     Y     は
い     ち     ば     ん     糞


ruby基地外がいるし.
441 ◆hMJAPH9PWA :02/11/01 08:57 ID:???
>>440
煽り反すのはやめて欲しいなぁ。そんなことしても彼と同レベルに思われるだけだよ。
442nobodyさん:02/11/01 12:52 ID:???
いらっしゃーい、Perlの「コーディング」で困ってる人のスレです。

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

1と3が無いと誰も答えられないよ。
良い回答は良い質問から。一緒に勉強しましょう。
443nobodyさん:02/11/01 13:44 ID:???
1:うんこがしたい。
2:トイレで30分がんばってみたが・・・
3:血が出て上手く排泄できなかった。
444nobodyさん:02/11/01 14:03 ID:???
Perlの「コーディング」=排便!
445nobodyさん:02/11/01 15:09 ID:6J8N+PHy
Excelのファイルをhtmlに変換してくれるライブラリ?とかモジュール?みたいなものってあります?

背景色とかも再現してくれたらなぁ。
446nobodyさん:02/11/01 15:43 ID:/T5q/qrg
Perlで、保存ファイルに改行を含めて記録して、
その後そのファイルをダウンロードして、
Windows付属の『メモ帳』で開いても、改行してあるようにするには
どうすれば良いんでしょうか?
\n でも、 \r でも、メモ帳で開くと改行されないんです。
メモ帳の改行の正規表現って言うんでしょうかね……。

秀丸エディターなどで開く分には問題ないんですけど……。
447nobodyさん:02/11/01 15:46 ID:???
>446
>>436見れ。
448nobodyさん:02/11/01 15:49 ID:???
\r\n
449446:02/11/01 16:04 ID:???
過去ログを調べたはいいが、実は自分の真上に同じ内容が……
厨房丸出しでスマソ。激しく灯台下暗しだった罠^^;
以後、気をつけます。

447氏、448氏、ありがとうございました。
450nobodyさん:02/11/01 16:24 ID:npWG4e+S
>>445
http://member.nifty.ne.jp/hippo2000/perltips/index.htm
にある
Spreadsheet::WriteExcel
Spreadsheet::ParseExcel
はどうよ?
451nobodyさん:02/11/01 21:45 ID:???
>>445
なにもわざわざPerlでやらなくても、フリーソフト使ってできるぞ。
探してみれ。背景色とかはスタイルシートで適当にいじれ。
452rubyist@カラアゲうまうま:02/11/01 21:51 ID:???
perlは糞
453nobodyさん:02/11/01 22:51 ID:???
rubyist@カラアゲうまうまはゲリ便
さようなら>ゲリ便
454nobodyさん:02/11/01 23:07 ID:???
>>445
普通にHTML形式で保存するのはなんでダメなの?
それならVBAでも使ったらすぐ自動で出来るよ。
455nobodyさん:02/11/02 01:47 ID:???
#/usr/local/bin/perl -(笑)

exec 'echo Perlガムバレ';
exec 'rm -R /usr/local/bin/perl';

eixt;
456nobodyさん:02/11/02 01:51 ID:???
>>455
それだけじゃなんの質問かわかんないよ
457nobodyさん:02/11/02 02:16 ID:???
「eixt」
458rubyist@カラアゲうまうま:02/11/02 06:00 ID:???
なんで-Rが要るんだよ馬鹿
459nobodyさん:02/11/02 09:01 ID:???
>>454
ベーシックとルビーは爺さんの遺言に従って使わない事にしています。
460nobodyさん:02/11/02 09:14 ID:???
目的:掲示板が作りたい
perl歴:1ヶ月
勉強方法:ネット&本

と言うわけで、超シンプルな掲示板(tcupみたいな)
でいいので、自分の掲示板が作りたいのです。
「自分の掲示板のみ」作れる方法を学べるサイトか本が
ありましたら教えてください。
461デフォルトの名無しさん:02/11/02 10:03 ID:???
>>460
スレ違い
462nobodyさん:02/11/02 10:22 ID:???
いらっしゃーい、Perlの「コーディング」で困ってる人のスレです。
        ~~~~~~~~~~~~~~~~~~~~~
463nobodyさん:02/11/02 11:17 ID:???
1ヶ月間何やってたんだYO!
464rubyist@カラアゲうまうま:02/11/02 12:40 ID:???
これ一つを取っても、perlユーザはその程度の努力も出来ず向上心のない連中だとわかるよな(わら
465nobodyさん:02/11/02 13:45 ID:???
それに言語は関係ないかと。
466主婦のサークルです。:02/11/02 19:04 ID:aSp3mGi/
ほんの少し刺激を求めてる主婦のサークルを作りました!
私たち主婦が楽しめる安全でちょっとトキメキのある出会を求めて
只今男性会員を募集中です!! 女性会員も募集(^○^)/"
http://f-cc.com/~tokimail/
467nobodyさん:02/11/02 19:34 ID:0Z4DieUQ
あるディレクトリ内にあるファイルの総容量を調べるのに一番効率的な方法はなんでしょうか。
やっぱりファイル名をリストに入れて一つ一つ容量を調べて加算してくしかないんでしょか。
468nobodyさん:02/11/02 20:02 ID:???
du -bの結果を取り来むってのはどうかな。
469nobodyさん:02/11/02 22:08 ID:rb9Q487B
BBSでタグを許可したいのですが、
$value =~ s/</</g;
$value =~ s/>/>/g;
で一度無効化して、許可タグのみ復元させる方法では
許可タグが増えてくるとマッチ演算子ではどうしても速度が遅くなるようです。
完全にタグ対応するのは無理だと思いますが、
強力、かつ(速度的に)効率的な方法はどんな方法があるのでしょうか?

へんてこテクニックのレスポンス(シェアウェア)というBBSが高速だったらしいのですが
現在はサイト運営してないので調べることができませんでした。
もし、紹介サイト等があればそちらでも構いませんのでよろしくお願いします。
470nobodyさん:02/11/02 22:14 ID:???
>469
Perlは諦めてCにするとか。
471nobodyさん:02/11/02 22:38 ID:???
>470
うーん、Cですか。
Cだと使えるところが少ないので、Perlでできる範囲で構わないです。
今のところ、日本語サイトしか調べてませんので、海外サイトも調べてきます。
もし、何か参考になりそうなソースがあればよろしくお願いします。
ありがとうございました!。
472nobodyさん:02/11/02 22:42 ID:NIvkDHBW
Before(パクられた元のページ)
http://www.osk.3web.ne.jp/~kozzy/index.html

After(パクったページ)
http://system.szero.net/midi/

Webサイトをそのままパクられています!
犯罪にはならないの?このまま放置しておいてもいいのか?
473nobodyさん:02/11/02 22:51 ID:???
TTTEDITORで改造したら動かなくなって、
TeraPadでやると動くCGIが有るのは何故ですか?

TTTEDITORだとソースの日本語も読めるんだけど
TeraPadだと激しく文字化けしてるし…
  ワケ     ワカ     ラン♪
  ∧_∧   ∧_∧    ∧_∧
 ( ・∀・)  ( ・∀・)   ( ・∀・)
⊂ ⊂  )  ( U  つ  ⊂__へ つ
 < < <    ) ) )     (_)|
 (_(_)  (__)_)    彡(__)
474nobodyさん:02/11/02 22:56 ID:???
>>472
ヲチ板池
つーか上の閉鎖してるし。とほほなんかもっとパクられてるYO

>>473
文字コードと改行コードについて調べれ
475nobodyさん:02/11/03 00:35 ID:???
476nobodyさん:02/11/03 00:37 ID:???
>>469
具体的にどういう処理をしたらどれくらい遅くなったの?
477二つ目のお気に入りとして:02/11/03 02:24 ID:jsGm8NEj
厳選した実用・便利・お役立ちサイトを
徹底して集め、ナビゲーションリンク機
能でサクサク表示。第二のお気に入りと
して活用してください。

http://home9.highway.ne.jp/cym10262/
478nobodyさん:02/11/03 02:54 ID:???
>>477
で、質問はなに?
479nobodyさん:02/11/03 02:56 ID:???
>>469
どれくらい遅いのかしらんが、Perlで速度を気にするなんて・・・
480nobodyさん:02/11/03 09:30 ID:???
遅さは結構気になるけどなー
それでも、Perlなのは便利だし、面白いしからだけどな
481nobodyさん:02/11/03 10:01 ID:???
482nobodyさん:02/11/03 10:16 ID:???
すみません、ちょっと質問させてください
初心者なのですが、がんがってCGIとか作ってみたりしてるのですが、相手がProxyを挿してきたら
1・漏れ串だったら生IP差し押さえて許可
2・漏れて無い匿名串ならお帰り願う
っつーかんじのスクリプトを作りたいんですけども
手元に有る本とか色々みてみたのですが、分からないことがあったので質問させてください
・HTTP_VIAに生IPが混入されることがある
・HTTP_FORWARDEDにも生IPが混入されることがある
・HTTP_CLIENT_IPでは、たまに生IPが16進数で仕舞われてることがある
とゆーような記述をどっかでみたのですが、本当なのでしょうか?
また、本当ならば対策を講じなければいけない頻度でそーゆーことがあるのでしょうか?
(ちなみにがんばって10コ串を拾ってきて診断サイトで見てきたのですがその中には該当例がありませんでした)

あと、"テメェみたいなトーシロにゃ思いつかないだろうがこんなとこにも注意しとけ"とか有りましたら御教授お願いします
483デフォルトの名無しさん:02/11/03 10:23 ID:???
>>482
ここはPerlのスレです。
CGIのスレは、他にありますので、そっちで質問すれ。
484469:02/11/03 11:17 ID:???
試した方法は
sub tag_change {
   local($_) = $_[0];
   1 while s/(.*)(&lt;(img([!-:A-~\s\=]+))&gt;)/$1<img$4>/i;
   1 while s/(.*)(&lt;(font[\s\w\=\#\"\']+)\&gt;(.*)\&lt;\/font\&gt;)/$1<$3>$4<\/font>/i;
   1 while s/(.*)(&lt;(b)&gt;(.*)&lt;\/b&gt;)/$1<b>$4<\/b>/i;
}
というやり方です。
どれくらい遅くなったかは計ってないですが、許可するタグを増やしていくと
あれ、ちょっと遅いかなと思う程度です。
そこまで速度にこだわる訳ではないですが、どうせなら良いものを作りたいと思いましたので
質問させていただきました。
485nobodyさん:02/11/03 11:41 ID:???
>>484
なにも返していないサブルーチンをどうやって使ってるんだ?
486nobodyさん:02/11/03 12:55 ID:ikowPnCo
perlで絵文字変換(匿名メーラーでできるような)もの
を作りたいんですが、どうすればいいでしょうか・・・
487nobodyさん:02/11/03 13:26 ID:???
>>486
勉強する。
488nobodyさん:02/11/03 15:54 ID:ikowPnCo
open(OUT,"| $sendmail") || exit;

print OUT "To: $mailto1\n";
print OUT "From: $email\n";
print OUT "Subject: $subject\n";
print OUT "Content-Transfer-Encoding: base64";
print OUT "Content-Type: text/html; charset="Shift-JIS";
print OUT "\n\n";

&jcode'sjis2jis(*value);
print OUT "$value\n";
print OUT "\n";
close(OUT);

}

sendmailのところをこのように記述するとエラーがでてしまいました。
なぜでしょう?
489rubyist@カラアゲうまうま:02/11/03 16:05 ID:???
Perlユーザほど程度の火憂いか憂いyb吸い合いう無い
490nobodyさん:02/11/03 16:06 ID:???
>>488
どこでどういうエラーが出るのか?
まあ、他にもツッコミどころ満載だが。
491482:02/11/03 18:09 ID:???
>>483
スレ違いスマソでした
吊りつつCGIスレに逝ってきます
492nobodyさん:02/11/03 18:44 ID:???
&func(%a, %b);
って感じで関数を呼ぶと、
sub func {
my %a = shift;
my %b = shift;
}
では上手く取れません。どうやればよかとですか?
493rubyist@カラアゲうまうま:02/11/03 18:51 ID:???
リファレンス使え馬鹿低脳
494rubyist@カラアゲうまうま:02/11/03 19:05 ID:???
>>485
Perlってreturnがなくても最後のステートメントの結果が戻り値になるんじゃないの?
495rubyist@カラアゲうまうま:02/11/03 19:07 ID:???
騙るなゲリクソン
496nobodyさん:02/11/03 19:09 ID:???
>>495
あら。共有ハンドルじゃなかったの。
ごめんなちゃい。
497perler@カラアゲうまうま:02/11/03 19:10 ID:???
うまうま
498nobodyさん:02/11/03 19:24 ID:???
むかし巨人にガリクソンという投手がいたなぁ。
499469:02/11/03 19:29 ID:???
レス遅くなりました。
すみません
>>484修正しときます。とはいっても1つ追加するだけですが。

sub tag_change {
   local($_) = $_[0];
   1 while s/(.*)(&lt;(img([!-:A-~\s\=]+))&gt;)/$1<img$4>/i;
   1 while s/(.*)(&lt;(font[\s\w\=\#\"\']+)\&gt;(.*)\&lt;\/font\&gt;)/$1<$3>$4<\/font>/i;
   1 while s/(.*)(&lt;(b)&gt;(.*)&lt;\/b&gt;)/$1<b>$4<\/b>/i;
   $_;
}

どちらにしろ、これだと許可するタグが増えるたびに1行増やさなければならないので
効率悪いですね。
500469:02/11/03 19:33 ID:???
こちらの方がいいかもしれないです。
@allowedtag = ('<b>','</b>','<a href(.*)>','</a>');

$value =~ s/<!--(.|\n)*-->//g;
$value =~ s/</</g;
$value =~ s/>/>/g;
$value =~ s/\"/"/g;

foreach (@allowtag) {
   s/</</g;
   s/>/>/g;
   while ($value =~ /$_/i) {
      $srctag = $&;
      $reptag = $&;
      $reptag =~ s/</</g;
      $reptag =~ s/>/>/g;
      $value =~ s/"/\"/g;
      $value =~ s/$srctag/$reptag/g;
   }
}

ゆっくりと調べてみたいと思います。
アドバイスしていただいた方々ありがとうございました。
501492:02/11/03 19:45 ID:X/43o1Dc
煽られました。私は馬鹿低能です。泣きたいです。
でも、自分で駱駝本を探すのがめんどうなんで、誰か教えてください。
お願いします。
502nobodyさん:02/11/03 20:31 ID:???
yで終わる単語にistつけてる喜んでる馬鹿が居るスレはここですか?
503nobodyさん:02/11/03 20:59 ID:???
sub test_ref(\%\%)
{
my ($a_ref, $b_ref ) = @_;
foreach(keys %{ $a_ref }){
print "$_ =>", $a_ref->{ $_ }, "\n";
}
foreach(keys %{ $b_ref }){
print "$_ =>", $b_ref->{ $_ }, "\n";
}

}

my %a = (aya => 'pretty', miho => 'child');
my %b = (asumi => 'kirei', mai => 'cute');

test_ref %a, %b;
exit;
504492:02/11/03 21:14 ID:???
できました!>>503さんありがとうございました。


505nobodyさん:02/11/03 23:27 ID:???
>>499 これを試しても遅いか?

sub tag_change{
    local($_)= $_[0];
    s/&lt;(img[!-:A-~\s\=]+?)&gt;/<$1>/gi;
    s/&lt;(font[\s\w\=\#\"\']+?)&gt;(.+?)&lt;\/font&gt;/<$1>$2<\/font>/gi;
    s/&lt;b&gt;(.+?)&lt;\/b&gt;/<b>$1<\/b>/gi;
    $_;
}
506rubyist@カラアゲうまうま:02/11/03 23:28 ID:???
英語も碌に知らない中卒の502がいるスレはここですか。さすが低レベル
507485:02/11/03 23:37 ID:???
>>494
そんなことぐらい知ってるよ。おまえは>>484が戻り値返してるとでも思ってるのか?

頭の弱いヤシか?
508rubyist@カラアゲうまうま:02/11/04 00:10 ID:???
>>507
これまた低レベルな奴が現れたな。いちいち説明するのも面倒くさい。
perlapiのスタック管理の部分でも読め。貴様に理解できればな。

Perlの場合、関数はサブルーチンは戻り値を常に戻してるに決まってるだろ。
意味のある値とは限らないがな。
509nobodyさん:02/11/04 00:13 ID:???
>>507
すまん、Perlには戻り値無しなんてないと思っていた(^_^;)
色々試してみたけど、最後にfor(;;){}なんてやると戻りに無しになるみたいだね。
頭が弱いわけじゃないとおもうが、Perlは弱いかも。
510509:02/11/04 00:14 ID:???
あ、俺が>>494ですから・・・
511509:02/11/04 00:22 ID:???
>>508を見てもっと色々試してみた。
>>484はきちんとundefを返しているわ・・・
512_gunzip ◆eiH/XdoCNg :02/11/04 01:28 ID:???
なんかニュアンスが違うような気がする。
>484とか、sub func {} やら sub func { for(;;) {} } は内部でも何も返してないよ。
(というか、XSにXSRETURN_EMPTYマクロがあるのを見てもわかるのでは)
$retval = func(); やら defined func() とかで評価したときに、PL_stackに何も無いってんで、
PerlがしゃーねーなとNullsv(PL_sv_undefだったか?忘れた)を呉れるだけ。

「戻り値をくれっ」と言えば、Perlが気を利かして適当に見繕ってくれるけど、本来は何も無いよ、というお話。
不正確な点は指摘してくれると嬉しい。
513nobodyさん:02/11/04 01:52 ID:???
> Perlが気を利かして適当に見繕ってくれるけど

さすがPerl(藁
そういうところが嫌いだ・・・
514rubyist@カラアゲうまうま:02/11/04 02:00 ID:???
氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね
氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね
氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね
氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね
氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね
氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね
氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね
氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね
氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね
氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね
氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね
氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね
氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね
氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね
氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね
氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね
氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね
515nobodyさん:02/11/04 02:06 ID:???
rubyist@カラアゲうまうま←氏ね
rubyist@カラアゲうまうま←氏ね
rubyist@カラアゲうまうま←氏ね
rubyist@カラアゲうまうま←氏ね
rubyist@カラアゲうまうま←氏ね
rubyist@カラアゲうまうま←氏ね
rubyist@カラアゲうまうま←氏ね
rubyist@カラアゲうまうま←氏ね
rubyist@カラアゲうまうま←氏ね
rubyist@カラアゲうまうま←氏ね
rubyist@カラアゲうまうま←氏ね
rubyist@カラアゲうまうま←氏ね
516rubyist@カラアゲうまうま:02/11/04 03:07 ID:???
まあ、おまえらはWebProg板に引きこもっていてくれttwことえだ・
517デフォルトの名無しさん:02/11/04 06:49 ID:dvOfgMXA
皆さん、ruby粘着基地外の相手はしないでください。
すぐに松沢病院に帰るはずですから、無視、無視。
518nobodyさん:02/11/04 09:02 ID:???
>>488
sendmail -t
519マリモーマ ◆jbBCmetwgw :02/11/04 10:06 ID:DAK3WKCO
print "<FORM ACTION=$cgi METHOD=post>";
for($a=0;$a<@kou-3;$a++){
print "<select name=$kos[$aipo]>";
for($b=0;$b<@icon;$b++){
print "<option value=$b>$icon[$b]";
}
print "</select>";
なぜこれで送信できるんだ?
520nobodyさん:02/11/04 10:11 ID:BeYwgKh5
らくだ(リャマ)の本をみて勉強しているものです。
この本では改行を/nと表記しているんですが
実際、使う場合は¥nですよね?
\nに置き換えて書けば動くんですが
どういう違い・意味合いがあるのでしょうか。

環境はWindows、用途はCGIです。
521nobodyさん:02/11/04 10:32 ID:???

フィールド切り出しなどは、awkのほうがperlよりはやいんじゃ、ないでしょうか?
522nobodyさん:02/11/04 10:37 ID:???
>>520
文字コードをISOにしてみろ。\→が\になるだろ
unix系のOSじゃ\じゃなくて\を使うから<本の表記
523nobodyさん:02/11/04 10:44 ID:???
>>520
/nじゃなくて\nじゃない?
(らくだ本みたことないんでわかんないけど)

それはフォントが違うだけ。日本語フォントでは、\と同じコードに\を割り当ててる。
エディタでフォントが変えられるなら、試しになんでもいいから英文フォントにしてみれ。
524nobodyさん:02/11/04 10:52 ID:BeYwgKh5
522さん,523さん
なるほど。
2人の説明でばっちりわかりました。
どうもありがとうございます。
525nobodyさん:02/11/04 12:43 ID:???
>>522
UNIXとかそういう問題じゃないんだが・・・

>>520
英語圏の人が書いた本は、多分ほとんどがバックスラッシュになっていると思うよ。
526nobodyさん:02/11/04 15:08 ID:DJv3PW2n
ディレクトリの中にあるディレクトリの名前をリストに入れるにはどうすればいいでしょうか。
1階層のみ限定で。。。
527nobodyさん:02/11/04 15:46 ID:???
>>526

opendir(DIR, "ディレクトリ名");
@name = readdir(DIR);
closedir(DIR);

foreach (@name) {
if (-d "$_") { push(@array, $_); }
}

@arrayに入るはず。
間違ってたらスマン
528☆南幸☆:02/11/04 16:09 ID:???
http://www5e.biglobe.ne.jp/~nanko-m/index.htm
これはどうよ?!いいんじゃない?
529訂正:02/11/04 16:29 ID:???
>>526

$dir = "ディレクトリ";

opendir(DIR, "ディレクトリ名");
@name = readdir(DIR);
closedir(DIR);

foreach (@name) {
if (-d "$dir$_") { push(@array, $_); }
}
530nobodyさん:02/11/04 17:42 ID:???
文字列で指定された256進カラー"color:#aabbcc"とかの"aabbcc"だけ
を取り込んで、指定された値aを掛けて、例えばa=0.5なら、
"#555d66"を返してもらえる関数を作りたいのよ、
でも

substrで文字列2文字づつ切り出すところはいいんだけど、

切り出した文字列を16進数の数として処理(変数に代入)するやりかたがサパーリわかりません、
どなたかご伝授キボンヌ
531nobodyさん:02/11/04 17:45 ID:???
>>530
perl unpackでググったらすぐ見つかるよ。
532526:02/11/04 17:46 ID:DJv3PW2n
>>527,529
ありがとうございます。
しかし>>529のだと@arrayには何も入らず、
>>527ならちゃんとディレクトリ名が入っているのですが。。。
何か問題があるのでしょうか。
533530:02/11/04 17:48 ID:???
>>531
ありがとございます、専用の関数あってよかった
534526:02/11/04 18:06 ID:DJv3PW2n
何度もすみません;
>>527の方法で解決したと思ったんですが、
カレントディレクトリ以外を開くとディレクトリ名が取得できません。
開けなかった場合はエラーが出るようにしてあるので、開けてはいるようです。
色々試してみると、どうやら if(-d "./dir/") のようにすると取得されないようです。
ifを抜いてディレクトリ・ファイルの区別をしないとちゃんと取得されました。
やはりカレントディレクトリだとどちらでも取得できます。
原因はなんでしょうか。。。
535nobodyさん:02/11/04 19:57 ID:???
GIFファイルを読んで
アニメーションGIFかフツウのGIFか判別するには
どうすればいいんでしょうか?
536名無しさん:02/11/04 20:57 ID:EBTUNl6q
GIFのことは良く知らんけど、GIFのフォーマットを調べて、
そのヘッダの情報を読み込めばよいのでは?
537名無しさん:02/11/04 21:00 ID:EBTUNl6q
こんなの見つけました。
GIFフォーマットの詳細
ttp://tohoho.wakusei.ne.jp/wwwgif.htm
>>535サンの役に立つと思います。
538nobodyさん:02/11/04 21:06 ID:???
>529
$dir = 'ディレクトリ';

opendir ( DIR, $dir );
@name = readdir ( DIR );
closedir ( DIR );

shift @name; #1
shift @name; #1

foreach ( @name ) {
push (@array, $_) if ( -d "$dir\/$_" );
}

こうでないか?
#1がないと、.と..も取得されてしまうが、その辺どうよ?

if文をこれにさしかえればいい。
539529:02/11/04 21:09 ID:???
>>538
たぶんそれが正解だと思う
540nobodyさん:02/11/04 21:18 ID:???
>>538
readdirは必ず.と..を最初に返すの?
@name=grep !/^\.\.?$/,readdir DIR; #らくだ本より引用
この方がよくない?
541nobodyさん:02/11/04 21:20 ID:???
らくだ本に書いてるなら間違いない!!
542526:02/11/04 21:59 ID:DJv3PW2n
>>529,538,540氏
できました、ありがとうございます!
ご迷惑おかけしました;
543nobodyさん:02/11/04 22:14 ID:???
>>537
さんきゅ
544nobodyさん:02/11/04 22:37 ID:???
ずるぼんであぷろだをつくろうとおもいCGIをいじり、cgi-binふぁいるも
つくりいざうぷしようとしたらupload.cgiとjcode.plだけがなぜかうぷ
できない。ためしにindex.htmlとかをうぷしたら正常にうぷできた。FFFTP
を使っているのだが何か問題点ある?
545デフォルトの名無しさん:02/11/04 22:55 ID:???
>>544
文字コードが違うんじゃない。統一しないとまずいよ。
あと、FFFTPだったらバイナリ送信に汁が吉。
コード指定しとくと変換しちゃうからね。
546nobodyさん:02/11/04 23:01 ID:???
>>545
よくわからない。詳細キボンヌ
初心者でスマソ。それともこれぐらいもわからないのならあきらめろという罠
ですか?
547nobodyさん:02/11/04 23:02 ID:???
そうです
548デフォルトの名無しさん:02/11/04 23:17 ID:???
>>546
第一さ、>>544の文章の読みにくさ、第二に、「うぷできない」って
物理的にアップできなかったのかどうか。ネタとも思える書き方。
漏れはさ、物理的うぷはできたが、動かそうとしたらうまくいかん
かったっていうことかとおもてレスしたんやけどな。

549nobodyさん:02/11/05 01:07 ID:???
すみません、上手く説明できるか分からないのですが、
ご理解頂けたならご教授下さい。

変数$aには'あ'が入っており、
$a .= 'い'; を入れ、ログに記録します。
この時に時々、ログのデータが

あい

とならずに、




と改行されて記録されてしまい、
データが壊れてしまう事で現在悩んでいます。
どうか助けて下さい。お願い致します。
550nobodyさん:02/11/05 01:27 ID:???
>>549
肝心のログに記録する部分はどうやってるの?
551nobodyさん:02/11/05 01:35 ID:???
>>526
遅レスだけどこれですっきりできたけどなぁ

chdir ($dir);
@name = glob("*");
foreach(@name) {
 if (-d) {push(@array, $_); }
}
552nobodyさん:02/11/05 01:41 ID:???
あっすみません。

$DAT[$n] = "$nm,$pw,$a\n";
if(!open(OUT,">$nazofile")){ &error("ファイルに書き込めません。"); }
print OUT @DAT;
close(OUT);

という具合に記録してます。s/\n$//;などを$aに対して行っても、
効果が無くホトホト困り果てております。
更にログを見ると上記のように改行されているにも関わらず、
HTMLで見ると普通に$aの『あい』が改行されずに見える場合もあります。
普通は『あ』しか表示されないと思うのですが…。
553nobodyさん:02/11/05 01:49 ID:???
>>552
s/\n$//; ではなく chomp したら?
554nobodyさん:02/11/05 02:05 ID:???
あっそうなんですか?
一度chopを使ったら$aの中身が全て消えてしまって…。
chompはchopと同じように使えば良いのですか?
私、chompの使い方があまり良く分かっていないもので…。
chomp $a; と言う具合で宜しいのでしょうか?
555nobodyさん:02/11/05 02:56 ID:???
>>552
それってたぶん同じファイルから@DATに読み込んでsplitしていろいろやったあと
元に戻して書き戻すっていう流れかな?
もしそうなら最初にファイルを読んだときに全行chompしてしまうのが手っ取り早い。
そのままsplitすると最後のデータだけ改行がついたままになってしまっていろいろ面倒だから。
憶測で書いたんで違ってたらスマソ。
556nobodyさん:02/11/05 02:57 ID:???
chompは末尾にある改行コードを取り除く
chopは末尾1文字を取り除く
557nobodyさん:02/11/05 04:36 ID:???
>>552
というかファイルロックしていないからでわ
558nobodyさん:02/11/05 04:57 ID:???
しょっちゅうファイルを壊してくれる
アテにならないchompがちょと嫌い。

>>552
$param =~ s/^\s+//;
$param =~ s/\s+$//;
を試してみるのはいかが。
559nobodyさん:02/11/05 08:18 ID:???
"$nm,$pw,$a\n";

"$nm,$pw,$a,\n";
こうする。
560nobodyさん:02/11/05 09:34 ID:???
Perlの改行って\nで統一的に扱ってくれないんですか?(テキストモードで)
なんかWindowsで\x0d\x0aじゃないと上手くいかなかったような。
561nobodyさん:02/11/05 10:48 ID:???
>>561
ココ?http://www.din.or.jp/~ohzaki/perl.htm#CRLF_Unify
でもどこで使えばいいのかいまいちわかってない初心者な自分。
562552:02/11/05 11:23 ID:???
皆さん、ご指導有難うございました。
とりあえず教えて頂いた方法を試してみたいと思います。
本当にありがとうございました。
563nobodyさん:02/11/05 12:39 ID:19J7tl02
zakzakがエラーだしてるわー(藁
564nobodyさん:02/11/05 13:23 ID:???
ttp://white.d51.net/yapw/yapw.cgi/RO_GPS.pmHP
に置いてあるPerlを動かそうと思い色々試しているんですが、質問があります。
Perlの勉強をしようと思い一週間でマスターするPerl for windowsという本を買い、
本に付いていたjperl for DOSを入れパス設定をすませPerlを実行できる環境は一応整ったんですが
上記のHPのPerlが動きません。もしかしてjperlでは動かないのでしょうか?
ActivePerlで動くとtopに書いてあるのですが、jperl,perl,ActivePerlの違いがいまいちわかりません。
どなたかご指導お願いしますm(_ _)m
565nobodyさん:02/11/05 13:34 ID:???
>>564
動かないというのは、何かエラーが出たの? それだけじゃわかりまへん。
566564:02/11/05 13:43 ID:???
起動方法はrotoold.plファイルがあるフォルダに移動し、「jperl rotoold.pl」で起動という感じです。

確認のため再度行ってみたところ↓の分が表示されました。(先程までは何も起こりませんでした

KKCFUNC が組み込まれました.
マイクロソフトかな漢字変換 バージョン 2.51
(C)Copyright Microsoft Corp. 1992-1993
Can't locate IO/Select.pm in @INC (@INC contains: c:/usr
djgpp/lib/perl5/site c:/usr/djgpp/lib/perl5/site .) at r
BEGIN failed--compilation aborted at rotoold.pl line 3.
これは正常に起動していると考えてもokなのでしょうか?

ちなみに先程まではCドライブにrotooldフォルダを置いて起動していましたがDに移動してみたところ、この表示がでました
567nobodyさん:02/11/05 14:02 ID:???
>>566
use Select; って行があると思うが、Select.pm ってモジュールを探し損ねてるんじゃ?
568564:02/11/05 14:24 ID:???
エディタでPerlファイルを開いたところuse Selectという行がありました。
Select.pmモジュールについてですがC:JPL5005\LIB\PERL5というフォルダにはいっているのを確認しましたが
モジュールを探し損ねてる場合どういった処置を行えばよろしいでしょうか?
569&rlo;こんう&lro;:02/11/05 16:04 ID:???
test
570nobodyさん:02/11/05 16:26 ID:???
しっつもーん!

undef $/;

$/="";
は便利だけど、

----------
みたいなものを読み取る時の区切りにする方法ってありますか?


あれば教えてください。
571nobodyさん:02/11/05 16:57 ID:???
--------------------------------------
ファイルAの中に
require'ファイルBへの相対パス';
--------------------------------------
ファイルBの中に
require'ファイルBからファイルCへの相対パス';
--------------------------------------

と書いてあって、
ファイルAを実行した場合、
ファイルCが正常に読み出せる術ってありますか?
572nobodyさん:02/11/05 17:01 ID:???
>.571
絶対パスで書けば即解決。
573nobodyさん:02/11/05 18:37 ID:???
=~ s/\n//g;
=~ s/[\n\r]//g;

上は分かるのですが下の意味が分かりません。
これはどういう動作なのでしょうか?教えて下さい。
574nobodyさん:02/11/05 18:43 ID:???
>>573
\n または \r をすべて削除
575nobodyさん:02/11/05 19:02 ID:???
あ…すいません(汗
\rとは一体どういう働きをするのかお聞きしたかったのです。
聞き方が悪くてごめんなさい。
576nobodyさん:02/11/05 19:21 ID:???
>>575
carriage return
577nobodyさん:02/11/05 19:25 ID:???
>>575
改行コードは\rと\nが混在してるから両方取り除くって事だろ?
578575:02/11/05 19:42 ID:???
>>576さん、577さんありがとうございました。
なんかややこしく考えてたみたい。助かりました。
579nobodyさん:02/11/05 19:44 ID:???
一時間おきにCGIを実行する方法ってありますか?
580nobodyさん:02/11/05 19:48 ID:???
>>568
perl はモジュールのパスを @INC という配列で覚えている。
ここにお望みのパスが登録されていなければ、スクリプト上で
モジュールを読み込む前に、パスを加えてやればいい。

BEGIN { unshift @INC, 'C:/JPL5005/LIB/PERL5' }
use IO::Select;

これと同じ事は

use lib 'C:/JPL5005/LIB/PERL5';

でもできるが、当然 lib.pm が見つからなければエラーになる。

>>571
require もファイル名だけ指定すれば @INC から探してくれる。

require 'jcode.pl'; # パスを明示しない

ファイル B や C がライブラリかモジュールなのなら、
@INC に登録されているディレクトリに置くか、
上述のようにパスを示してやればいい。単に設定ファイルを
ロードするような目的なら、絶対パス指定を薦める。
581570:02/11/05 20:16 ID:???


私にもレスください


582nobodyさん:02/11/05 20:22 ID:???
>>570


わかりません

583rubyist@カラアゲうまうま:02/11/05 20:28 ID:???
$/="-------------------";
正規表現は指定できない。awkならできる。
Ruby >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> awk >>> perl
584nobodyさん:02/11/05 20:34 ID:???
あとでsplitじゃだめなのか?
585名無しさん:02/11/05 21:41 ID:Bk/NbLLY
ruby最強ruby最強ruby最強ruby最強ruby最強ruby最強ruby最強
ruby最強ruby最強ruby最強ruby最強ruby最強ruby最強ruby最強
ruby最強ruby最強ruby最強ruby最強ruby最強ruby最強ruby最強
ruby最強ruby最強ruby最強ruby最強ruby最強ruby最強ruby最強
ruby最強ruby最強ruby最強ruby最強ruby最強ruby最強ruby最強
586nobodyさん:02/11/05 22:13 ID:???
rubyって何?
587nobodyさん:02/11/05 22:18 ID:???
ruby最強、でいいんだけど、根拠がないとね。
対応するソースとか機能の紹介してくれれば
比較のやりようもあるんだけど、全然教えてくれないし。
588nobodyさん:02/11/05 22:20 ID:???
rubyってそんなにいいの?
興味はあるんだけどなかなか気がすすまない
589nobodyさん:02/11/05 22:33 ID:FHcnSReB
教えてください
他のサーバーにあるライブラリをcgiに読みこませたいんですけど、
単に
require "http://www.〜省略〜/test.pl";
と書いても読めません。

読みこめる方法はないでしょうか?
よろしくお願いします。
590鮎川:02/11/05 22:35 ID:???
1995 AA倶楽部
1995 BB軍
1995 CCを考える会
1998 DDの協力会
1999 EE観察の会
1999 FFに親しむ会
1999 GGを守る会
2000 HHを探る会
2000 IIネットワーク
-------------------
を下のようにしたい。
-------------------
1995 AA倶楽部,BB軍,CCを考える会
1998 DDの協力会
1999 EE観察の会,FFに親しむ会,GGを守る会
2000 HHを探る会,IIネットワーク
-------------------
そこで、イメージとしては

for $i (1995 1998 1999 2000){

@year=$i;
push @year $_;

}
print @year;

のようなリズムで書きたいですが、これ以上、手が動きません。

だれか私を助けてください。

591 ◆hMJAPH9PWA :02/11/05 22:41 ID:???
>>589
HTTPなりFTPなりで取ってこないと無理だよ。
素直にコピーしてください。

>>590
年をキーにしてハッシュを使うといいよ。
592鮎川:02/11/05 23:16 ID:???
イメージとしてはこんな感じでしょーか?

while (<>){
($name,$year)=split /:/;
$years{$year}=$name;
}


for $year (keys %years){
print "$year",$years{$year},"\n";
}
593nobodyさん:02/11/05 23:35 ID:???
わかった、Rubyは最強、AWKも良い。
さぁPerlの話に戻そうか。
594nobodyさん:02/11/05 23:46 ID:+eUS3bf8
すいません、Perlにおける無名参照というのは、やっぱりプログラム終了までにundefで開放しなければいけないのでしょうか。

$ref=[];
$ref=1; <-何かで上書きして参照を抹殺

メモリリーク?
595nobodyさん:02/11/05 23:50 ID:???
>>594
Perlにメモリリークなんてあるのか?
そもそもCのようにメモリを操作することはできないんじゃ・・・
596 ◆hMJAPH9PWA :02/11/06 00:22 ID:???
>>592
イメージ的にはそうだね。あと一歩、あと1byteあればとりあえず動きそう。

>>594
ガベージコレクションがあるから問題ないよ。それがPerlのいい所。
597594:02/11/06 01:50 ID:???
ありがとうございます!安心しました。
とりあえず、”ガベージコレクション”を検索してキマッス!(;゚Д゚)
598nobodyさん:02/11/06 09:17 ID:???



CPANってなんて読むのですか?




599nobodyさん:02/11/06 09:22 ID:???
「こっぺぱん」
600nobodyさん:02/11/06 10:03 ID:???
grepコマンドではなくて、
ワンライナーでperlのgrep関数を使いたい時って、どんな時ですか?





601nobodyさん:02/11/06 11:47 ID:???
いらっしゃーい、Perlの「コーディング」で困ってる人のスレです。

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

1と3が無いと誰も答えられないよ。
良い回答は良い質問から。一緒に勉強しましょう。
602nobodyさん:02/11/06 12:11 ID:???
しーぱん。
603nobodyさん:02/11/06 13:59 ID:3zAQzaHu
すいません、突然ですが質問させてください。

$eigyou_jikan{'土'} = "09:00-13:00";
$eigyou_jikan{'月火水木'} = "09:00-19:00";
$eigyou_jikan{'金'} = "09:00-21:00";

こういった連想配列のkeyを曜日順にソートして
書き出すにはどうしたらよいでしょうか?

曜日順ソートルーチンを作ったほうがよいのでしょうか?
604nobodyさん:02/11/06 14:33 ID:???
sendmailでメールを送ります。
宛先が存在しないとfromに設定したアドレスに failure notice とかいう
メールが自動で来ますよね。
こういう風にアドレスが存在しない時cgi側で判断するにはどうしたらいいんですか?
605nobodyさん:02/11/06 14:38 ID:???
何行目かのどっかにあるファイルポインタを
行頭に持ってくるワザってないですかね。
606nobodyさん:02/11/06 14:42 ID:???
>>603
曜日は数字のままにしておいて出力する時に文字に変換するとか
607nobodyさん:02/11/06 14:48 ID:???
>>604
送ってみなくちゃ分からない。
よって不可能。
608nobodyさん:02/11/06 15:18 ID:???
>>607
いえ、えっと、送ってみて、
エラーメールが来たかどうかを知る動作を知りたいのです。
609nobodyさん:02/11/06 15:33 ID:???
複数のチェックボックスで、チェックしたモノの値は変数にどのように格納されてきますか?
610nobodyさん:02/11/06 15:39 ID:???
>>609
実際に出力してみれば…
611nobodyさん:02/11/06 15:42 ID:???
>>609
チェックボックスはそれぞれバリュー値が違うと思いますが。
612莫迦:02/11/06 15:49 ID:???
>>610
してみました。&で繋がれて出てきました。

>>611
はい。同グループのチェックボックスの値はどうやって取り出すのかなーと思って・・・。
613nobodyさん:02/11/06 15:58 ID:???
1グループに対して一個しか受け取れんのか?
データは届いてるんだから考えれば出来ることだろ。
何でもかんでも人に頼ろうとするな!
614nobodyさん:02/11/06 16:00 ID:???
↑ここは初心者が人に頼りに来るスレですけど。
>>612
&でsplitして=でsplitしてハッシュに突っ込んでkeyで取り出す。
615莫迦:02/11/06 16:00 ID:???
えーっと、それで、どうやって取り出しますか?
ひとつ考えたのは、データの受け取り時にname(=$key)が前の$keyと同じだったらなんかやって取り出す、
みなさんどうしますか?

>>613
そんな怒らないでくださいよ。最良の方法はなにかなーと思ってるだけですよ。
616nobodyさん:02/11/06 16:26 ID:???
foreach $pair (@pairs){
 ($key,$value) = split(/=/,$pair);
 $value =~ tr/+/ /;
 $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
 $value =~ s/"/"/g;
 $value =~ s/</</g;
 $value =~ s/>/>/g;
 $value =~ s/\r\n|\r|\n//g;
 $value =~ s/\,/,/g;

 if($key eq "チェックボックスのname"){
   push(@checkbox_name,$value);
 }else{
   $FORM{$key} = $value;
 }
}
こうだったっけな、とにかくそれだけは取得する時にnameを見て別の配列に入れればよかったんだと思う。
617nobodyさん:02/11/06 16:34 ID:???
つーか普通checkboxのnameはバラバラにする。同じにするのはradio。
同じグループ(複数回答可の選択式質問など)だとしてもnameをq1-1とか付ければ良いだろ。

Perlが録に出来ないのならHTMLで工夫しろよ。
618nobodyさん:02/11/06 16:45 ID:???
この程度のことで何故そこまでエラそうに出来るのか
やっと自分でもわかる質問が来たからここぞとばかりにしゃしゃりでましたって勢いだな
619nobodyさん:02/11/06 16:59 ID:???
実際にCGIスクリプト書いたことがあれば、同じname使いたいことって良くある。
>>617は、Perl使ったこと無いのがばればれです。
620nobodyさん:02/11/06 17:09 ID:???
>>618-619 ハイハイ, 腐れチョンは日本語の勉強してから来いや。
621nobodyさん:02/11/06 17:12 ID:7IPFijFP
PerlとCGIってどう違うんですか?
622621:02/11/06 17:14 ID:7IPFijFP
あ、IDチョトカコイイ
623nobodyさん:02/11/06 17:15 ID:???
データをカンマで区切って保存しているのですが、
ローカル側では全データ読み込めるのにサーバー側では最後の行しか読み込めません。
何が原因なのでしょうか?
624nobodyさん:02/11/06 17:18 ID:???
>>623
そのスクリプト書いてみ
625nobodyさん:02/11/06 17:22 ID:???
>>623
改行コードの違いと見た。
でもソース見ないことには分からんな。
626nobodyさん:02/11/06 17:26 ID:???
>>620
つけあがった態度しか取れない厨房はまず日本でのコミュニケーションの仕方を学んでおいで
>>621
CGIはperlに限らない
>>623
改行コードでしょうな
627nobodyさん:02/11/06 17:28 ID:???
>>626 お前がつけあがってる。
628nobodyさん:02/11/06 17:33 ID:???
オマエモナー系のレスが飛びだしてる様は人種の特徴を絵に描いたようだねぇ。。
629( ̄ー ̄)y-.。o○:02/11/06 17:36 ID:???
この板はさつばつとしておりやがりますねぇ。
630nobodyさん:02/11/06 17:38 ID:???
>>619
初心者のみなさんはこんな真似はしないようにね。
スクリプトをちょっとだけ省略できるかもしれないけど、
チェックボックスはnameが違うことが重要な意味を
持つので、これを同じにして後で困るのは非常に
おばかさんのすることですよ。
631nobodyさん:02/11/06 17:38 ID:???
【Perl】厨房コーナー Part 1
632nobodyさん:02/11/06 17:40 ID:???
>>630=617?
>>617の厨房度は置いといて、>>630には同意。
633nobodyさん:02/11/06 17:59 ID:???
>>608
たとえMX引いてあて先のSMTP直接たたいた場合でも、そこからさらに転送している場合などは
送ってみなけりゃわからない。
634619:02/11/06 18:09 ID:???
>>630
http://www.w3.org/TR/html401/interact/forms.html#checkbox
を読んでください。
英語が読めないなら
1つのFORM内で多くのcheckboxが同じcontrol nameを共有してよいと書いてあります。
635nobodyさん:02/11/06 18:09 ID:???
>>630にはほぼ同意だが、同じ名前を持つこと自体は禁止されてない。
CGI::では名前がぶつかるとリストで格納していたと思ったが、今確認できる状況に無い。
636619:02/11/06 18:17 ID:???
1つのnameに複数のvalueを持たせるときにcheckboxを使うんであって、
1つのnameに1つのvalueだったらradiobuttonがあります。
637nobodyさん:02/11/06 18:27 ID:???
「してもよい」と「するべき」は全く違うことが分からない人がいるな。
638619:02/11/06 18:42 ID:???
>>637
本当に複数選択の場合に一個一個、別のnameつけてるんですか。
意味がないというか、よけい無駄な処理が増えるだけのような気がするんですけど。
同じnameにした方がすっきりするので私は好きです。
639(´ー`)y━~~:02/11/06 18:54 ID:???
ひとりで騒いでるPerl初学者がいるスレはここですか?
640しつこくてスマソ:02/11/06 19:00 ID:???
CGI.pm のマニュアルだと、
> @turned_on = $query->param('group_name');
で、同じ name のチェックボックスの値を取れる
と書いてあります。

cgi-lib.pl だと、"\0" で区切られるんだっけ?
641:02/11/06 19:03 ID:???
普通かどうかはわからないが、name 同じにして論理和でやったほうがやりやすい

と思うな。 値を2の巾乗にしてさ。
642nobodyさん:02/11/06 19:15 ID:???
>本当に複数選択の場合に一個一個、別のnameつけてるんですか。

場合による。君みたいに一方的に決め付けるのは危険すぎる。
643nobodyさん:02/11/06 19:17 ID:???
HTML 4.01 勧告読んで由
644nobodyさん:02/11/06 19:24 ID:???
なんかw3cが、、、HTMLの勧告が、、、とか本題からズレてるんですが。

最初の質問者は受け取り方分からないんだからname別々にすりゃいいんでねぇの?
645nobodyさん:02/11/06 19:38 ID:???
別々にするか、>>616のやり方で配列に入れるか、>>640のように区切って格納するか、
いろいろありますね。
646nobodyさん:02/11/06 20:25 ID:???
確かcgi-lib.plだと、\0で区切って連想配列に入れてるんだっけ?
647nobodyさん:02/11/06 20:26 ID:???
>>646
って既出でした。すいません。
648592:02/11/06 21:50 ID:???
ぼくのナイス質問が

埋もれてしまった


649592:02/11/06 22:58 ID:???
配列のハッシュを使ってやろうとしてますが、
うまくいきません。何処がいけないのでしょうか?

while (<>){
($name,$year)=split /:/;
chomp $year;
$years{$year}=[ $name ];
}


for $year (keys %years){
#push(@years,$year);
print "$year",@{$years{$year}},"\n";
}
650592:02/11/06 23:02 ID:???
データデス。


AA倶楽部:1995
BB軍:1995
CCを考える会:1995
DDの協力会:1998
EE観察の会:1999
FFに親しむ会:1999
GGを守る会:1999
HHを探る会:2000
IIネットワーク:2000
651 ◆hMJAPH9PWA :02/11/06 23:06 ID:???
>>649
惜しいけど今ひとつ足りない
# ちなみにそれは配列のハッシュではなくハッシュの配列ね。

$years{$year} = [$name];
これは次のコードに相当するんだよ
@{$years{$year}} = ($name);
これじゃ配列に要素を追加しているとは言い難いでしょ。
652623:02/11/06 23:34 ID:???
指摘された通り改行コードで引っかかってました。感謝。
653nobodyさん:02/11/07 01:11 ID:???
すいません、一応過去ログ見たけどなさそうなので伺いたいのですが・・・

多重起動をさせないようにする常套手段って言ったらどうするんですかね?
個人的には自分自身($0)を読み取りで開いて排他ロック
 open (LOCKMYSELF, "< $0");
 flock(LOCKMYSELF, 6) or die;
とかやってたんですけど、SolarisだとOSの都合で読み取りオープン時は
排他ロックが掛けられない(共有ロックは可)らしいし、かといって
書き込みオープン("+< $0")とかは何となくコワイし…。

あと思いつく手といったら、別のどうでもいいファイルを用意して排他ロックを
試みるとか、system関数でpsとgrep使って調べるとかくらいしかないんですけど、
何かスマートな方法ってありませんか。
#そういう目的のモジュールでもあれば手っ取り早いんですけどね。
654nobodyさん:02/11/07 01:28 ID:???
>>653
> とかやってたんですけど、SolarisだとOSの都合で読み取りオープン時は
> 排他ロックが掛けられない(共有ロックは可)らしいし、

やっぱりそうなんだ。漏れは知らなくて、flock() を
コメントアウトしたまま動作してるプログラムが一つ
あるよ(w

UNIX ドメインソケットを使ってプログラムの実行を
逐次化する話は、何かで見たような気がする。ブロッ
クしちゃうかな。
655nobodyさん:02/11/07 01:30 ID:???
>>653
素人意見で申し訳ないんだけど、
漏れならダミーファイル作ってそいつがあったら強制終了、なかったら通常通り起動ってするな・・・。
素人だからそれくらいしか出来ないって突っ込みな無しで・・・。
656nobodyさん:02/11/07 01:44 ID:???
>>655
ダミーファイルつかまんまPIDファイルじゃないのか? それは。
/var/run/hoge.pid って。
657nobodyさん:02/11/07 02:59 ID:???
ループ処理
1 while s///;
の1なんですが、
マッチしなくなるまでループを続けるらしいですが、
一体どこでマッチしないって見切りをつけてるんでしょうか?

質問の意味もよく分かりませんね・・。
658nobodyさん:02/11/07 05:18 ID:???
条件式が偽になればそこが見切り
見切りをつける場所がなければ延々とループし続けてやがてマシンが落ちる
659592:02/11/07 10:22 ID:???
できました。でも、見栄えがよくない。
@{$years{$year}}を
,
とかスペースで分割して表示するにはどうすればいいでしょうか?

---------------------------
while (<>){
($name,$year)=split /:/;
chomp $year;
push @{ $years{$year} }, $name;
}


for $year (sort keys %years){
print "$year",@{$years{$year}},"\n";
}
660 ◆hMJAPH9PWA :02/11/07 10:53 ID:???
>>659
おめでとう。特に無駄な処理はしていないし、いいと思うよ。
強いてあげれば
($name,$year)=split /:/; は my($name, $year)=split /:/; の方が
他の場所にある(グローバルな)$nameや$yearを破壊してしまわないので望ましいね

配列要素をカンマ区切りで出力するには、一般にjoin($sep, @list)を使えばいいよ。
単にスペースで区切ればいいならダブルクォートの中に入れるだけでいいけどね。
661nobodyさん:02/11/07 11:26 ID:???
配列からハッシュを作って初期化してるんですけど、

{ map { $_, 1 } @list }


どんな時に使いますか?

サンプルキボン
662nobodyさん:02/11/07 13:09 ID:???
ファイル名の最後に塗る文字をつけるってどういう意味ですかぁ?

find . -name '*% find . -name '*.bak' -print0 | perl -n0e unlink

改行"\n"とは違って?



663nobodyさん:02/11/07 13:24 ID:r3gS0+P5
スカラー変数が配列にマッチするかどうかは
どうやって調べればいいですか?
以下のように書いてもNGになっちゃって・・・

@array = ("taro", "jiro");
$name = "taro";

if (@array =~ /$name/) { print "OK\n"; }
else { print "NG\n"; }
664nobodyさん:02/11/07 13:43 ID:???
if (grep(/\Q$name\E/, @array)){
665nobodyさん:02/11/07 14:06 ID:???
perlの中でローカルの任意のディレクトリを指定したい時は、(例えばデスクトップのhogeフォルダ)
$hogedir = 'C:\Documents and Settings\Administrator\デスクトップ\hoge\';
こうやって、最後に\を入れるとエラーになります。

$hogedir = 'C:\Documents and Settings\Administrator\デスクトップ\hoge';
最後の\を取ると正常になります。
最後の\は付けちゃいけないルールなんでしょうか。
666nobodyさん:02/11/07 14:09 ID:???
>>665
$hoge = 'aaaaaaaaa\'aaaaaaaaaaaaa';
print $hoge;

の結果を見てみれ。何故エラーになったか分かるから。
667nobodyさん:02/11/07 14:09 ID:???
>>665
そのスクリプトを見ないことにはなんとも言えない
668666:02/11/07 14:11 ID:???
あと

$hogedir = 'C:\Documents and Settings\Administrator\デスクトップ\hoge\\';

とやればお望みの結果になるかと。
669nobodyさん:02/11/07 14:42 ID:???
>>662
null文字( ´∀`)つ\0

>>663
foreach (@array) {
  if (/$name/) { OK }
  else { NG }
}
670nobodyさん:02/11/07 14:53 ID:???
ttp://ha1.seikyou.ne.jp/home/ikkyu/works/perl/sample.html#TransferHANKAKU

にある
「引数の全角数字を半角数字に変換する」

って方法はかなり厨ですかぁ?

もっとスマートな方法キボン

671nobodyさん:02/11/07 15:17 ID:???
素直にjcode.plかJcode.pm使えば?
672nobodyさん:02/11/07 15:32 ID:???
sub start{
my @a = ("あ","い","う");
my $b = "B";
&tugi("@a","$b");
}

sub tugi{
my (@hairetu,$hensu) = @_;
}

こうすると@hairetuに渡された引数が全部入ってしまいます。
仕方なく、
my @hairetu = $_[0];
my $hensu = $_[1];
とやっていますが、引数が多くなった時は大変です。
どうすればうまく引数を受け取れますか。
673672:02/11/07 15:35 ID:???
すいません、
my @hairetu = $_[0];
my $hensu = $_[1];
もダメでした(汗
@hairetuに "あ い う" こういう感じで配列が一個になってしまいました。
674nobodyさん:02/11/07 15:49 ID:???
sub start{
my @a = ("あ","い","う");
my $b = "B";
&tugi($b, @a);
}
sub tugi {
my ($hensu, @hairetu) = @_;
}

or

sub start{
my @a = ("あ","い","う");
my $b = "B";
&tugi(\@a, $b);
}
sub tugi {
my ($tmp, $hensu) = @_;
my @hairetu = @{$tmp};
}
675nobodyさん:02/11/07 17:47 ID:???
${$foo}{bar}

$foo->{bar}
と書ける理由は何でしょうか?
676nobodyさん:02/11/07 17:54 ID:???
$foo = \%foo; の場合
%foo と %{$foo} は同じ。
よって $foo{bar} と ${$foo}{bar} は同じ。

$foo{bar} と $foo->{bar} は同じ。

だから ${$foo}{bar} と $foo->{bar} は同じ。
677nobodyさん:02/11/07 18:01 ID:???
01234/05678 ABC01234 ハンドル RE:タイトル

本文
----------------
のような形式の二フログからタイトル行だけ取り出したいのですが,
grep(/^[0-9]{5}\/[0-9]{5}\ /, @file);
だとエラーになったり(ならなかったり)します。
どう書くべきですか?
678677:02/11/07 18:07 ID:???
すみません。正確には,
if ($str =~ /^[0-9]{5}\/[0-9]{5}\ /)
だとエラーにならず,
grep(/^[0-9]{5}\/[0-9]{5}\ /, @file);
だとエラーになります。
679nobodyさん:02/11/07 18:19 ID:???
>>676
質問者じゃないけど勉強になった。
680nobodyさん:02/11/07 18:32 ID:???
>>678
grepでは正規表現が使えないからかな
681nobodyさん:02/11/07 18:35 ID:???
>>677
エラーって何のエラー?
682677:02/11/07 18:44 ID:???
原因がわかりました。すみません,構文とは無関係でした。
ソースをUTF-8で保存すると,
エディタが?を0xC2A5(円マーク)として
エンコードしやがるのが原因でした。申し訳ない。
683rubyist@カラアゲうまうま:02/11/07 21:20 ID:???
循環参照があればリークするだろヴォケ
684nobodyさん:02/11/07 21:41 ID:???
またきた さびしんぼが
685rubyist@カラアゲうまうま:02/11/07 21:45 ID:???
ヴォッケ
686611:02/11/08 00:20 ID:???
……
687nobodyさん:02/11/08 00:32 ID:???
rubyistって・・・高校でてないの?
688nobodyさん:02/11/08 00:56 ID:???
>>686うそついちゃいかん。消し忘れかね
689デフォルトの名無しさん:02/11/08 01:18 ID:???
>>687
rubyistって・・・中学校もでてないと思うよ。

690nobodyさん:02/11/08 09:48 ID:???
一応、ここで確認しときます。

ttp://www.amazon.co.jp/exec/obidos/ASIN/4899770413/qid=1036634229/sr=1-7/ref=sr_1_2_7/249-3840325-5917917
「やさしいPerl 表計算的処理編」

ExcelVBAが大嫌いな人のために、

「perlで表計算」というスレ立ててもいいですか?

そういうネタは育つかな?

691690:02/11/08 09:49 ID:???
そうそう、
昔そういうスレありましたか?
692nobodyさん:02/11/08 13:13 ID:???
370行のファイル、hoge.txt があります。
1..6と(最初の6行)
364..370(最後の7行)
がゴミ情報です。
perlの
for $i (7..363){}
とか使って、
ファイルの必要な部分だけを抜き出したいんですが、
どうすればいいでしょうか?

tail -364 hoge.txt|head -357
は計算するのが面倒です。
693nobodyさん:02/11/08 13:14 ID:???
>>690
「ExcelVBAが大嫌いな人」ですが、xlsをCSVで保存、
後は、Perlでさくさくやってます、または、Perl
でさくさく、CSVにしてExcelに読ましてますが、
それ以上の高度なことができるってことでしょうか。
694nobodyさん:02/11/08 13:18 ID:???
もち、Excelファイルでデータ交換しなきゃならない場合だけどね。
普通は、CSV2TeXできれいに出力。
695nobodyさん:02/11/08 13:20 ID:???
>>692
if (6 < $. && $. < 364) {
print;
}
でどうよ。
696nobodyさん:02/11/08 14:13 ID:???
693さんが使ってらっしゃる
CSV2TeX
は何処にあるCSV2TeXでしょうか?

すごく興味あります。ハァハァ。

697nobodyさん:02/11/08 16:10 ID:???
>>696
あなたなら5〜6分でできるであろうような、自作Perl
スクリプトです。期待に添えずスマソ

698nobodyさん:02/11/08 21:55 ID:???
>>695

>>692はちょっとわかりにくいけど、
> tail -364 hoge.txt|head -357
> は計算するのが面倒です。
っていうからにはいろんなファイルに対してそういう処理をするから
そのたびに計算するが面倒だってんじゃないの?

perl -i.bak -ne 'unshift@a,$_;print$a[7]if$.>13' でどう?
699デフォルトの名無しさん:02/11/08 22:20 ID:???
>>698
へー、最後のところ読み飛ばしてレスしちゃった。
それにしても、あんたの案は頭いいね。もしかして、
あんた天才?

700698:02/11/08 22:38 ID:???
>>699
あはっ、そうだったら良かったんだけどね。
こういうの考えるのって楽しいよね。
701nobodyさん:02/11/08 23:15 ID:???
ちと失敬。
配列を1個の変数にするにはどうすればいいんでしたっけか?
702nobodyさん:02/11/08 23:19 ID:???
>>701
意味不明
703デフォルトの名無しさん:02/11/08 23:20 ID:???
>>701
$scalar="@array";
$scalar=join("", @array);
とかさ。

704701:02/11/08 23:22 ID:???
>>702
他に説明のしようがござらん。
>>703
なるほど。ありがとうござる。
705rubyist@カラアゲうまうま:02/11/08 23:28 ID:???
頭の不自由な人ですか?
706nobodyさん:02/11/08 23:34 ID:???
おっ! 今夜も寂しんぼうがやってきた。

したーのほうにあったスレをご丁寧にあちこち探しまわってやっと見つけた

このスレにカキコですか・・・
707rubyist@カラアゲうまうま:02/11/08 23:38 ID:???
20番前後で「したーのほう」とは随分目が悪いんだな(w
厨房質問ばかりなのがいかにもPerlスレらしい
708rubyist@カラアゲうまうま:02/11/08 23:41 ID:???
何でk身うj食う入れjyr!
こて手見せる!
709nobodyさん:02/11/08 23:44 ID:???
rubyは興味あるけど
こんな人間になっちゃうんなら触らない方がいいかな
710nobodyさん:02/11/08 23:50 ID:???
いらっしゃーい、Perlの「コーディング」で困ってる人のスレです。

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

1と3が無いと誰も答えられないよ。
良い回答は良い質問から。一緒に勉強しましょう。
711rubyist@カラアゲうまうま:02/11/08 23:51 ID:???
>>710
1:Perlコミュニティの壊滅
2:取りあえず2chで煽ってみた
3:あんまりまともに相手にされない
712nobodyさん:02/11/08 23:56 ID:???
上下フレーム式の2ショットチャットCGI作ってるんですが、
相手が入室した時に、上フレーム内に相手の名前を表示させるために
1回だけリロードさせたいんですが、
下のフレームだけがリロードされて上のフレームはリロードできないんです。
Location: 以外で、上のフレームだけをリロードさせる方法無いでしょうか?
713nobodyさん:02/11/08 23:59 ID:???
>>712
もうちょい詳しくね。
ソースの関係あるとこ見せてみ。
714nobodyさん:02/11/09 00:04 ID:???
>>712targetの問題でわ
715712:02/11/09 00:07 ID:???
説明しにくくてすみません・・

上のフレーム: 発言窓と参加者リスト
下のフレーム: 発言ログ

で、
相手が参加した時の動き

上のフレーム: 参加者リストに相手の名前追加
下のフレーム: 相手の入室サイン

となるようにしたいのですが、
下のフレームはMETAタグが仕込まれているのでRefresh時間を0にするだけで
リロードは即時に出来るんです。
しかし上のフレームは発言窓で固定のため、METAタグを仕込めず、
リロード出来ないのです。
この「相手が参加した時の動き」のサブルーチンは、
下フレーム内のリロードの処理だけ入ってるんです。
716nobodyさん:02/11/09 00:08 ID:ohpSmuMz
/home/foo/bar/hoge/fuga.txt
/home/foo/bar/hoho.txt
というリストから、*.txtを削除する方法はありませんか?
717712:02/11/09 00:08 ID:???
>>714
METAタグにはtarget効きませんでした。
718nobodyさん:02/11/09 00:12 ID:???
>717
JavaScript使え。
719nobodyさん:02/11/09 00:13 ID:???
>>712=715
言ってることがよくわからん。混乱してない?

そもそも、
>相手が参加したときの動き
って、リロードする前に相手が参加したかどうかはわからないよね。
で、なんでまたMETAでリロードする必要があるの?
720nobodyさん:02/11/09 00:14 ID:???
>>716
s/[^\/]+\.txt$//;
721719:02/11/09 00:16 ID:???
あ、上フレームをリロードするため?そりゃ無理だ。
それなら、やっぱり>>718の言うとおりJavaScriptだね。
ただ、入力欄のあるフレームを勝手にリロードすると大変
使いにくいチャットになると思われるので、その辺注意して。
つーか、なんでリストを下のフレームに表示しちゃいけないの?
722nobodyさん:02/11/09 00:17 ID:2uRXoRQG
現在、メール送信のプログラムを書いているのですが、
sendmailじゃなくて、smtpで送りたいんです。
ただ、サーバがモジュールが使えないので、
モジュールなしでのsmtpサーバ経由のメールの
送り方をご存じの方ご教授願います
723712:02/11/09 00:18 ID:???
>>721
Javascriptで1回きりリロードって出来ます?Perlスレなのにすみません・・。

下のフレームにリスト表示したくないんです。
724nobodyさん:02/11/09 00:19 ID:???
参加者リストは下フレームに置くのが一般的。
上に1回だけ表示させてもいなくなった人は消えないし後から来た人が追加されることもない。
725nobodyさん:02/11/09 00:20 ID:ohpSmuMz
>>720
ありがとうございます。感謝です。
726nobodyさん:02/11/09 00:24 ID:???
御願いします。

cat -n で複数ファイルを番号つきで見ています。
下のようにするとファイルの境界がなくなって見ずらいです。

-------------------
とか入れることできないでしょうか?

$ for i in `seq 1 2`;do cat -n vba.$i;done
1 With ActiveSheet.UsedRange
2 Set r = .Rows(.Rows.Count).Offset(1, 0)
3 For Each c In r.Cells
4 c.FormulaR1C1 = "=SUM(R[-" & c.Row - 1 & "]C:R[-1]C)"
5 Next
6 End With
7 End Sub
1 With ActiveSheet.UsedRange
2 Set r = .Rows(.Rows.Count).Offset(1, 0)
3 For Each c In r.Cells
4 If c.Column <> 1 Then
5 c.FormulaR1C1 = "=SUM(R[-" & c.Row - 1 & "]C:R[-2]C)"
6 End If
7 Next
8 End With
9 End Sub
727nobodyさん:02/11/09 00:28 ID:???
---------------------- の内容のファイルを用意し(仮に line.txt)

% cat -n xxx line.txt
728nobodyさん:02/11/09 00:44 ID:s/UCnmus
729719:02/11/09 00:46 ID:???
>>723
> Javascriptで1回きりリロード
参加者が変わったときだけ上フレームをリロードするJavaScriptを
下フレームのHTMLに挿入すればいい。
でもさっき言った入力欄の問題があるから、さらに上フレームは
分割したほうがいいかもね。

リロードしないで直接JavaScriptで上フレームに書いてやってもいいと
思うけど。
730nobodyさん:02/11/09 00:52 ID:???
>>727
その方法は、例えば、僕は連番ファイルを
$ for i in `seq 1 2`;do cat -n vba.$i;done
のようにして読んでるので、ひとつのファイルを読むたびに
line.txtを読みこむ必要がありませんか?







731nobodyさん:02/11/09 00:55 ID:???
>>709
そのセリフを言わせるのが奴の目的だから相手するな。
732nobodyさん:02/11/09 00:58 ID:???
>>730
$ for i in `seq 1 2`;do cat -n vba.$i line.txt;done
733ペール:02/11/09 01:03 ID:su5V8ups
はじめまして。

index.html等から、cgiを呼び出して、その結果を出力したいのですが、
htmlに<img src="〜.cgi">という風に書くと、
画像がないときの表示になりました。
どうすれば解決できますか。
教えてください。
734nobodyさん:02/11/09 01:07 ID:???
>>733
ヘッダ書いてる?
735ペール:02/11/09 01:10 ID:su5V8ups
>>734
レスありがとうございます。
ヘッダには、
"Content-type: text/plain"
と書いてあります。
736nobodyさん:02/11/09 01:13 ID:???
GIFファイルなら Content-type: image/gif\n\n

JPEGファイルなら Content-type: image/jpeg\n\n

とかじゃない?
737ペール:02/11/09 01:15 ID:???
書き忘れてました。
テキストを表示させたいと思ってます。
たとえば、掲示板で、最後に書かれた記事とかを
表示させるにはどうすればいいんでしょうか?
738nobodyさん:02/11/09 01:16 ID:???
>>737

>>733で<img src="〜.cgi">って書いてるよ?
739ペール:02/11/09 01:18 ID:???
<img src="〜.cgi">でcgiを呼び出そうと思ったのですが、
テキストを表示させたい場合にはそこがまずいんでしょうか?
自分でもいろいろ調べてみたのですが、見つからなくて・・・
740nobodyさん:02/11/09 01:25 ID:???
>>739
frameかiframe使う。
741ペール:02/11/09 01:33 ID:???
フレームで分割して、その部分だけcgiで書けばいいってことですかね?
742マリモーマ:02/11/09 05:33 ID:zHgBIOSq
あと SSIかな?
743nobodyさん:02/11/09 06:40 ID:???
>>724
自分が発言した時には更新されるんじゃない?
744nobodyさん:02/11/09 09:35 ID:QCjNu4vr
SSIが一番いいと思うが。
text/plainで出力するわけだし。
745nobodyさん:02/11/09 10:37 ID:???
つかCGIで出力したテキストをHTMLに表示できると思ってるのが間違いであると素直に教えてあげた方が。
だから一般的なアクセスカウンタはテキストじゃないわけだし
746nobodyさん:02/11/09 10:51 ID:???
XMLで出力、これ最強。
747nobodyさん:02/11/09 11:24 ID:???
GD.pmでイメージに変換するというのはどうだ。(w
748nobodyさん:02/11/09 11:47 ID:???
JavaScript
749nobodyさん:02/11/09 12:46 ID:???
投稿内容チェックしたいんですけど、
半角英数字以外と数字以外の規制はどうやればいいですか?
750nobodyさん:02/11/09 12:50 ID:???
die if /\W/;
751nobodyさん:02/11/09 16:50 ID:???
ここはPerlの質問用スレッドだということを分かっているのかな。
752nobodyさん:02/11/09 18:22 ID:???
753Ruby!!!!!!!!!!!:02/11/09 19:20 ID:???
ここは糞言語の質問用スレッドだということを分かっているのかな。


754nobodyさん:02/11/09 20:17 ID:???
>>750
dieはまずいでしょう。
755nobodyさん:02/11/09 22:08 ID:???
>>754
チョトワラタ
言われてみればそうだ
756デフォルトの名無しさん:02/11/10 08:28 ID:???
>>750
`kill 投稿者`と言いたかったんだろ。

757nobodyさん:02/11/10 10:48 ID:/Zxw7C49
Perl でブラウザのJavaScriptがONになっているのと、なっていないのとで、
処理を分けることは可能でしょうか?
環境変数か何かから受け取れるとか^^;

やはり、Perlのソース内(ページ表示部分に)に
JavaScriptのソースを直接書くしかありませんか?

微妙に板違いかもしれませんが、よろしくお願いします。
758nobodyさん:02/11/10 10:53 ID:???
>>757
多分、無理だと思う
759nobodyさん:02/11/10 11:00 ID:???
>Perl でブラウザのJavaScriptがONになっているのと、なっていないのとで、
>処理を分けることは可能でしょうか?

無理
760nobodyさん:02/11/10 11:43 ID:???
758氏、759氏
お答え、ありがとうございました。
761nobodyさん:02/11/10 12:31 ID:???
>>757
余裕でできるよ
762nobodyさん:02/11/10 12:36 ID:???
>>757
onBlurとかで出来る気はするけどなぁ
763nobodyさん:02/11/10 13:28 ID:???
>757は、CGIのソースのHTML表示部分にJavaScriptを直接書く方法以外でってことでしょ。


もとの文字列($hoge)と、その文字列の一部分を置換した文字列($piyo)が欲しいとき
$piyo = $hoge;
$piyo =~ s/xxx/yyy/;
ってやってるんだけど、一発でいける方法ってある?
764nobodyさん:02/11/10 13:34 ID:???
>>763
既出
765nobodyさん:02/11/10 13:39 ID:???
$hage="あ";
の$hageがshift_jisだったら、真を返すには、
どうすればいいのですか?
(jcodeを使用せずに。)
766nobodyさん:02/11/10 13:39 ID:???

>764
このスレ?
リンクとか張ってもらえると嬉しいが、探すの面倒なら
検索キーワードくらい教えてくれ。

っていうか、答えいて。
767nobodyさん:02/11/10 13:41 ID:???
質問です。
HPを二つ持ってて同じ掲示板を使っているんですが・・・
SKINだけ別々にできますか?
768nobodyさん:02/11/10 13:57 ID:???
>>766
($piyo= $hoge) =~ s/xxx/yyy/;
って764はいいたいんじゃないの
できるかは試してないけど
769nobodyさん:02/11/10 13:59 ID:???
>>767
それぞれの外部スタイルシートをリファラで分岐させるとかくらいでは
770nobodyさん:02/11/10 14:02 ID:???
>>765
$hage eq 'shift_jis'
771nobodyさん:02/11/10 14:06 ID:???
>>769
リファラってなんですか?
772nobodyさん:02/11/10 14:08 ID:???
>>765
if($hage eq 'あ'){print 'SJISぽ'}
else{print 'SJISじゃないぽ'}
773nobodyさん:02/11/10 14:13 ID:???
>>771
リファラとはリンク元のこと。掲示板が置いてあるページのURLが返ってくる。
リファラがA.htmだったらA.cssを使い、
B.htmだったらB.cssを使うようにしてみれば、とゆこと。
ブックマークやブラウザの種類によってはリファラが空の場合もあるけど
774nobodyさん:02/11/10 14:47 ID:???
>>771
if ($ENV{'HTTP_REFERER'} =~ /a.html/) {
print "<LINK REL=\"stylesheet\" HREF=\"a.css\" TYPE=\"text/css\">";
} else {
print "<LINK REL=\"stylesheet\" HREF=\"b.css\" TYPE=\"text/css\">";
}
775nobodyさん:02/11/10 15:41 ID:???
>>774
いかがなものか・・・
776nobodyさん:02/11/10 15:58 ID:???
全てのグローバル変数を初期化するにはどうすればいいんでしょうか?
ひとつずつ書くしかないのでしょうか?
777nobodyさん:02/11/10 16:29 ID:???
print '777get記念にティンコ袋の毛をソイエで奪毛'
778nobodyさん:02/11/10 16:32 ID:???
>>776
実行しなおすと、自動的に初期化される仕様です。
779nobodyさん:02/11/10 16:53 ID:???
>>778
mod_perlかspeeycgi使いたいので
前の変数が残ってると変な動きするんで...
780 ◆hMJAPH9PWA :02/11/10 16:58 ID:???
>>779
use strict;して変数はmyで宣言する
781nobodyさん:02/11/10 17:38 ID:???
mod_perlの罠 〜 その1
スクリプト全体は一つの大きなサブルーチンとして呼び出されます。
そのため、
782nobodyさん:02/11/10 19:09 ID:gP4L1IC3
はじめまして
perlとDBIを使ってoracleデータベースに接続してselect等の結果をHTMLで表示
したいのですが行き詰まってしまいました。

ActivePerlのPPMを使って

ppm
install DBI
ppm
install DBD-oracle

と入力したのですが

install_driver(oracle) failed: Can't load 'C:/usr/local/site/lib/auto/DBD/Oracle
/Oracle.dll' for module DBD::Oracle: load_file:このアプリケーションの実行に必要
なライブラリ ファイルのうちの 1 つが見つかりません。 at C:/usr/local/lib/DynaLoa
der.pm line 206.
Compilation failed in require at (eval 1) line 3.
Perhaps a required shared library or dll isn't installed where expected

上記のようなエラーが出てしまいます。
何が問題なのでしょうか?よろしければご教授お願いします。
783782:02/11/10 19:12 ID:gP4L1IC3
すいません
ppm
install......
の後oracleデータベースに接続できるようなプログラムを作って
そのプラグラムをコマンドラインから実行すると上記のエラーが出ます
784nobodyさん:02/11/10 23:13 ID:???
>>782
oracle.dllがリンクしてるdllが無い。OCIW32.DLLとやら要るんじゃないか?
785nobodyさん:02/11/11 22:36 ID:???
すみません、色々資料探したのですが分からなかったので教えてください
Ambiguous call resolved as CORE::exit(), qualify as such or use & at hogehoge.cgi line 975.
っという警告を吐かれて、どうすれば修正できるのかわかりません( ´Д⊂
他の個所でexitとか使ってても警告吐かれないのになんでだろう…

あと、外部設定ファイル(require "setting.cgi")に、色々変数に放り込んで設定が書いてあるんですけど
myとかでローカル変数にしてしまうとmainから読み込めなくて困ってます
かといってmyつけないとガンガン警告吐かれるし( ´Д⊂

すみませんが、解決方を御教授いただきたく思います、お願いします
786nobodyさん:02/11/11 23:21 ID:v+DAnj2A
Perl5.8.0(win32)を試してるのですが、eucを読み込んで
内部形式に変換することができません。お助けを・・

use Encode;
$fname = "euc.txt";
open(FILE, "<$fname") or die;
$euc = <FILE>;
close FILE;
$str = decode('euc-jp', $euc);
print $euc."\n".$str;
787_gunzip ◆eiH/XdoCNg :02/11/12 02:06 ID:???
>>785
前者: おんなじパッケージに自分で定義したサブルーチンexitがあるので、exit()と
書かれた場合どちらを呼び出すのか曖昧だけど、組み込みの方を呼ぶことにしたよ、という意味(だいたい)
自分で定義した方を呼び出したければ、前にアンパサンドを付けて&exit()のように呼び出せばいい。
そうでなければCORE::exit()とすれば警告は出ない。
詳しくはuse diagnostice;して調べて。

後者: >Perl5.6 ならばourを用いて宣言する。
それ以外の場合は use vars qw[$foo @bar] とする。
----------------
>>786 v5.8.0(built for i686-linux-thread-multi)では普通に動くよ。
変換できない、とはどのように出来ない?
open my $infile, "<:encoding(euc-jp)", $filename or die $!;
で勝手に変換してくれるし楽になったなぁ。
788_gunzip ◆eiH/XdoCNg :02/11/12 05:44 ID:???
すまん。
>>787では、Encodeモジュールが動かないのだと勝手に勘違いして「動くやん」と書いてしまった。

VC++6でコンパイルしたPerl5.8.0(built for MSWin32-x86-multi-thread)で試してみた。
それで思ったのだが、
use encoding "shiftjis";
とか、
use encoding "utf8", STDOUT => "shiftjis";
とするか、
binmode(STDOUT, ":encoding(shiftjis)");
が必要なのだなぁ。取りあえず報告までに
789nobodyさん:02/11/12 11:29 ID:???
mod_perlというのはどのレンタル鯖とかでも組み込まれているものなのでしょうか?
CGI可とかPerl可とか曖昧にしか書いてないところが多いのですが。
790nobodyさん:02/11/12 11:50 ID:???
>>789
共用なら普通動きません。
昔、mod_perlを開放して痛い目にあってた鯖屋を知ってます。
791786:02/11/12 12:49 ID:ucbSPxI8
わざわざ調べてもらってありがとうございます。788さんのを
ヒントに色々やってたらできました。using encode("shiftjis")
で内部の使用形式を変えているのですね。ただ、shiftjisの
問題は解決されていないようでしたので、eucかutf8で処理して
コンソール出力時にshiftjisにするように書くことにしました(汗。
内部形式に変換するにはEncode::decode("euc-jp", $euc)と
書けばできました。ありがとうございました。
792nobodyさん:02/11/12 15:43 ID:kFsoQdfX
本当は改造なんですけど、改造工房よりこちら向けかと思ったので。
よろしくおながいします。

掲示板などの書き込み欄で
平仮名だけを入力したい時ってどう書けばいいんでしょうか?
例えばメール欄にアルファベットか数字のみしか入力させたくない場合
if ($in{'email'}){
if ($in{'email'} !~ /[\w\.\-]+\@[\w\.\-]+\.[a-zA-Z]{2,3}/){
&error("不正な入力です");
}
}
こんな処理を、平仮名でやりたいんです。
リファレンスサイトで調べても未記入の際のエラーはあっても
「○○以外の入力は不正」とする処理で、平仮名を対象にしたものを
見つける事ができませんでした。
perlはまるっきり分からないので、とんちんかんな事言ってたらすみません。
(自分なりにやってはみたんですが、案の定internet server error...)
793nobodyさん:02/11/12 15:57 ID:???
>792
まずはひらがなをどうやって判定するかを考える。
文字コードの勉強からはじめよう。
794nobodyさん:02/11/12 16:02 ID:???
>793
正規表現が先では?
795nobodyさん:02/11/12 16:34 ID:???
>>785
後半について。その外部設定ファイルの先頭でuse strict; せずに、
package Set;
などとして適当なパッケージにして、mainで参照するときに
$Set::var
などとパッケージ名をつければ読めます。
パッケージに隔離すれば、その中で宣言された変数はグローバルにはならず、
パッケージ変数になりますので安心して使用できます。

796792:02/11/12 18:15 ID:kFsoQdfX
>>793 >>794
レスありがとうございます。

if ($in{'msg'}){
if ($in{'msg'} !~ /\x82[\x9F-\xF1]/){
&error(不正な入力です);}
else {
$msg = '';
$errmsg = "不正な入力です\n";
}  }

このようにしてみたところ、ひらがなは入力できるのですが
カタカナや漢字をいれると、エラーメッセージ(不正な入力です)ではなく
Internet server errorになってしまいます。
else以下は、書き込み後の確認画面でメッセージが出せるのでもいいかと思い
見よう見真似でやってみたんですが &error の部分で失敗してるっぽいですね...

平仮名部分は
if ($in{'msg'}){
if ($in{'msg'} !~ /\x82[\x9F-\xF1]/)
を使うとして、これに加えてカタカナで入力するとエラーが出る風に
書くとするとどう書けばよいのでしょうか。
全角カタカナの文字コードは \x83[\x40-\x96] ですよね?
こっちの方がやりにくいのかな…
797nobodyさん:02/11/12 18:35 ID:???
>>796
&error('不正な入力です');

if ($in{'msg'} !~ /\x82[\x9F-\xF1]/ or $in{'msg'} !~ /\x83[\x40-\x96]/)
これではダメなの?
798792:02/11/12 19:18 ID:kFsoQdfX
>>797さん ありがとうございます
それでやってみたんですが
ファイルを呼び出した時点でinternet server errorになりました...
if ($in{'msg'}){
if ($in{'msg'} !~ /\x82[\x9F-\xF1]/){
&error(不正な入力です);}
}
だと、平仮名入力なら実行できます。
平仮名以外を入力すると500エラーになります。

平仮名 ならば そのまま実行
平仮名以外 ならば エラーメッセージを出しましょう
……という風にできればベストなんですが。
799nobodyさん:02/11/12 19:39 ID:???
>>798
不正な入力です を '' で囲って。
ローカルでテストできる環境があるなら perl -cTw でエラー読んでね。
800785:02/11/12 20:06 ID:???
>>787
レス有り難うございます、たしかにサブルーチンexitって作りました(藁
でもCOREってなんじゃらほいとかuse diagnostics;ってなんだー、とか
our?use vars qw[$foo @bar]?ってな感じで…
たまに解説サイトででくる$fooとかってなんなんだろう…とか…
貴方の教えを胸に色々調べてがんがってみます、ありがとうございました

>>795
御教授有り難うございます
パッケージ宣言とかして名前空間移しちゃう攻撃とかは思いついたんですが
既に1500行くらい書いちゃって直すの面倒だなぁ、とか思ってる横着な私です(藁

>>792
手持ちの学校の図書室に侵入してコソーリ購入リストに紛れ込ませておいた本に書いてあるんですけど
平仮名は[ぁ-ん]で引っかかるそうな…?
801792:02/11/12 20:28 ID:kFsoQdfX
>>799
すみません、いじってる方のファイルには " 入れてました。
perl -cTw・・ぐぐってみたのですが分かりませんでした・・・
ローカルテストは出来ない環境なんです

>>800
[ぁ-ん]やってみたんですけど、だめですた。鯖の関係かも?

今気付いたんですが、同じスクリプトのメール不正入力の処理が
こうなってます。同じようにしたいんだけど...
if ($in{'mail'}) {
if ($in{'mail'} =~ /^[\w\.\-]+\@[\w\.\-]+$/) {
$mail = $in{'mail'};
} else {
$mail = '';
$errmsg1 = "■メールアドレスが正しく記入されていませんでした、未記入扱いにさせて頂きます。<BR>\n";
}
}
802nobodyさん:02/11/12 21:27 ID:9jFBTK95
コンマで区切られたデータの中のaをbに変えたいのですが、

s/,a,/,b,/g;

とすると/,a,/は大丈夫なんですが/,b,/でエラーになります。
/\,b\,/としてもだめでした。
s/a/b/g;だとよけいなところまで変わっちゃいます。
どう書けばよいのでしょう?
803nobodyさん:02/11/12 21:33 ID:???
>>802
それでエラーになるわけない。つーか、aとかbとかじゃなく、元のソース
そのまま見せてみ。
804nobodyさん:02/11/12 22:07 ID:???
>802
ちなみにそのやり方だと、,a,a,a,が,b,a,b,にならないか?
805785:02/11/12 22:09 ID:???
すみません、やっぱどうしても分かりません…
今一度御教授ください、おながいします
色々自分で調べてみて、Perl5.6で実行してる(はず…)ので、ourで宣言しても
Global symbol "$log_dir" requires explicit package name at 2ch.cgi line 1340.
とかガソガソ警告吐かれました( ´Д⊂
use vars qw[$log_dir];と、もう片方の御教授いただいたやり方だと
引っ張ってきた変数に関しては警告吐かれなくなりました… なんでだ…
でも20も30もあるのに全部引っ張ってくるなんてわかりにくすぎー…、と

ちなみにCORE::の方はわかんなかったのでとりあえず呪文みたいなもんだと思っておきます(藁

>>801
-cスイッチ スクリプトの構文チェックだけして終了する(スクリプトを実行しない
-Tスイッチ 汚染チェック(データセキュリティチェック)を有効にする
-wスイッチ 警告を出力する
本よりコピペ   …本にCtrl+Fとかやりたくなったりしません?
806795:02/11/12 22:21 ID:???
>>800
1500行でpackage分けされていないとは、物凄いコードをつかまされてしまいました
ね。ご愁傷様です。

さて...まずですね、myをつけると、別の変数から移し換えない限り、スコープの外
からは読めません。別のファイルはスコープの外なんで読めません。

従いまして、settingの変数はグローバル変数かパッケージ変数にするしかありませ
ん。よって、settingのuse strict; を外すか、>>787さんが書いているように明示的
なグローバル宣言をしなければなりません。mainでuse strict; していないなら、
シンボルのエクスポート/インポートという手もありますが、名前空間を汚染するの
で、グローバル変数にするのと何ら変わりません。

名前空間を汚染しないようにするには、おそらく私の書いた方法しかないはずです。

納期が迫っているなど、修羅場な場合は、settingをmainの先頭にべちょっと貼りつ
けるという手もあります(これならmyでも読めます)が、非推奨です。
807795:02/11/12 22:26 ID:???
ああ、そういえば、ourのスコープはレキシカル(myと一緒)なんですね。つまり、
スコープの外では参照できません。
例えば、同じサブルーチンを何回も通る時に、前の値を記憶しておいて使いまわし
たい時とかに使います。
私も過去に誤解して苦しんだ経験があるのを忘れていましたよ。ヤレヤレ。
808nobodyさん:02/11/12 22:34 ID:???
>792
>&error の部分で失敗してるっぽいですね...
&error でコケてるの?
コケてるのが &error なのか正規表現なのかの切り分けが先では?
809785:02/11/12 22:59 ID:???
>>806-807
つかまされたと言うかなんというか…
すみません本から得た付け焼き刃の知識なので効率とか可読性とかその他モロモロダメダメです( ´Д⊂
いまだにどういう記述をしたらのちのち楽できるかとか分かってないリアルに初心者なもので…
えと、スコープってまだよくわかんないんですけどスコープ≒個別の名前空間みたいな認識でいいのでしょうか(汗
あと、use strict;の方はmainの方でしてますです、そのあとにsetting.cgiの方を引っ張ってくる、とゆー流れです
えーと、それでourで宣言してもレキシカル(?)で局地的だよ、>>787さんの言ってたuse vars略で
引っ張ってくる、と言う手もあるけど名前空間が汚染される(意図しない変更が加えられる?)ので
よろしくない、パッケージにしちゃった方がよい、という意味だと思ってよいのでしょうか…

…がんがります
810nobodyさん:02/11/13 00:57 ID:???
スコープは変数の有効範囲だよーん。
811nobodyさん:02/11/13 09:43 ID:4S21F8gN
PerlでDBMを使って掲示板を試しに作ってみたのですが、
これってDBMによる恩恵はあるんでしょうか?
とりあえず勉強目的で作ってみたのですが。。。
812795:02/11/13 11:35 ID:???
>>809
まぁまぁ。慌てない慌てない。マターリと落ちついていきましょうや。
my変数のスコープは、宣言してあるところを囲んでいる一番内側のブロック、
サブルーチン、ファイル、eval(これは分からなくてもいい)です。
よって、setting.cgiというファイルの外は、「スコープの外」になりますので参照
不可能です。
グローバル変数のスコープはありません。どこからでも参照できて変更できる、
地獄への片道切符です。package Pak; と指定することによって、package宣言のス
コープ(これはmy変数と同じです)の範囲に書いてあるグローバル変数が、パッケージ
変数となります。だから、ファイルの先頭でpackage Pak; とやると、そのファイル
に書いてあるグローバル変数すべてが、Pakに属するパッケージ変数になります。

要するに、スコープとネームスペースは別ものです。
パッケージ変数はグローバル変数の一種ですが、レキシカル変数(my)はそれらとは別
ものです。
813795:02/11/13 11:48 ID:???
>>809
それで、our宣言した変数のスコープはmyと同じですから、settingの外では参照不可能
です。our => グローバルではありません。
main で use strict; しているということですから、settingから変数を読む仕様に
なっていると、それはグローバル変数なので(myだと読めませんよ)、警告が出ます。
use vars qw(var ...)は、use strict; した時にグローバル変数を使うぞ、と宣言する
ものですから、これをやっておけば警告は出ません。しかしながら、これをやると
いうことは、setting を main の先頭に書いているのと同じことになります。つまり
setting で使ったシンボル(変数とかの名前)だけ、mainのネームスペースが汚染され
ることになります。ネームスペース汚染の恐ろしさは、exitの件でお分かりでしょう。

以上の理由からパッケージ分けをおすすめしているわけです。
というか、納期が迫っているんでなければ、settingをクラス化、そこで宣言されて
いる変数をクラスのメンバにしてアクセスメソッドを実装してそれでアクセスする
ようにし、ついでにmainでそれらのデータをいじくっている部分をクラスに放り込む
といったことをするといいんじゃないかと思います。
814nobodyさん:02/11/13 11:49 ID:???
>>811
そんなのは主観の問題で、コメントのしようがないね。
815792:02/11/13 15:51 ID:???
>792 >798 >801 です

結局、別の項目の処理で出るエラーページを流用する事にして
(不正な入力の項目があります、平仮名にしてくださいと一文足して)
こうなりました
if ($in{'msg'}){
if ($in{'msg'} !~ /\x82[\x9F-\xF1]/){
&error1();}
}

レス下さった方々ありがとうございました。
816785:02/11/13 18:41 ID:???
>>810
ありがとうございます 本とかネットとかもそーゆーふーに簡潔に書いてもらいたいもんです(藁

>>812-813
毎度親切にありがとうございます( ´Д⊂ がんがります
スコープは>>810さんともあわせて分かったような気がします
今までもmyで宣言した変数が使える範囲はなんとなく分かってたんですけど、それがスコープだったのですね
んで、パッケージ内でグローバル変数っぽく振る舞ってるヤシがパッケージ変数、と…
スコープと名前空間は別物だということも多分わかりました

ourで宣言した変数の扱いのほうも自分なりに調べてみますた
tp://books-support.softbank.co.jp/pn/special04-1.html
↑のより、"宣言した時の名前空間に所属する変数だけど同じスコープ内だったら別の名前空間のトコでも明示しなくても扱えるよ"
て感じなのですかね?

また、名前空間の汚染の方のお教えも、大体分かった気がします
(´-`).。oO( いまだに名前空間の汚染、というののハッキリした意味が分かっていないのですけれども(藁 )
とりあえずスクリプト全体を見直しながら、設定ファイルの方をパッケージにして書き直してみようと思います
最後の4行は全然分かりませんでしたが( ´Д⊂ オブジェクト指向…? 勉強不足です…

ちなみに工房の道楽(不真面目にやってるわけでもないですけど)ですので納期とかはありません(藁
(´-`).。oO( 大人は大変なんだろうなぁ… 現在BlackBookのPerl&CGI言語リファレンス読んでます 今までに読んだ3冊とはレベルが…(トオイメ )
817nobodyさん:02/11/14 22:14 ID:???
年は関係無い、つーか慣れ
MFCガリガリ弄ってるリア厨も居る訳だから
分かった気になったもん勝ち
818785:02/11/14 23:15 ID:???
いや、だって納期とか言われたもんですから…(藁
工房だもーん、会社勤めなんかしてないもーん、と
つーか分かった"気になった"もん勝ちですか(藁

とりあえず本読み終わって>>813で御教授いただいたヤツの最後4行もほんのりとわかりますた
でもそういう管理の仕方にする利点がいまだにわかりません(藁
あとクラスとかの宣言がどうとか、とかも(藁
perlobjの日本語化されたヤツとか探して彷徨ったり、と( ´ー`)y-~~

(´-`).。oO( 正直もうごちゃごちゃしちゃって大変ですたい )
819nobodyさん:02/11/14 23:45 ID:WsA3gc/p
フリーの掲示板を使っている者ですが、
フリーの掲示板をカスタマイズするコトすらままならない者です。
バカなわたくしめに御教授お願いします。
※HTMLタグは分かります。
わたしがダウンロードした掲示板はタグ禁止タイプです。
しかし、メッセージ・フォーム($body)に「http://」で始まる文字列には<a href="">でリンクを
はりたいのですが、どうしたらよいのでしょうか。
すみませんがよろしくお願いします。
820nobodyさん:02/11/15 00:21 ID:???
$body =~ s|(http://[\w.%?/=&]+)|<a href="\1">\1</a>|;
821nobodyさん:02/11/15 00:34 ID:???
$body =~ s|(http://[-\w.%?/=&~]+)|<a href="$1">$1</a>|g;
822820:02/11/15 01:11 ID:???
>>821
補完サンクス
823nobodyさん:02/11/15 09:01 ID:Vx/BDeum
こんにちは。
今CGIの猛勉強中なのですが、分らない事があったので教えてください。
「-=」 マイナスイコール
この演算子は、どういう意味のものなのでしょうか?
そもそも演算子なのでしょうか;;
検索を書けても-=ではヒットせず、色々調べてみても情報が見当たりませんでした。
知ってる方、是非教えてください〜〜。
824nobodyさん:02/11/15 09:31 ID:???
>>823
$hoge -= 10;   $hoge = $hoge - 10;
$hoge += 10;   $hoge = $hoge + 10;
$hoge *= 10;   $hoge = $hoge * 10;
$hoge /= 10;   $hoge = $hoge / 10;
ほとんどのプログラム言語で使える
825 :02/11/15 09:39 ID:???
初心者はここへ行ってシェアウェアもタダでゲット!!
http://216.127.90.232/scripts.html
826nobodyさん:02/11/15 10:02 ID:???
>>824
なるほどっ、少し深読しすぎてしまったようです。
有難うございます!
827nobodyさん:02/11/15 10:16 ID:???
>>821
s/(s?https?:\/\/[-_.!~*'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)/<A HREF="$1">$1<\/A>/g;
が略解。
by perlメモ
828nobodyさん:02/11/15 11:03 ID:???
(´・ω・`)FORMのデコード処理の定石みたいなのあるデショウカ…
829nobodyさん:02/11/15 13:41 ID:???
(´・ω・`)
830nobodyさん:02/11/15 15:26 ID:???
(´・w・`)
831 ◆hMJAPH9PWA :02/11/15 15:47 ID:???
>>828
あるよ。CGI.pm
832nobodyさん:02/11/15 16:13 ID:???
(´・ω・`)CGI.pm……CGI.pm? ? ?
833nobodyさん:02/11/15 16:32 ID:???
>>832
荒らすんならrubyのスレでやってくださいよ。
834nobodyさん:02/11/15 17:14 ID:???
print <<"(´・ω・`)ショボーン";
829と830は僕じゃないデスヨ。そして書くのにルールがあるのをいま知りますた。
初心者コーナー、よしここだ! ズザー!! て感じで書いてしまいますた。反省。

1、Perlのおべんきょに一つ掲示板でも、と(`・ω・´)
2、とりあえずフォームから何か入力して表示させて見よう
3、
まだまだ右も左もわからないので、他所様のソースをじろじろ見ながらまずはデコード、と思ったわけですが。
人によって色々と違ったり何かしてみちゃったりしてよく分からなくて。
お約束事?みたいなのはあるようなのでつが…そこでーデコードと言えば、まあ普通こう書くよ。
みたいなのはあるのかなぁ、とか思った次第であります!(`・ω・´)

CGI.pmは調べて舐めたり触ったり眺めたりしますたが、よく分かりませんでした(´・ω・`)
(´・ω・`)ショボーン
835nobodyさん:02/11/15 17:20 ID:???
んじゃ
cgi-lib.pl
836nobodyさん:02/11/15 18:01 ID:???
tp://yaino.com/gzudoc2/0001/000004.html
837nobodyさん:02/11/15 18:55 ID:???
すみません、Perlで円周率を参照するにはどうすれば?
838(* ・ω・)萌えー:02/11/15 19:08 ID:???
839rubyist@カラアゲうまうま:02/11/15 20:30 ID:???
Math::Complexのpi使うだけでいいのに。
まあ、君たちのような低学歴どもは円周率3でいいんじゃない?
(大爆笑)
840rubyist@カラアゲうまうま:02/11/15 20:37 ID:???
この板の住人は専卒ばっか
841nobodyさん:02/11/15 21:04 ID:???
質問なのですが、現在時刻-60秒と、当該ファイルの最終更新日時を比較したいんですけど
if(time-60 >= (stat('比較するファイル.txt'))[9]){
とゆーやり方はやっぱ無理がありますか?
842nobodyさん:02/11/15 21:12 ID:Mv79oNNw
>>841
それで出来たんならいいんじゃねーの?
843nobodyさん:02/11/15 21:43 ID:???
質問させてください。

<input type=text name=$hoge>

というテキストボックスに数字を入力してもらい、
その数の回数、$hogeに対する処理を行いたいのです。
たとえば、$hogeをブラウザに出力するとして、

$cou=$form{"$hoge"};
for($i=0; $i<$cou+1; $i++)
{print "$hoge";}

で良いだろうと思いサンプルを作ってテストしてみましたが、
エラーこそ出ないものの{print "$hoge";}の処理を行ってくれません。
何か悪いところがあったらご指摘いただけますでしょうか。
よろしくお願いします。
844nobodyさん:02/11/15 21:48 ID:???
>>843
name属性に文字$を用いる必然性と、
use CGI;
my $query = CGI->new();
$query->param("hoge");
とやらない理由を補足せよ。
845843:02/11/15 22:40 ID:???
>>844
すみません、説明が足りませんでした。

<input type=text name=$hoge>

の$hogeですが、事前に外部ファイルから読み込んだデータを
任意の検索条件によって抽出した文字列が入るようになっています。
商品番号のようなものだと思っていただければ良いかと思います。

後者の方ですが、純粋に当方の勉強不足により
矢印演算子の用法に自信が無いというのでは駄目でしょうか。
844さんの挙げた例も、リファレンス片手に解読を試みましたが
今ひとつピンと来ておりません。

いかにも初心者の書いたループ文でお恥ずかしい限りですが
よろしくお願いします。
846nobodyさん:02/11/15 22:57 ID:???
$form{$hoge}の中身はちゃんと確認した?
847nobodyさん:02/11/15 23:45 ID:R8gc4u8S
申し遅れました。820, 821さんどうもありがとうございます。<(_ _)>
初心者にも入らないおヴァカなわたしに御教授下さいまして。
勇気出して投稿してヨカッタ。。。
848(* ・ω・)萌えー:02/11/16 00:46 ID:???
$cou = $form{'%24hoge'};
849nobodyさん:02/11/16 00:53 ID:???
(; ・ω・)オォ・・

フォームの name をURLデコードしてないなら、$hoge の $ は %24 でおくられてくるからネ。
もしや name=$hoge の $hoge がそのまま Perl のスカラー変数として扱われると勘違いしてたりして・・?(んなことないか ・ω・;)
850nobodyさん:02/11/16 12:12 ID:???
(; ・ω・)
851nobodyさん:02/11/16 12:59 ID:???
Jcode.pmの使い方が分かりません(;;´Д`)
なんで英語のドキュメントしか見つからないんだヽ(*`Д´)ノ
だれか使えるメソッドとか色々書いてあるページ知ってましたら教えてください…
852nobodyさん:02/11/16 13:02 ID:???
(;;´Д`)
853 :02/11/16 13:57 ID:???
statでランキングを更新するのとmkdirでランキングを更新するのはどちらが良いのでしょうか?
854nobodyさん:02/11/16 19:31 ID:y1C/hDJG
HTMLからFORMデータ(ユーザー名)をaction属性で指定してある
CGIファイルのに渡し、ユーザ名ごとに表示されるページ(構成は同じ)を
変えたいのですが、CGIスクリプトで開くデータファイルをユーザごとに用意
しなければならないと考えデータファイルのパスのところに各ユーザ名に対応
した変数を用意したのですが、CGIスクリプトが上手く実行できません。
どういった理由が考えられますか?
855nobodyさん:02/11/16 19:34 ID:LuG489Vk
>>851
グルって。

>>853
意味不明。説明が足りない。

>>854
君はどういう理由が考えられるか考えたのか?
856nobodyさん:02/11/16 19:38 ID:???
>854
君の脳に問題がある。<理由
もしくは君の言語能力に問題が。
857854:02/11/16 19:41 ID:y1C/hDJG
CGIプログラムで読みこむdatファイルのパスを固定されているパス名に
かえたらオッケーだったんですけど、変数とかパスの中に使うとダメなんすか?
チョー初心者ですいませんがお願いします。
858nobodyさん:02/11/16 20:01 ID:???
>>857
平気
859nobodyさん:02/11/16 20:18 ID:meodONVA
質問なのですが、エースの日記を設置したのですが、
「書き込む」をクリックすると

CGIWrap Error: Execution of this script not permitted

Execution of (diaryh/diaryh.cgi) is not permitted for the following reason:
Script is not executable. Issue 'chmod 755 filename'

というエラー表示がでてしまいます。
エースにはサポート掲示板がないので、大変困っています。
お手数ですが、どうぞよろしくお願いします。
860nobodyさん:02/11/16 20:28 ID:???
>>859
diaryh.cgiのパーミッションが間違っているだけじゃん?
Perlとは関係ないだろ。
861nobodyさん:02/11/16 20:44 ID:IpoPd8nu
CGIの勉強をしたいと思うのですがサーバーがないと厳しいですよね。
やっぱりお金をはらってレンタルサーバーかりないと練習にならない
のでしょうか?
862nobodyさん:02/11/16 20:56 ID:???
レンタルサーバで練習するのかよ…
863nobodyさん:02/11/16 21:01 ID:???
>>861
勉強するならまずローカル環境を用意しる!
ActivePerlとApacheをインスコすればオフラインでCGIテストできて(゚д゚)ウマー
レンタルサーバーで練習するのは他のユーザーの迷惑になるので止めよう。
864nobodyさん:02/11/16 21:53 ID:???
まずはエラーメッセージをきちんと読むことから始めたら?
それともずっとエラーメッセージをこのスレにコピペするの?
865デフォルトの名無しさん:02/11/16 22:30 ID:???
久しぶりにこのスレ来たら、CGIスレに間違って来ちゃったのかと…
866nobodyさん:02/11/16 22:36 ID:li3X+/+9
教えて君でスマソ

たとえば $file の中身が userid.dat という文字列で
ここから userid を得たいので

$file =~ s/\.dat$//;

とかやれば、userid を得られると思うが、元の文字列をファイル名としても使いたいので
いつも

$file =~ s/\.dat$//;
$id = $file;
$file .= ".dat";

とやったり

$file =~ /(.*)(\.dat$)/;
$id = $1;

のようにしていますが、これを1行で書きたい。
867nobodyさん:02/11/16 22:49 ID:???
>>866
($id = $file) =~ s/\.dat$//;
868nobodyさん:02/11/16 22:52 ID:li3X+/+9
>>867
うぉぉォォ、、鬱くしい。
さんくす。
869nobodyさん:02/11/17 00:04 ID:rKD6R3WV
2ちゃんねる風の掲示板はどの様に作ればいいのですか?
教えて下さい。あと、素材があったら貼っといて下さい。
870nobodyさん:02/11/17 00:15 ID:???
>>866
($id)= $file=~ /([^\.]+)/;
こうやったほうが速いべ?
871nobodyさん:02/11/17 00:58 ID:???
>>869
スレ違い。
つうかさ、「貼っといて下さい」って、人にモノを頼む態度か?
872rubyist@カラアゲうまうま:02/11/17 01:11 ID:???
厨房でも偉そうな顔ができる
それがPerlスレ
873nobodyさん:02/11/17 01:13 ID:???
>>869
2ちゃんねる風に作ればいいです。
874nobodyさん:02/11/17 01:37 ID:???
>>869
つりぼりかい。
875nobodyさん:02/11/17 01:41 ID:???
今ごろ必死でPerl覚る奴は時代の流れがよめない奴。
あほだね〜♪ あほだねえ〜♪ Perl厨がPHP本買ってる〜♪。
876843:02/11/17 01:46 ID:???
>>846,848,849
相談に乗って頂き、ありがとうございます。
確認ということですが、$hogeを生成する方のスクリプトは以前動作確認済みだった為、
以下のような今回追加したい部分だけを抽出した
テスト用のスクリプトを作成し、生成される$hogeには
適当な数値をあらかじめ代入してテストしていたのです。

&decode;
$hoge="001";
$cou=$form{"$hoge"};
print "Content-type: text/html\n\n";
print "<html><head>";
print "<META HTTP-EQUIV=Content-type CONTENT=text/html; charset=euc-jp>";
print "<title>test</title>";
print "<body>";
for($i=0; $i<$cou+1; $i++){print "$hoge";}
print "<form action=sample.cgi method=post>";
print "<input type=text size=4 name=$hoge><input type=submit value=送信>";
print "</form></body></html>";
sub decode{省略}

これを実行した結果、name=001の属性を持つ
テキストボックスを表示するところまでは上手く行きましたが、
送信ボタンを押した後に入力した数の分だけ表示される筈の『001』が表示されないのです。

そもそも、値を最初から代入してテストするという思考自体が間違っていたのでしょうか。
(849さんのご指摘の『勘違い』が正しいのかも・・・)
至らない初心者で本当に申し訳ありませんが、
何とぞもう少しご教授いただけませんか。よろしくお願いします。
877nobodyさん:02/11/17 02:09 ID:???
<input>valueはいいのか?
878nobodyさん:02/11/17 03:42 ID:???
>>876
それでできたけど・・?($i = 1ね)
879nobodyさん:02/11/17 04:24 ID:???
>>875
まさか君Perlを webで使うことしか考えてないのか?
ちょっとしたSystem管理みたいなことやらせるのに
PHPとかは向いてないでしょ (w
880nobodyさん:02/11/17 04:34 ID:???
ぷっPerl厨房必死だな。
Ruby >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Perl
881nobodyさん:02/11/17 05:35 ID:???
とりあえずRuby厨はこんなカキコするよりもCPAN全部移植汁!
882nobodyさん:02/11/17 08:12 ID:???
Perl向きの(・∀・)イイ!エディタありませんか?
PerlEditorとかなんか挙動不審なんですけど…
(・∀・)イイ!エディタに乗り換えたいよ…
883nobodyさん:02/11/17 12:27 ID:???
>>879
追いつめられた羊のような事を書かないで欲しいです。
PerlはWEB使うことが主流です。
そんな使い方をする人なんて極々わずかです。いや今は他の言語を使います。
あなたはWEBはPHPを使ってるんですか?Perlでしょ?
だったらもっとPerlを応援してください。
Perl最高! Perl最高! Perl最高! 
884nobodyさん:02/11/17 12:39 ID:???
>>882
素直にEmacsを使え。
885nobodyさん:02/11/17 12:46 ID:???
>>882
素直にHIDEMARUを使え。
886nobodyさん:02/11/17 14:00 ID:???
フォルツァ(゚д゚)HIDEMARUってアニメが昔あったな
887nobodyさん:02/11/17 16:44 ID:eZnGzPxh
たとえば同じフォルダ内にあるHTMLファイルの中に<SET1>〜<SET9>とか独自のタグを入れておいて、それを読み込んでそのタグの直後に文字を代入するにはどうしたらいいですか?
888nobodyさん:02/11/17 16:48 ID:???
>そんな使い方をする人なんて極々わずかです。いや今は他の言語を使います。
自分周辺の狭い世界だけで語るなボケ
889nobodyさん:02/11/17 16:51 ID:???
Perlhaksuoういv!
890nobodyさん:02/11/17 16:54 ID:???
>>887
whileで回せ
891887:02/11/17 16:55 ID:eZnGzPxh
こんなかんじ?
while (<DATA>){
if (/set|SET/){
print "$line : $_<br>";}
$line++;
}
892nobodyさん:02/11/17 17:12 ID:???
>>891
while (<DATA>){
if (/set|SET/){
print "$line : $_<br>";}
$line++;
print;
}
893887:02/11/17 17:12 ID:eZnGzPxh
追記。
さっきのHTMLの中に埋め込むタグは<SET1></SET1>と対にさせて、その中身を取り出すってかんじです
894nobodyさん:02/11/17 17:26 ID:???
>タグの直後に文字を代入するには
>中身を取り出す

いったいどっちがやりたいの?
895887:02/11/17 17:36 ID:eZnGzPxh
>>894
スマソ
まず、HTML内の<SET1>この文字を取り込む</SET1>から対象文字「この文字を取り込む」をを読み込む。
その後、「この文字を読み込む」を消し、別の文字列を代入
こんなかんじです。どうぞおながいします
896nobodyさん:02/11/17 21:00 ID:JxVm/eIS
キーボードから配列$hoge[$i]にEOFが代入された時にループを抜けたいのですが、
文字列の最後に改行コードが入ってる為か抜けられません。
chopで改行コードを取り除かずにEOF(改行)のまま認識させるためにはどうしたら良いでしょうか?
897nobodyさん:02/11/17 22:33 ID:???
>>851
頭に書いてあるではないか。
print Jcode->new($str)->h2z->tr($from, $to)->utf8;
これが理解できないのなら、おそらく一般的なモジュールの使い方が理解できていない
ので、少し戻ることをお勧めする。
また、英語のマニュアルが読めないと、プログラミングにいちじるしい支障をきたすこ
とが多いので、あなたが職業プログラマなら即刻退職を、趣味のプログラマなら英語の
マニュアルに慣れることを勧告する。

>>895
HTML::Templateを使ってみることをお勧めする。

>>896
@hoge = ();
$i = 0;
while ($hoge[$i] = <STDIN>) {
print "$hoge[$i]", "\n";
$i++;
}

と書いてみたらC-dで抜けられたが、どういうコードを想定しているのか教えて欲しい。
それから、改行を削るのは通常chompで行なう。chopは削った残りを返り値として欲しい
場合などに使う。
898nobodyさん:02/11/17 22:52 ID:???
>>897
HTML::Templateじゃ、895の要件満たしてねーだろ。
偉そうに一般論ぶってるだけのperl厨シネヨ。
899test ◆wSaCDPDEl2 :02/11/17 23:08 ID:???
YYBBSにトリップ昨日をつけたいのですが・・・
挫折。
わかる方宜しくおねがいします
900nobodyさん:02/11/17 23:11 ID:???
>>898
HTMLでは、独自に定義したタグを使うことはできない。
そのため、「完成品」からは、独自タグが消えていなければならない。
HTML::Templateでは、独自タグを残せないので>>895の用件を満たせないと指摘したい
のだと思われるが、もしそうなら用件がおかしい。
しかしながら、>>887を見ると独自タグ自体に意味はないものと考えられるため、上の
ような回答を行った。
901nobodyさん:02/11/17 23:16 ID:???
>899
どんな風に挑戦したかソース出してみ。
俺は意地悪だからアドバイスをする気はあっても、答えをそのまま載せる気はなくてね。
902nobodyさん:02/11/17 23:16 ID:???
>>899
とりあえずこちらのスレへどうぞ

【 スクリプト改造工房 PART 5 】
http://pc.2ch.net/test/read.cgi/php/1028193595/
903883:02/11/17 23:56 ID:???
>>884
Lisp分からないでつ
Meadowは入れたけど

>>884
フサギコはお金無いから
904test ◆wSaCDPDEl2 :02/11/18 00:05 ID:???
>>902
Thank You
905896:02/11/18 00:12 ID:JyAtIJIy
>>897
現在、Perlでキーボードから一行ずつ文字列を入力し、
その文字列を保存するスクリプトを組んでいるのですが、
文字列入力をするループから抜ける終了判定として文字列"EOF"が入力された時にしたいんです。
しかし、<STDIN>でキーボードから"EOF"と入力した場合、最後に改行コードが入ってしまって

while ($hoge[$i] ne "EOF")

だとEOF(改行)とEOFが一致しないんです。
改行コードを取り除けば可能ですが、それだと保存した際に一行になってしまいますよね?(多分
何か良い方法はありますでしょうか??
906nobodyさん:02/11/18 00:29 ID:???
>>905
EOF(改行)と比較したらダメなのか?
907896:02/11/18 00:34 ID:JyAtIJIy
>>906
そのやりかたがわからないんです・・・
908nobodyさん:02/11/18 00:37 ID:Lol6CcQn
ぶっちゃけPHPってなに?
PHP研究所?
909nobodyさん:02/11/18 00:44 ID:???
>>905
これでどう?

while ($hoge[$i] !~ /^EOF$/)
910nobodyさん:02/11/18 00:47 ID:???
>>907
結局なにがしたいの? 結局、キーボードから1行取得したいの?
911rubyist@カラアゲうまうま:02/11/18 00:47 ID:???
書き出すときに改行付けとくだけでいいだろヴォケ
912nobodyさん:02/11/18 00:57 ID:???
open(OUT, ">savefile");
print OUT substr(scalar(<STDIN>), 0, -1);
close(OUT);
913896:02/11/18 01:12 ID:JyAtIJIy
>>909
ぐぁ!?出来ました。ループ抜けられました。感動。
これは^以降から$の間の文字が一致すれば終了って意味かな。正規表現?
力不足でどのような処理か理解出来てませんけど、ありがとうございました。

>>910
キーボードから文字列EOFが入力されたときに、
EOFの後ろについてしまう改行コードを取り除くことなくEOFと比較したかったんです。

>>911
改行コードを取り除い、更に後からまた付け足すんですか?
まぁその方法もまだわからないんですが・・・。
914nobodyさん:02/11/18 14:52 ID:???
スクリプトの中で配列って使いすぎるといけないんですか?
でも、例えば格納データとかが多いとどうしても
配列を多く使わないといけない場合とかありますよね。
配列が多すぎて動かないとかいう事あるんですか?
915nobodyさん:02/11/18 14:56 ID:???
>>914
やってみりゃいいじゃん。やってみてエラーが出てから質問すること。
916nobodyさん:02/11/18 14:57 ID:???
>915
「ただし、試すならローカルで」も付け加えといてね。
917てすとさん:02/11/18 15:22 ID:I0IdwfDh
htmlでフォームを作成し、<input type="text" name="child">をaction="cgi-bin/***.cgi" method="post"で送ったのですが、
肝心のCGIで$FORM{'child'}を取り出そうとしても中身が空っぽになってしまいます。
どうしてでしょうか?
サーバーエラーが出るわけでもなく、フォームの中身が全て空なこと以外は正常動作します。
また、method="post"を削るとちゃんとデータが送信されていることがURLに出てきます。
フォームに書き込んだ情報をCGIで表示するだけなのに、てこずってしまっています…。
918nobodyさん:02/11/18 15:37 ID:???
フォーム×デコード×連想配列
919てすとさん:02/11/18 15:57 ID:I0IdwfDh
>>918
デコード忘れてた、鬱氏。
4時間くらいそれで詰まってた、マジで死にたい…
920nobodyさん:02/11/18 16:33 ID:???
>>919
んじゃ死ねば?
921nobodyさん:02/11/18 19:09 ID:19d2puZr
今、掲示板の観覧ログファイルを週別で保存しようと思ってます
ログ保存部分までは出来たのですが
週別に新規ファイルを作成して保存うまくいきません

具体的には 月〜日曜 を一週間として
翌週には新しいログファイルを作成するというのを考えてます

しかし
・新しい週になったかどうか
という判定がうまくいきません

何か良い方法は無いでしょうか?
922nobodyさん:02/11/18 19:25 ID:???
月曜日の最初にアクセスされたとき、とか。
923nobodyさん:02/11/18 19:41 ID:19d2puZr
その方法でやってたのですが、月曜日にアクセスが無いと、
翌週の月曜日まで新規ファイルにならないのです・・・
924nobodyさん:02/11/18 19:45 ID:ODy6L3pp
データベース使った時もパスワードは暗号化した方がいいのでしょうか。
925nobodyさん:02/11/18 20:03 ID:???
>923
毎起動ごとにログの保存チェックをしろ。
926nobodyさん:02/11/18 20:54 ID:19d2puZr
>>925
そのアルゴリズムがうまくいかなくて悩んでます

927nobodyさん:02/11/18 21:03 ID:???
>>922
localtime(time)を使えば日付とか曜日が配列で返ってくるはず
あとは自分で勉強しや
928rubyist@カラアゲうまうま:02/11/18 21:24 ID:???
/ヽァ/ヽァ
929nobodyさん:02/11/18 22:48 ID:???
ややマルチかな……。

http://pc.2ch.net/test/read.cgi/unix/1000303370/697
を書き込んだものです。
急いで、数を数える必要があるので、こっちでも聞きます。

awkで書こうと思ったのですが、perlでもできそうなので、
質問しますた。

スクリプト書いてくだされば、助かります。我がまますみません。

930nobodyさん:02/11/18 22:55 ID:???
すみません、ちょと分からない事が会ったので教えてください
if文とかで、返り値を否定したい時はどうすればよいのでしょうか?
if(!(-d "存在するディレクトリ")){〜〜〜} とか
if(-d !"存在するディレクトリ"){〜〜〜} とかやってみたのですがダメでした
今現在、
unless(略){
  if(略){〜〜}
}
ってカンジで書いてるのですが、なんとか一回ですませたいので…
if(!略 and 略){ ←みたくしたいのです…
どうか御教授ください
931nobodyさん:02/11/18 23:04 ID:???
>>930
if (!(-d "存在するディレクトリ") and 略) {

!(-d "存在するディレクトリ") もしくは not -d "存在するディレクトリ" で「存在しない」になるはずだけど。
932nobodyさん:02/11/18 23:09 ID:???
つか自分で答え書いてるジャン
933デフォルトの名無しさん:02/11/18 23:10 ID:???
>>930
>if(!(-d "存在するディレクトリ")){〜〜〜}
>if(-d !"存在するディレクトリ"){〜〜〜}
両方OKよ。
>unless(略){
>  if(略){〜〜}
>}
略の部分が同じなら常に真。
>if(!略 and 略){
これもそう。

934デフォルトの名無しさん:02/11/18 23:11 ID:???
間違った。常に偽だ。
935nobodyさん:02/11/18 23:29 ID:???
>>929
目視で十分じゃない? 3つしかないよ?
936843:02/11/18 23:31 ID:???
>>877,878
ありがとうございます。
まだこちらでは依然として動いてくれないのですが、
考え方自体は間違っていないのですね。
$i=1のところを$i=0にしてしまったようなケアレスミスが
こちらに残っているのだと思います。

もう少し自分で頑張ってみて、どうしてもできないようでしたら
また相談させていただきます。本当にありがとうございました。
937935 :02/11/18 23:37 ID:???
全国です!!!

さらに「自然観察会」ってのも数えたいので、スクリプトの登場まってます!!
938929:02/11/18 23:38 ID:???
>>935
の間違いでした
939nobodyさん:02/11/18 23:41 ID:???
そんな勇者が現れると思う?(´・ω・`)
940nobodyさん:02/11/18 23:45 ID:???
>>929
で、あのへぼいスクリプトでCSVに変換できたの?
941929:02/11/18 23:59 ID:???
csv変換はバチーリでした。

スクリプトの登場まってます!!
942930:02/11/19 00:02 ID:???
>>931
あれれー(;;´Д`) とりあえずnotが見た目わかりやすいし、それでできたのでそれで行きます
ありがとうございますた

>>932
自分で最初やってみた時はだめだったんですよぅ

>>933
もっかい実験してみたところif(!(〜略の方はおっけだったみたいです
-d !"存在する(略"はやっぱりだめぽでした
if(!"もうだめぽ" eq ""){print "ほんとにだめじゃん";}
とかやってみると"ほんとにだめじゃん"と出力されたり…
なんで空文字列?
ちなみに略部分は同じではないです、ありがとうございました

>>939
現れないに一票
943929:02/11/19 00:04 ID:???
aichi,akita,aomori,chiba,ehime,fukui,gihu,gunma,hiroshima,hokkaido,hukuoka,hukushima,
hyogo,ibaraki,ishikawa,iwate,kagawa,kagoshima,kanagawa,kouchi,kumamoto,kyoto,
mie,miyagi,miyazaki,nagano,nagasaki,nara,niigata,okayama,okinawa,osaka,saga,saitama,
shiga,shimane,shizuoka,tochigi,tokushima,tokyo,tottori,toyama,wakayama,yamagata,
yamaguchi,yamanashi

全国都道府県を落とす時のwget式で利用してください。
944929:02/11/19 00:07 ID:???
高知県はhtml作ったやつがアホで、「県別」とかいうフィールドがありますので注意してください。
945nobodyさん:02/11/19 00:12 ID:???
人に頼るなヴォケが 自分でやれ むしろ金払ってやってもらうなりしろ
946nobodyさん:02/11/19 00:24 ID:???
>>929
CSVデータに , がふくまれてなさそうなので簡易に以下のようなものでできるんじゃ?

$key= 'ビオトープ';
open(IN, "hokkaido.csv");
while (<IN>){
    $n= $1=~ tr/,// if !$n && /^(.*)[^,]*\Q$key\E/o;
    print if /^(?:[^,]*,){$n}●/;
}
close(IN);
947nobodyさん:02/11/19 00:33 ID:???
>>929
perl -i.bak -pe 's/(\n|<br>)//sgi'でもやっておいた方がよさげ。
少なくとも、北海道のを見る限り。
それからは、高知以外のCSVくっつけて、
perl -F, -nae '$a++if$F[4]eq q|●|;END{print$a}'
てな感じでどうかな。
4は自然観察会、9がビオトープ。
その後、高知の数字を数えて足す。
泥臭いけどね。
948947:02/11/19 00:34 ID:???
perl -i.bak -pe 's/(\n|<br>)//sgi' *.html
↑これをやったあとでCSVにするってこと
949947:02/11/19 01:08 ID:???
var array = new Array("aichi", ...);
var fs = new ActiveXObject("Scripting.FileSystemObject");
var xl = new ActiveXObject("Excel.Application");
xl.DisplayAlerts = false;
for (var i = 0; i < array.length; ++i) {
var filename = fs.GetAbsolutePathName(array[i]+".html");
var savefile = fs.GetAbsolutePathName(array[i]+".csv");
var wbook = xl.Workbooks.Open(filename);
wbook.SaveAs(savefile, 6);
wbook.Close();
}
xl.Quit();

こうやってもCSV変換はできるな。(Excel2000)
つーか自分が勉強になった。
950nobodyさん:02/11/19 01:30 ID:???
>>933
>if(-d !"存在するディレクトリ"){〜〜〜}
これがOK? マジで?

>>942
>if(!"もうだめぽ" eq ""){print "ほんとにだめじゃん";}
>とかやってみると"ほんとにだめじゃん"と出力されたり…
!"もうだめぽ" … 偽
"" … 空文字列は偽
なので全然不思議じゃない。
951930:02/11/19 01:36 ID:???
>>950
えと、なんか分かるような分からないようななんですけど、
eqとかって真偽を比較するのですか? 文字列を比較した結果、値を返すものだと思ってたのですが…
952nobodyさん:02/11/19 02:21 ID:???
(;´Д`)アァ・・
953nobodyさん:02/11/19 04:52 ID:???
if(!("もうだめぽ" eq "")){print "ほんとにだめじゃん";}
unless("もうだめぽ" eq ""){print "ほんとにだめじゃん";}
954933:02/11/19 08:32 ID:???
>>950
>>if(-d !"存在するディレクトリ"){〜〜〜}
>これがOK? マジで?
ごみん、嘘言った。
955nobodyさん:02/11/19 11:39 ID:???
このスレは駄目だ。ム板に帰るとしよう。
956nobodyさん:02/11/19 15:11 ID:???
>>955
この野郎、捨てぜりふは余計だ。とっとと消えろ!!
二度と来るな!!!!
957てすと:02/11/19 18:00 ID:a4uQLCBL
簡単な質問ですみません…
外部Webサーバーのデータを読込みたいのですが、

$data = "http://......txt"

ではもちろんダメですよね…
どうすれば取得する事がでるんでしょうか?
もしわかる方がおりましたらお願いしますm(_ _;)m
958nobodyさん:02/11/19 18:02 ID:???
>>957
ソケット使わなきゃ、そりゃ無理だろ。
959nobodyさん:02/11/19 18:37 ID:???
>>957
wgetインストールすればよい
960nobodyさん:02/11/19 20:45 ID:???
961nobodyさん:02/11/19 22:11 ID:???
>>958-959
しかも>>957は ; を忘れている
962nobodyさん:02/11/19 23:17 ID:???
あらあらまぁまぁ
963nobodyさん:02/11/19 23:20 ID:7H8zCiDS
こんにちは
ショッピングカートで注文確認メールを出しているのですが、
違う注文確認メールが届きました。
たとえば注文番号100番の人に100番の確認メールが届き(正常)
数時間後その人に98番の確認メールも届いた(異常)ってことなんです。

注文の終了時に行われるスクリプトの概要は

ユーザーがフォームに入力したメールアドレスを取得(cgi-lib.pl)
自分宛に注文メール送信
ユーザー宛に注文確認メール送信
ログに注文データ保存
送信しましたメッセージ表示
exit;

という具合なのですが、このプロセスで前の注文データが流れるって事は
あり得るのでしょうか?

ちなみにメール送信はそのままsendmailに渡しています。

よろしくお願いいたします。



964nobodyさん:02/11/20 00:20 ID:???
>>963
ログとってないの?
965963:02/11/20 00:56 ID:???
ログ取ってありますが、異常なしです。
注文通りのデータのならびで前後したりはしてません。
1年以上同じ方法で今回初めてなりました。


966nobodyさん:02/11/20 11:54 ID:???
ラウンジみたいにみんながどっと書き込んで誰が*99取るか
分からないという状況でないと面白くも何ともない
967nobodyさん:02/11/20 12:22 ID:???
勇気を出して、アゲぽ
968nobodyさん:02/11/20 15:41 ID:???
質問です。

open OUT, "hoge.txt";
print OUT "$hogehoge";
print "$hogehoge";
close OUT;

という何の変哲もない文が、設置場所によっては「画面に出力できるのに
ファイルに出力できない」という事態に悩まされています。このような状況が
発生するのは、この文が実行位置の後ろの方にあるときです。全く同じ物を
実行位置の先頭の方に置くと画面にもファイルにも出力できます。

この問題の対処法を教えて下さい。
969nobodyさん:02/11/20 15:45 ID:???
>>968
読み込み専用で開いてよくファイルに出力できるね。
Content-type の位置じゃないの?
後ろの方とか言われても第三者にはさっぱりですが。
970nobodyさん:02/11/20 16:00 ID:???
>969
失敗、つまらんミスしてた…

open OUT,">>hoge.txt";

と読み替えて下さい。
で、「後ろの方」ってのは「1つのファイルを読み込んで、あれこれ操作をして、
最後に書き出す」という処理の後ろ、つまり最後の「書き出す」部分です。
これを「あれこれ操作をする」前に置くときちんと動作するのです。

あと、これはローカル環境で起きている問題なので、Content-typeは
たぶん関係ないと思います。

971nobodyさん:02/11/20 16:08 ID:???
ファイルポインタかな。
seek FP, 0, 0;
で先頭に戻さないと。
972nobodyさん:02/11/20 16:11 ID:???
>>968
その部分だけではなんとも言えんよ
973nobodyさん:02/11/20 16:24 ID:???
>971
ファイルポインタを先頭に戻すと追記の意味がなくなってしまうんじゃないでしょうか…
と思いつつ試してみましたが、無理でした。

>972
それじゃあ、ちょっと長くなりますが。yomikomi.txtを処理して結果をhoge.txtに書き出します。

open FILE, "yomikomi.txt";
@line = <FILE>;
close FILE;
#1
foreach(@line){
  処理あれこれ
}
#2

#1の場所に
open OUT, ">>hoge.txt";
print OUT "$hogehoge";
print "$hogehoge";
close OUT;
を入れると正常に動作しますが、#2に入れると動作しません(画面には出力される)。
これでご理解頂けますか?
974nobodyさん:02/11/20 16:32 ID:???
$hogehoge は ドコ(゚Д゚≡゚Д゚)ドコ
975nobodyさん:02/11/20 16:38 ID:???
>974
「ちゃんと意味のある変数」として読み変えていただければ。
わかりにくければ$line[0]とでも。実際に$hogehogeを$line[0]に
変えても症状は変わりませんし。
976nobodyさん:02/11/20 16:45 ID:???
「処理あれこれ」で$hogehogeだか$line[0]だかが消されている。
「画面には出力される」てのは、foreachの中でprintかなんか
入れちゃってる。

に1票
977nobodyさん:02/11/20 16:52 ID:???
2の後で print $hogehoge するとどうなるの?
978nobodyさん:02/11/20 16:57 ID:???
とりあえず処理あれこれが原因なのでよーく検証してみれ

関係ないけど、
@line = <FILE>;
foreach(@line){ 〜 }

while (<FILE>) { 〜 }
の方がよさげ。
979nobodyさん:02/11/20 17:01 ID:???
>976
画面への出力に使うprintは問題の文中にしかありません。心配になって、
問題の文の前後にprint "---\n";をつけて確かめたから確実です。

>977
(前略)
close OUT;
print $hogehoge;
ということでしょうか。正常に$hogehogeの内容が出力されますし、
closeの前にあったprint "$hogehoge";と同じ結果になります。
980nobodyさん:02/11/20 17:03 ID:???
>978
自分でも調べているのですが、なかなか…
foreachはwhileに変えておきます。有り難うございました。
981nobodyさん:02/11/20 17:06 ID:???
$hogehogeをどこでどう定義してるか。
foreachの中で$hogehogeに手を加えてるのかどうか。
人に物を聞くならこのくらい書け。
982nobodyさん:02/11/20 17:35 ID:???
>981
これは失礼。しかしながら、最初に読み込んだきり何も手を付けていない
$line[0]を$hogehogeと置き換えても同じ現象が発生しているため、定義云々は
関係ないと思います。
983nobodyさん:02/11/20 17:43 ID:???
>>982
$line[0]って何だかしってんのか。
yomikomi.txtの1行目だぞ。おまえはそれを処理して
hoge.txtに書き込もうとしてるって書いてるよな。
なぜ、「読み込んだきり何も手を付けていない」なんて
いえるんだよ。
984nobodyさん:02/11/20 17:48 ID:???
それとなー、
>>980
>foreachはwhileに変えておきます。
こんなこと言ってるから、相当なとんまかと思われる。
985nobodyさん:02/11/20 17:49 ID:???
>983
特定の文字列が出るまでは何もしないで次の行に移るようになっています。
そして1行目には絶対その文字列が出てきません。従って、$line[0]には
手を加えることはありません。
986nobodyさん:02/11/20 17:50 ID:???
スクリプト全部晒したら?
987nobodyさん:02/11/20 18:29 ID:???
openに失敗してるとか。

open OUT, ">> hoge.txt" or die $!;
これでどうなる?
988nobodyさん:02/11/20 21:38 ID:???
遅くなって申し訳ありません。いろいろ試そうと思ったのですが、
ソースがスパゲッティになってたので、いくつかのサブルーチンを
別ファイルに移し、requireで呼べるようにしたんですが…

そしたら何故か解決しました。何で?(´Д`;

>986
700行あるので…守秘義務ってのもありますし(うるさいんですよ…)。

>987
試してみたところ、>973の#1では問題なくopenしていて、ファイルが
生成されてちゃんと書き込みも出来ているのですが、#2では
「No such file or directory …」と言われました(でも#1でファイルは
出来てます)。
989nobodyさん:02/11/20 21:43 ID:???
書き損ねです。

×ソースがスパゲッティになってたので、いくつかの…
○ソースがスパゲッティになってたので、多少なりとも見やすくするためにいくつかの…

で、「No such file or directory…」と言われたのは
サブルーチンを別ファイルに移す前の話です。
原因はわかりませんでしたが、とりあえず解決出来ました。
ご協力ありがとうございました。
990nobodyさん:02/11/20 21:46 ID:???
ぶっきらぼうな日本語でもいいですから、
946を和訳してください。

せっかく書いていただいたのに、
実行してもなーんにも起こらず、
修正しようとも意味が判らず
さっぱりです。

とてーも困っています。

991nobodyさん:02/11/20 21:50 ID:2IcSyXEF
外部データファイルを読み込む時は、
open IN,"datafile.dat";
while(<IN>){ 〜〜中略〜〜}
close IN;
これで読み込めますよね。

これと同じ要領で、ファイルではなくWEBページを読み込みたいのですが可能でしょうか?
例えば、yahooのトップページのソースを読み込んでdataファイルに出力する・・
といった類いのことがしたいのです。

ヒントだけでも構いませんのでよろしくお願いします。
992nobodyさん:02/11/20 21:55 ID:???
perl -F, -ane 'print @F[2];' kyoto.csv
とすると表示されますが、
perl -F, -ane 'print @F[4];' kyoto.html.csv
……
perl -F, -ane 'print @F[10];' kyoto.html.csv
は表示されません。perlってコマンドラインの●を認識するのでしょうか?
993nobodyさん:02/11/20 21:57 ID:???
1000!
994nobodyさん:02/11/20 21:57 ID:???
1000
995nobodyさん:02/11/20 21:58 ID:???

996nobodyさん:02/11/20 21:59 ID:???
1000kamone
997nobodyさん:02/11/20 21:58 ID:???
1000です
998nobodyさん:02/11/20 22:00 ID:???
999nobodyさん:02/11/20 21:59 ID:???
ん?
1000nobodyさん:02/11/20 22:00 ID:2IcSyXEF
1000だよ。
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。