トップページ⇒php
1001コメント324KB

【Perl】初心者コーナー Part17

レス数が1000を超えています。これ以上書き込みはできません。
0001 ◆Go4ZKngPGE 02/10/14 17:24ID:???
いらっしゃーい、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あたりを見よう。
0002nobodyさん02/10/14 17:25ID:???
2
0003 ◆Go4ZKngPGE 02/10/14 17:29ID:???
[過去ログ]
Part1 http://tako.2ch.net/test/read.cgi?bbs=perl&key=957208980 参照不能
 DAT: http://tako.2ch.net/perl/dat/957208980.dat
Part2 http://tako.2ch.net/test/read.cgi?bbs=perl&key=971817087 参照不能
 DAT: http://tako.2ch.net/perl/dat/971817087.dat
Part3 http://tako.2ch.net/test/read.cgi?bbs=perl&key=979894521 参照不能
 DAT: http://tako.2ch.net/perl/dat/979894521.dat
Part4 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

コピペしただけなんで誰かフォローおながいすます。
0004前の97302/10/14 17:39ID:???
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 バイトになってしまいます。

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

>>1

   お い テ メ エ

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

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

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

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

      人
    (__)
  \(__)/ ウソコー!
   ( ´A` )
0029nobodyさん02/10/15 01:47ID:???
http://pc.2ch.net/test/read.cgi/php/1030151932/422
0030nobodyさん02/10/15 02:01ID:???
マルチポストはレスしてくれた人の善意を踏みにじりかねない
0031nobodyさん02/10/15 02:08ID:???
>>30
失礼いたしやした。
むこうで一本化します。
0032nobodyさん02/10/15 02:39ID:nVvEr8H/
2ちゃんねるのスクリプトに極めて近い掲示板を探していますが、
ありませんでしょうか?
0033nobodyさん02/10/15 02:40ID:???
>>32
自作すれば? 処理の流れは察しがつくから簡単だよ
0034nobodyさん02/10/15 03:02ID:???
>>16 貼り付けて!
0035nobodyさん02/10/15 03:41ID:???
>>32
いっぱいあるよ。
【スレッド】2ch型掲示板 その6【フロート型】
http://pc.2ch.net/test/read.cgi/php/1028384308/
0036nobodyさん02/10/15 04:20ID:???
>>34
自分で探そうや
そんなに前でもなかったと思うし
0037nobodyさん02/10/15 13:43ID: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;
0038nobodyさん02/10/15 14:20ID:???
satndard ⇒ standard
0039nobodyさん02/10/15 14:22ID:???
>>37 =~ s/satndard/standard/;
ネタですか?
0040nobodyさん02/10/15 14:42ID:0TY8yVdT
>>38-39
ありがとうございます。解決しました。
すみやかに回線切って逝ってまいります。
0041nobodyさん02/10/15 15:07ID:1tgEM8TW
日本語をひらがなで区切って、出現単語をカウントするものってご存じでしょうか?
自分で作れっていわれそうですが、先人のプログラムがあれば是非利用してみたいです。
英単語をカウントするものはごろごろ落ちてるんですが、日本語のものってちょっと見つからなくて困っています。

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

一番 2
三番 1
四番 1

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

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

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

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

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

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

また、強化書ですが、 oreilly の perl dbi が
がいいですか
それともascii のperl DBIの本がいいですか?
0049nobodyさん02/10/15 20:18ID:???
>>48
http://pc.2ch.net/test/read.cgi/php/1030209573/
0050nobodyさん02/10/15 20:34ID:???
前スレの続きになりますけど、
push@log,$_ while<LOG>;
と
@log=<LOG>;
とで、スピード的、メモリ的な違いは出ませんかね。
調べられないもので。
0051nobodyさん02/10/15 20:38ID:???
>>50
メモリは結局同じこと、スピードはベンチマークとらないと・・・
0052nobodyさん02/10/15 20:43ID:???
>>50
<LOG>から1行づつ読んで処理するとメモリ的に優しくなる。
00535102/10/15 20:46ID:???
>>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)
00545002/10/15 20:51ID:???
あらま。<スピードは大差ない
じゃぁメモリに優しそうな前者を使うのがベターってことですかね。
00555102/10/15 20:53ID:???
>>54
前者が優しいということではないです。>>52さんの言う優しいとは以下のように
すること。

while (<LOG>){
処理
}
00565002/10/15 20:59ID:???
>>55
じゃ配列に格納する2つの例は結局違いはないとなりますな。
調べてくれてありがとございますた
0057nobodyさん02/10/15 23:01ID:???
>>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)
00585002/10/15 23:56ID:???
>>57
おおう。省略形のwhileが最速ってことですかこれは。
省略形の方が速いんすね。
そして @log = <F> が一番遅いとは思いませなんだ。

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

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

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

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

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

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

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

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

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

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);$_の加工}
#とでもした方が全然速いし当然メモリはほとんど使わないし。
0078nobodyさん02/10/16 13:44ID:???
>76
ありがとうございます。
とりあえず今は数字しか必要ないので今のやり方でやります。
00797302/10/16 14:41ID:???
だからでかいファイルを一気にメモリに読み込むようなことはしないから、
それを前提にしたベンチやってても、その結果を考慮に入れる香具師は
いないってこと。
0080nobodyさん02/10/16 14:50ID:???
>>79
逆じゃないの?
一気にメモリに読み込む仕様にした時にでかいファイルを読まれたら
どうなるかは視野に入れて作った方が良いというか。
製作者の意図通りに使ってくれない人なんて沢山いるだろうし。
0081nobodyさん02/10/16 15:12ID:???
>>80
だからね、
「一気にメモリに読み込む仕様にした時にでかいファイルを読まれたら
どうなるかは視野に入れ」たら、普通そういう仕様にしないでしょ。
検討はしましたが、実際には使いませんね、でいいじゃん。

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

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

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

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

\Gってなんですか?
あとテキストファイルの読み込みは<FILEHANDLE>が一般的と明言されてますけど
例にあるreadの方が本当に速いんですか?
0090nobodyさん02/10/16 20:56ID:???
>>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)

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



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

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

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

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

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

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

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

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

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

>>95
わざわざ説明ありがとうございますた。
今試してみたのですが、記事削除時の比較がなかなか上手く
できないです。もう少し頑張ってみます。ペコリ
0104nobodyさん02/10/17 21:26ID:???
>>103
漏れないようにログは拡張子だけのファイルにしてしまいませう
0105nobodyさん02/10/17 23:44ID:???
漏れの姦違いですね・・・
吊るされに逝ってきます
0106nobodyさん02/10/18 01:16ID: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() を含むスクリプトは使えないってことですか?
何か解決策はありませんでしょうか?
0107nobodyさん02/10/18 01:32ID:???
eval{ flock(); }
010810702/10/18 01:50ID:???
間違った

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

$pai   円周率。


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

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

0170nobodyさん02/10/21 16:34ID:???
無名配列、無名ハッシュを使うときですね。
0171nobodyさん02/10/21 16:47ID:???
KENTのこの掲示板なんですけど、http://www.kent-web.com/bbs/aska.html
そのまま何も変えないで使うとデータファイルはaska.logです。
で、このlogファイルは投稿内容や暗号化された削除キーなどが記録されています。
そのlogファイルをブラウザからアクセスすると容易に閲覧できます。
投稿内容だけならともかく、投稿者のホスト名や暗号化された削除キーが載っています。
これはセキュリティ的に危険だと思うんですがこんなんでいいんでしょうか。
管理者以外にlogファイルを見られなくする方法は.cgiファイルにすれば見れないと
前に知りましたがこの方法が一番簡単なんでしょうか。
0172nobodyさん02/10/21 16:57ID:???
>>174
簡単だわな。確かに。
0173nobodyさん02/10/21 17:23ID: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>
というのを出力してみたのですが、
ここからパスワードを取得して、比べる→その結果によって出力っていうのがどうやったら良いのかわかりません。
どなかたご教授お願いします。
0174 ◆4/qmJJukCQ 02/10/21 17:27ID:???
・パスワードの取得はPOSTだから標準入力を解析する。
 分からなければCGI.pmとかcgi-lib.plでも使え。
・分岐は if を使う。
・出力は print を使う。
017517302/10/21 17:30ID:nGDYlndq
CGI.pmとかcgi-lib.plですか。
やってみます。
ありがとうございました。
0176nobodyさん02/10/21 17:47ID:???
>>172
おいレス番、違ってるだ炉。
誰に向かって言ってるんだ、はっきりしろ。
それによっては、どやす。
0177 ◆4/qmJJukCQ 02/10/21 17:49ID:???
>>176 174は実際簡単じゃないか(藁
0178nobodyさん02/10/21 17:57ID:???
>>177
納得。>>172はアフォ天才か
0179_02/10/21 18:01ID:???
>>171
ログファイルの名前を分かり難い物に変える。
(英字と数字を組み合わせて「a5mhp3f」とか。)
パーミッション600等が使えれば600にしておく。
018017302/10/21 18:33ID:nGDYlndq
すいません、もう一度…。
cgi-lib.plの使い方はわかりました。
>>173の
<input type=\"submit\" value=\"管理用\">
この部分でできたボタンを押したことを感知するイベントハンドラ(?)みたいな処理にしないとマズいですよね?
そこを押したらpassを取得して比べるという事をしなければならないので。
そーいったのはどうすればできるのでしょうか?
0181nobodyさん02/10/21 18:44ID:???
>>180
> <input type=\"hidden\" name=\"mode\" value=\"admin\">\n

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

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

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

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

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

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

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

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

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

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

ブラウザ「cgi呼び出し」
↓
CGI「パスワード入力画面出力」
↓
ブラウザ「パスワード入力画面表示」

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

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

プロじゃなくっても、サーバいじれるなら、.datへのアクセスを
禁止しておくのが普通でしょ。
0193nobodyさん02/10/21 22:26ID:5oRhJ4R+
>>192 まったくですなあ。データは.cgiに限りますね。
それか、httpでアクセスできないとこに設置するとか。
0194作ってみた02/10/21 22:34ID:???
>>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>";
019518902/10/21 22:35ID:j4V+CWpA
>190様どうもです。

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

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

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

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

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

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

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

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

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

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

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

結局読める人は計101人で日本語で書くより読めるユーザが増えます。
0227マジレスw02/10/22 20:45ID:???
>>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);
-------------------------------------------------------------

他にも<,>,",@とかもエスケープせんと酷い目に合うよ。
0228nobodyさん02/10/22 20:50ID:???
>>225
既に$cgi{'〜'}の形に変換されてる事から、
その変換時(=デコード処理)のときに改行を削除してると思われ
022922802/10/22 20:51ID:???
文章ちょっと変だが気にするな
0230nobodyさん02/10/22 20:54ID:???
デコード処理きちっとしてないんですよ、きっと。
文字コードの変換とかもしてなさそうな予感。
023117302/10/22 21:19ID: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>';
}
0232nobodyさん02/10/22 21:20ID:???
自分の身近にもいるけど、perlをHTML感覚で扱えると思われてると
根本的に認識がずれてるからどう説明すればいいかとても悩みますね

ところで>>227の $text =~s{\x0D\x0A}{<br>}g; って初めて見たけど
$text =~s/\x0D\x0A/<br>/g; じゃだめなん
0233iui02/10/22 21:22ID: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;
}
}
0234nobodyさん02/10/22 21:22ID:???
>>223
環境によってperldocを通らないことがあるからではないですか。
オンラインマニュアルに求められるのは、なるべくどこでも読めることですから。
これから学習して腕を上げていかれるかと思いますが、間違っても>>226のように
人を見下すことしかできない厨房にはならないでくださいね。
0235nobodyさん02/10/22 21:35ID:???
>>233
それは名前の処理で本文の処理ではないんじゃ
0236nobodyさん02/10/22 21:43ID:???
>>233
>$value =~ tr/\r\n//d;
これ
0237iui02/10/22 21:52ID:nQEHGPbT
>>235
>>236
様、有難うございます。確かにtrされてますね。恥かしい。
すいませんでした。
これを<br>に置換してやって見ようと思います。

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

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

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

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

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



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

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

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

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

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

LWPでHTTP要求したときに一定時間応答がなかったらタイムアウト
させたいのですが、どうしたらいいですか?
0254nobodyさん02/10/23 12:15ID:???
>>253
% su - root
% shutdown -r now
0255nobodyさん02/10/23 13:22ID:???
<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;

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

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

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

>>254
つまらん
0263nobodyさん02/10/23 17:00ID:???
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";
0264nobodyさん02/10/23 17:10ID:???
srand;
print $char[int(rand(27))] for(0..5);

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

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

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

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

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


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

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

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

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

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

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

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

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への出力イベントをハンドルできるかと思って
調べたけど、ないようでした。

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

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

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

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

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

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

>280
俺はページがSJISならSJISで送信されるもんだと思ってた。
詳しい人解説キボン。
0283眠いyo...02/10/24 01:56ID:???
>>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]} }

# つづく…
028428302/10/24 01:57ID:???
# (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__
0285kiki02/10/24 02:09ID: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へ質問の回答を送りたいのです。

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

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


0288nobodyさん02/10/24 08:58ID:???
>>287
意味が分かりません。
0289nobodyさん02/10/24 09:35ID:???
8文字の数字って正規表現だと \d{8} これで合ってますか?
8文字未満だとちゃんとエラーが出るんですけど、9文字以上だとスルーしちゃいます。
0290nobodyさん02/10/24 09:51ID:???
>>289
とりあえず全部書いたら?
0291nobodyさん02/10/24 10:13ID:???
>>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 "警告";
}
これでいいでしょうか。もっと簡単なやり方ある気がするんですけど。。。
0292nobodyさん02/10/24 10:53ID:???
>>291
ビット演算して
if(($a & $b & $c) == $d)
かな

数字の比較はeqじゃなくて==
0293nobodyさん02/10/24 11:33ID:???
if(($a & $b & $c & $d) == $d)
0294nobodyさん02/10/24 11:48ID:???
>>291
print "警告!" if $num =~ m/^(\d)\1\1\1$/;
とかじゃダメ?
0295nobodyさん02/10/24 12:38ID:???
>>282
送信される文字コードはOSで決まると思われ
0296nobodyさん02/10/24 12:50ID:???
>>295
少なくともWin版のIE6.0,Mozilla1.1,Opera6.05,NN4.78はページの
文字コードで送信しますが?
もちろん何かの拍子に別のコードで送ってしまう事もあるでしょうが。
0297nobodyさん02/10/24 12:58ID:???
>>296
きみが正解! SJISでしかページを書いてない人は、意外と知らないよ
029829502/10/24 12:58ID:???
>>296
ん、勉強になった。
0299nobodyさん02/10/24 13:32ID:???
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するだけじゃいけないんですか?
0300nobodyさん02/10/24 13:47ID:???
CRYPT_MD5
0301nobodyさん02/10/24 17:14ID:???
>>295
RFCでは決まっていないからブラウザ依存なはずです。
0302nobodyさん02/10/24 18:14ID:???
ttp://www.ibport.co.jp/~yui/cgiwork/code/index.html
0303nobodyさん02/10/24 18:23ID:???
>>302
- - -
まとめると・・
ほとんどのブラウザは、ページの漢字コードと同じコードでエンコードする。
ページの漢字コードがSJIS以外の時にSJISでエンコードするブラウザがある。
- - -
ちょっとイヤンな気分だ。
0304nobodyさん02/10/24 21:01ID: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.

ってエラーがでました。どうすれば直りますか?
0305主婦のサークルで〜す02/10/24 21:19ID:2CJLXaF+
ほんの少し刺激を求めてる主婦のサークルを作りました!
私たち主婦が楽しめる安全でちょっとトキメキのある出会を求めて
只今男性会員を募集中です!! 女性会員も募集(^○^)/"
http://f-cc.com/~tokimail/
0306nobodyさん02/10/24 23:18ID:???
>>295,>>301-303
お前らちっとは勉強しろ。
ttp://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/level-one-html.html#ID-40002357
0307nobodyさん02/10/25 00:56ID: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は正常で、文字化けしていない状態なのですが
どなたか助言お願いします
0308nobodyさん02/10/25 01:02ID:???
>>307
1つ前のページのヤシを使ってみては?
0309nobodyさん02/10/25 01:27ID:???
前のページの簡易版で
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";
無事正常に取得できました
お騒がせしてすみませんでした
0310nobodyさん02/10/25 17:38ID:???
*.cgiにカウンターを埋め込もうと思い、
counter.cgiのperlへのパスの所をpackage counter;に書き換えて
*.cgiに
require './counter.cgi';
と記述したのですが、ローカル(Win)鯖ではrequire 以下も表示されたのですが
プロホスティングにupすると、それ以下が表示されません。

エラーが出るわけでもないので、どうしたらいいか分かりません。
ヒントを頂けないでしょうか?
0311nobodyさん02/10/25 20:33ID:???
>>310
counter.cgiの中でexitしてるとか(それならローカルでも動かないか・・)
0312nobodyさん02/10/25 23:22ID:???
今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始めてまもないもので分かりづらいと思いますがお願いします。
0313nobodyさん02/10/25 23:55ID:???
>>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"の場合)
を読めばわかるべ。読んでわからなかったらまた聞いて。
031431202/10/26 01:34ID:???
>>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>
031531202/10/26 01:38ID:???
(つづき)
こっちが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;
0316nobodyさん02/10/26 02:13ID:???
>314
最初からCGIにアクセスすればhtmlは要らない。
本文が空のときは表示だけする。
書込み後も表示する。
FORMも含めて全部CGIから送出すればよい。
0317nobodyさん02/10/26 13:17ID:???
>>313
で、あとは何がわからないの?
031827202/10/26 13:42ID:???
しばらく2chをみてなくて、返事が遅れてしまいすみません。

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

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

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

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

パス通さなくていいの?


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

-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*

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

ぐぐっても情報がすくないんで よろしくお願いします。
0339_gunzip ◆eiH/XdoCNg 02/10/28 02:28ID:???
>>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);
}
0340nobodyさん02/10/28 06:18ID:???
$hoge = "0x01";
この$hogeを数値として扱う方法は無いでしょうか?
ただ、0x01のかたちは崩さないようにしたいんです。

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

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

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

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


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

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

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

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

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

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

全部コピーすれば?
レンタルサーバの場合、ファイル構造の制限をちゃんと理解して
プログラムのファイル指定をしっかり変更する事。
0350nobodyさん02/10/28 19:53ID: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が表示されるので、やはり呼び出されていないようです。

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

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

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

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


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

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

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

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

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

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

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

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

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

よろしくお願いします。
0381_gunzip ◆eiH/XdoCNg 02/10/30 03:41ID:???
>>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]} } ] }

でもいいい。
0382risarisa02/10/30 05:09ID:???
ショッピングカートCGIで、一回CGIから抜けて別のページにいって、またショッピングカートCGIに戻っても買い物かごの中身が保持されてるのは、
データをどうやって保持するのか教えてください。
0383nobodyさん02/10/30 06:20ID:???
>>382
cookieを覚えればできることでしょう。
perlとは特に関係がないでしょう。
038437402/10/30 09:43ID:???
>>379
サンクスコ
0385nobodyさん02/10/30 11:08ID:???
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ってなんですか?
0386nobodyさん02/10/30 11:14ID:???
【速報】Perl神ことKent氏、コーディング中に失神
http://ex.2ch.net/test/read.cgi/news/1035796690/
0387nobodyさん02/10/30 11:20ID:???
ヽ(`Д´#)ノ 騙された
0388nobodyさん02/10/30 11:20ID:???
>>386 なんでそのリンク visitedな色になってるんだろうね(藁
0389nobodyさん02/10/30 11:26ID:???
>>386
コーディング中に失神したからどうした?
0390nobodyさん02/10/30 12:30ID:???
>>385
@fileの添字の最大値。

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

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

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

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

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

どうもありがとうございました。
0406 02/10/30 21:31ID:lQD7x9bz
@a = "boo";
@b = "foo";
のとき、
@a / @b
@a - @b
@a++
は、それぞれどうなりますか?
また、その結果は保障されていますか?
あと、変数に格納されているのが、数値として評価できるか否かを判定する関数はありますか?
0407デフォルトの名無しさん02/10/30 22:41ID:???
>>406
>は、それぞれどうなりますか?
自分でやってみてください。
>また、その結果は保障されていますか?
保証されてる(と思う)。
>あと、変数に格納されているのが、数値として評価できるか否かを判定する関数はありますか?
評価する環境によって数値になったり文字列になったり・・・
0408nobodyさん02/10/31 00:52ID: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ボーイって、アクセス売ってるって話ありますが、裏にどこがついてるんでしょう・・お願いします
0409nobodyさん02/10/31 00:58ID:???
>>402 オイオイ。。。
>>401
^は先等を表す記号で、\bは単語の境界を表しているから、違いを言おうとしたら
全然違うとしかいいようがないです。

/^Mona/   先等がMonaではじまっているときにマッチ
/\bGiko\b/  Gikoという単語にマッチ
0410nobodyさん02/10/31 00:59ID:???
408さん、自作自演であらさないでください。
0411nobodyさん02/10/31 14:27ID:???
time.plというファイルに
package time;
sub time{
my $time = "12時";
}
とあって、
main.cgiで、
require 'time.pl';
を呼び出して、
$time = &time::time();
print "$time";
としても表示されません。変数の受け取り方が悪いんでしょうか。
0412nobodyさん02/10/31 14:29ID:???
1;
0413nobodyさん02/10/31 14:32ID:???
>>411
差ブルーティンには、最後に1と書く。
041441102/10/31 14:49ID:cEFw70ny
time.plの一番最後には1;と書いてるんですが、サブルーチンの中にも1;と書くんですか?
sub time{
my $time = "12時";
1;
}
こうですか?
041541102/10/31 15:01ID: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}";
0416nobodyさん02/10/31 15:07ID:???
スカラー変数 ⇔ 配列 ⇔ ハッシュ
0417nobodyさん02/10/31 15:50ID:???
>>415
return %FORM;
0418nobodyさん02/10/31 15:53ID:u48tUPuw
>>415
むちゃくちゃだなぁ
細かくは見てないが

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

2次元配列"@list":

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

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

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

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

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

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

でさ、これだけ判って何か嬉しい?
質問間違ってないか?
0428nobodyさん02/10/31 22:18ID:???
>>427
そんな偉そうな口たたくくらいなら教えなきゃいいじゃん。
0429rubyist@カラアゲうまうま02/10/31 22:19ID:???
311 名前:rubyist@カラアゲうまうま :02/10/31 21:03
厨房でも大きな顔が出来る。それがPerlスレ(わら
043042502/10/31 22:27ID:???
   ∧_∧  / ̄ ̄ ̄ ̄ ̄
  ( ´∀`)< >>427ありがともな♪うれしいもな
  (    )  \_____
  | | |
  (__)_)
0431nobodyさん02/10/31 22:41ID:???
ニホンジンガバレ
0432nobodyさん02/10/31 23:57ID:???
フィールド切り出しなどは、awkのほうがperlよりはやいんじゃ、ないでしょうか?
0433nobodyさん02/11/01 02:15ID:???
#!/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"の部分で改行されていないのですが、
どうすれば保存する文字に改行を入れられるのでしょうか?
0434nobodyさん02/11/01 02:36ID:???
HTMLの改行は<br>ですが何か?
043543302/11/01 02:46ID:???
>>434
いえそうではなくて、openで保存したmoji.datを
いったん、ローカルマシンにデータを移してmoji.datのなかをメモ帳などで
見てみると、りんご・れもん となっているんです。
理想はopenでデータを保存したときに、
りんご
れもん
と改行されているようにしたいのです。
0436nobodyさん02/11/01 02:51ID:???
>435
改行コードはOSによって違う。
そのmoji.datとやらをFTPで転送するときはASCIIモードでやれば自動的に変換してくれる。

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



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


P  E  R  L  は  も  っ  と  く  そ


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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

あと、"テメェみたいなトーシロにゃ思いつかないだろうがこんなとこにも注意しとけ"とか有りましたら御教授お願いします
0483デフォルトの名無しさん02/11/03 10:23ID:???
>>482
ここはPerlのスレです。
CGIのスレは、他にありますので、そっちで質問すれ。
048446902/11/03 11:17ID:???
試した方法は
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;
}
というやり方です。
どれくらい遅くなったかは計ってないですが、許可するタグを増やしていくと
あれ、ちょっと遅いかなと思う程度です。
そこまで速度にこだわる訳ではないですが、どうせなら良いものを作りたいと思いましたので
質問させていただきました。
0485nobodyさん02/11/03 11:41ID:???
>>484
なにも返していないサブルーチンをどうやって使ってるんだ?
0486nobodyさん02/11/03 12:55ID:ikowPnCo
perlで絵文字変換(匿名メーラーでできるような)もの
を作りたいんですが、どうすればいいでしょうか・・・
0487nobodyさん02/11/03 13:26ID:???
>>486
勉強する。
0488nobodyさん02/11/03 15:54ID: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のところをこのように記述するとエラーがでてしまいました。
なぜでしょう?
0489rubyist@カラアゲうまうま02/11/03 16:05ID:???
Perlユーザほど程度の火憂いか憂いyb吸い合いう無い
0490nobodyさん02/11/03 16:06ID:???
>>488
どこでどういうエラーが出るのか?
まあ、他にもツッコミどころ満載だが。
049148202/11/03 18:09ID:???
>>483
スレ違いスマソでした
吊りつつCGIスレに逝ってきます
0492nobodyさん02/11/03 18:44ID:???
&func(%a, %b);
って感じで関数を呼ぶと、
sub func {
my %a = shift;
my %b = shift;
}
では上手く取れません。どうやればよかとですか?
0493rubyist@カラアゲうまうま02/11/03 18:51ID:???
リファレンス使え馬鹿低脳
0494rubyist@カラアゲうまうま02/11/03 19:05ID:???
>>485
Perlってreturnがなくても最後のステートメントの結果が戻り値になるんじゃないの?
0495rubyist@カラアゲうまうま02/11/03 19:07ID:???
騙るなゲリクソン
0496nobodyさん02/11/03 19:09ID:???
>>495
あら。共有ハンドルじゃなかったの。
ごめんなちゃい。
0497perler@カラアゲうまうま02/11/03 19:10ID:???
うまうま
0498nobodyさん02/11/03 19:24ID:???
むかし巨人にガリクソンという投手がいたなぁ。
049946902/11/03 19:29ID:???
レス遅くなりました。
すみません
>>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行増やさなければならないので
効率悪いですね。
050046902/11/03 19:33ID:???
こちらの方がいいかもしれないです。
@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;
   }
}

ゆっくりと調べてみたいと思います。
アドバイスしていただいた方々ありがとうございました。
050149202/11/03 19:45ID:X/43o1Dc
煽られました。私は馬鹿低能です。泣きたいです。
でも、自分で駱駝本を探すのがめんどうなんで、誰か教えてください。
お願いします。
0502nobodyさん02/11/03 20:31ID:???
yで終わる単語にistつけてる喜んでる馬鹿が居るスレはここですか?
0503nobodyさん02/11/03 20:59ID:???
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;
050449202/11/03 21:14ID:???
できました!>>503さんありがとうございました。


0505nobodyさん02/11/03 23:27ID:???
>>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;
    $_;
}
0506rubyist@カラアゲうまうま02/11/03 23:28ID:???
英語も碌に知らない中卒の502がいるスレはここですか。さすが低レベル
050748502/11/03 23:37ID:???
>>494
そんなことぐらい知ってるよ。おまえは>>484が戻り値返してるとでも思ってるのか?

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

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

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

さすがPerl(藁
そういうところが嫌いだ・・・
0514rubyist@カラアゲうまうま02/11/04 02:00ID:???
氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね
氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね
氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね
氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね
氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね
氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね
氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね
氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね
氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね
氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね
氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね
氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね
氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね
氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね
氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね
氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね
氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね
0515nobodyさん02/11/04 02:06ID:???
rubyist@カラアゲうまうま←氏ね
rubyist@カラアゲうまうま←氏ね
rubyist@カラアゲうまうま←氏ね
rubyist@カラアゲうまうま←氏ね
rubyist@カラアゲうまうま←氏ね
rubyist@カラアゲうまうま←氏ね
rubyist@カラアゲうまうま←氏ね
rubyist@カラアゲうまうま←氏ね
rubyist@カラアゲうまうま←氏ね
rubyist@カラアゲうまうま←氏ね
rubyist@カラアゲうまうま←氏ね
rubyist@カラアゲうまうま←氏ね
0516rubyist@カラアゲうまうま02/11/04 03:07ID:???
まあ、おまえらはWebProg板に引きこもっていてくれttwことえだ・
0517デフォルトの名無しさん02/11/04 06:49ID:dvOfgMXA
皆さん、ruby粘着基地外の相手はしないでください。
すぐに松沢病院に帰るはずですから、無視、無視。
0518nobodyさん02/11/04 09:02ID:???
>>488
sendmail -t
0519マリモーマ ◆jbBCmetwgw 02/11/04 10:06ID: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>";
なぜこれで送信できるんだ?
0520nobodyさん02/11/04 10:11ID:BeYwgKh5
らくだ(リャマ)の本をみて勉強しているものです。
この本では改行を/nと表記しているんですが
実際、使う場合は¥nですよね?
\nに置き換えて書けば動くんですが
どういう違い・意味合いがあるのでしょうか。

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

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

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

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

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

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

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

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

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

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

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

切り出した文字列を16進数の数として処理(変数に代入)するやりかたがサパーリわかりません、
どなたかご伝授キボンヌ
0531nobodyさん02/11/04 17:45ID:???
>>530
perl unpackでググったらすぐ見つかるよ。
053252602/11/04 17:46ID:DJv3PW2n
>>527,529
ありがとうございます。
しかし>>529のだと@arrayには何も入らず、
>>527ならちゃんとディレクトリ名が入っているのですが。。。
何か問題があるのでしょうか。
053353002/11/04 17:48ID:???
>>531
ありがとございます、専用の関数あってよかった
053452602/11/04 18:06ID:DJv3PW2n
何度もすみません;
>>527の方法で解決したと思ったんですが、
カレントディレクトリ以外を開くとディレクトリ名が取得できません。
開けなかった場合はエラーが出るようにしてあるので、開けてはいるようです。
色々試してみると、どうやら if(-d "./dir/") のようにすると取得されないようです。
ifを抜いてディレクトリ・ファイルの区別をしないとちゃんと取得されました。
やはりカレントディレクトリだとどちらでも取得できます。
原因はなんでしょうか。。。
0535nobodyさん02/11/04 19:57ID:???
GIFファイルを読んで
アニメーションGIFかフツウのGIFか判別するには
どうすればいいんでしょうか?
0536名無しさん02/11/04 20:57ID:EBTUNl6q
GIFのことは良く知らんけど、GIFのフォーマットを調べて、
そのヘッダの情報を読み込めばよいのでは?
0537名無しさん02/11/04 21:00ID:EBTUNl6q
こんなの見つけました。
GIFフォーマットの詳細
ttp://tohoho.wakusei.ne.jp/wwwgif.htm
>>535サンの役に立つと思います。
0538nobodyさん02/11/04 21:06ID:???
>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文をこれにさしかえればいい。
053952902/11/04 21:09ID:???
>>538
たぶんそれが正解だと思う
0540nobodyさん02/11/04 21:18ID:???
>>538
readdirは必ず.と..を最初に返すの?
@name=grep !/^\.\.?$/,readdir DIR; #らくだ本より引用
この方がよくない?
0541nobodyさん02/11/04 21:20ID:???
らくだ本に書いてるなら間違いない!!
054252602/11/04 21:59ID:DJv3PW2n
>>529,538,540氏
できました、ありがとうございます!
ご迷惑おかけしました;
0543nobodyさん02/11/04 22:14ID:???
>>537
さんきゅ
0544nobodyさん02/11/04 22:37ID:???
ずるぼんであぷろだをつくろうとおもいCGIをいじり、cgi-binふぁいるも
つくりいざうぷしようとしたらupload.cgiとjcode.plだけがなぜかうぷ
できない。ためしにindex.htmlとかをうぷしたら正常にうぷできた。FFFTP
を使っているのだが何か問題点ある?
0545デフォルトの名無しさん02/11/04 22:55ID:???
>>544
文字コードが違うんじゃない。統一しないとまずいよ。
あと、FFFTPだったらバイナリ送信に汁が吉。
コード指定しとくと変換しちゃうからね。
0546nobodyさん02/11/04 23:01ID:???
>>545
よくわからない。詳細キボンヌ
初心者でスマソ。それともこれぐらいもわからないのならあきらめろという罠
ですか?
0547nobodyさん02/11/04 23:02ID:???
そうです
0548デフォルトの名無しさん02/11/04 23:17ID:???
>>546
第一さ、>>544の文章の読みにくさ、第二に、「うぷできない」って
物理的にアップできなかったのかどうか。ネタとも思える書き方。
漏れはさ、物理的うぷはできたが、動かそうとしたらうまくいかん
かったっていうことかとおもてレスしたんやけどな。

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

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

あい

とならずに、

あ
い

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

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

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

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

>>552
$param =~ s/^\s+//;
$param =~ s/\s+$//;
を試してみるのはいかが。
0559nobodyさん02/11/05 08:18ID:???
"$nm,$pw,$a\n";
を
"$nm,$pw,$a,\n";
こうする。
0560nobodyさん02/11/05 09:34ID:???
Perlの改行って\nで統一的に扱ってくれないんですか?(テキストモードで)
なんかWindowsで\x0d\x0aじゃないと上手くいかなかったような。
0561nobodyさん02/11/05 10:48ID:???
>>561
ココ?http://www.din.or.jp/~ohzaki/perl.htm#CRLF_Unify
でもどこで使えばいいのかいまいちわかってない初心者な自分。
056255202/11/05 11:23ID:???
皆さん、ご指導有難うございました。
とりあえず教えて頂いた方法を試してみたいと思います。
本当にありがとうございました。
0563nobodyさん02/11/05 12:39ID:19J7tl02
zakzakがエラーだしてるわー(藁
0564nobodyさん02/11/05 13:23ID:???
今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
0565nobodyさん02/11/05 13:34ID:???
>>564
動かないというのは、何かエラーが出たの? それだけじゃわかりまへん。
056656402/11/05 13:43ID:???
起動方法は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に移動してみたところ、この表示がでました
0567nobodyさん02/11/05 14:02ID:???
>>566
use Select; って行があると思うが、Select.pm ってモジュールを探し損ねてるんじゃ?
056856402/11/05 14:24ID:???
エディタでPerlファイルを開いたところuse Selectという行がありました。
Select.pmモジュールについてですがC:JPL5005\LIB\PERL5というフォルダにはいっているのを確認しましたが
モジュールを探し損ねてる場合どういった処置を行えばよろしいでしょうか?
0569&rlo;こんう&lro;02/11/05 16:04ID:???
test
0570nobodyさん02/11/05 16:26ID:???
しっつもーん!

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

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


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

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

上は分かるのですが下の意味が分かりません。
これはどういう動作なのでしょうか?教えて下さい。
0574nobodyさん02/11/05 18:43ID:???
>>573
\n または \r をすべて削除
0575nobodyさん02/11/05 19:02ID:???
あ…すいません(汗
\rとは一体どういう働きをするのかお聞きしたかったのです。
聞き方が悪くてごめんなさい。
0576nobodyさん02/11/05 19:21ID:???
>>575
carriage return
0577nobodyさん02/11/05 19:25ID:???
>>575
改行コードは\rと\nが混在してるから両方取り除くって事だろ?
057857502/11/05 19:42ID:???
>>576さん、577さんありがとうございました。
なんかややこしく考えてたみたい。助かりました。
0579nobodyさん02/11/05 19:44ID:???
一時間おきにCGIを実行する方法ってありますか?
0580nobodyさん02/11/05 19:48ID:???
>>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 に登録されているディレクトリに置くか、
上述のようにパスを示してやればいい。単に設定ファイルを
ロードするような目的なら、絶対パス指定を薦める。
058157002/11/05 20:16ID:???


私にもレスください


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


わかりません

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

読みこめる方法はないでしょうか?
よろしくお願いします。
0590鮎川02/11/05 22:35ID:???
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;

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

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

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

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

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


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

$ref=[];
$ref=1; <-何かで上書きして参照を抹殺
↓
メモリリーク?
0595nobodyさん02/11/05 23:50ID:???
>>594
Perlにメモリリークなんてあるのか?
そもそもCのようにメモリを操作することはできないんじゃ・・・
0596 ◆hMJAPH9PWA 02/11/06 00:22ID:???
>>592
イメージ的にはそうだね。あと一歩、あと1byteあればとりあえず動きそう。

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



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




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





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

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

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

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

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

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

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

>>613
そんな怒らないでくださいよ。最良の方法はなにかなーと思ってるだけですよ。
0616nobodyさん02/11/06 16:26ID:???
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を見て別の配列に入れればよかったんだと思う。
0617nobodyさん02/11/06 16:34ID:???
つーか普通checkboxのnameはバラバラにする。同じにするのはradio。
同じグループ(複数回答可の選択式質問など)だとしてもnameをq1-1とか付ければ良いだろ。

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

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

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

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

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

埋もれてしまった


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

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


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


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

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

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

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

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

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

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

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


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

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

{ map { $_, 1 } @list }

は
どんな時に使いますか?

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

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

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



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

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

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

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

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

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

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

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

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

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

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

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

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

こうすると@hairetuに渡された引数が全部入ってしまいます。
仕方なく、
my @hairetu = $_[0];
my $hensu = $_[1];
とやっていますが、引数が多くなった時は大変です。
どうすればうまく引数を受け取れますか。
067367202/11/07 15:35ID:???
すいません、
my @hairetu = $_[0];
my $hensu = $_[1];
もダメでした(汗
@hairetuに "あ い う" こういう感じで配列が一個になってしまいました。
0674nobodyさん02/11/07 15:49ID:???
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};
}
0675nobodyさん02/11/07 17:47ID:???
${$foo}{bar}
が
$foo->{bar}
と書ける理由は何でしょうか?
0676nobodyさん02/11/07 17:54ID:???
$foo = \%foo; の場合
%foo と %{$foo} は同じ。
よって $foo{bar} と ${$foo}{bar} は同じ。

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

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

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

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

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で表計算」というスレ立ててもいいですか?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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
0727nobodyさん02/11/09 00:28ID:???
---------------------- の内容のファイルを用意し(仮に line.txt)

% cat -n xxx line.txt
0728nobodyさん02/11/09 00:44ID:s/UCnmus
奮戦記
http://www.geocities.co.jp/SiliconValley-Oakland/9753/fusigi1.htm

072971902/11/09 00:46ID:???
>>723
> Javascriptで1回きりリロード
参加者が変わったときだけ上フレームをリロードするJavaScriptを
下フレームのHTMLに挿入すればいい。
でもさっき言った入力欄の問題があるから、さらに上フレームは
分割したほうがいいかもね。

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







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

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

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

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

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


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

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

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

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

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


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

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

っていうか、答えいて。
0767nobodyさん02/11/10 13:41ID:???
質問です。
HPを二つ持ってて同じ掲示板を使っているんですが・・・
SKINだけ別々にできますか?
0768nobodyさん02/11/10 13:57ID:???
>>766
($piyo= $hoge) =~ s/xxx/yyy/;
って764はいいたいんじゃないの
できるかは試してないけど
0769nobodyさん02/11/10 13:59ID:???
>>767
それぞれの外部スタイルシートをリファラで分岐させるとかくらいでは
0770nobodyさん02/11/10 14:02ID:???
>>765
$hage eq 'shift_jis'
0771nobodyさん02/11/10 14:06ID:???
>>769
リファラってなんですか?
0772nobodyさん02/11/10 14:08ID:???
>>765
if($hage eq 'あ'){print 'SJISぽ'}
else{print 'SJISじゃないぽ'}
0773nobodyさん02/11/10 14:13ID:???
>>771
リファラとはリンク元のこと。掲示板が置いてあるページのURLが返ってくる。
リファラがA.htmだったらA.cssを使い、
B.htmだったらB.cssを使うようにしてみれば、とゆこと。
ブックマークやブラウザの種類によってはリファラが空の場合もあるけど
0774nobodyさん02/11/10 14:47ID:???
>>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\">";
}
0775nobodyさん02/11/10 15:41ID:???
>>774
いかがなものか・・・
0776nobodyさん02/11/10 15:58ID:???
全てのグローバル変数を初期化するにはどうすればいいんでしょうか?
ひとつずつ書くしかないのでしょうか?
0777nobodyさん02/11/10 16:29ID:???
print '777get記念にティンコ袋の毛をソイエで奪毛'
0778nobodyさん02/11/10 16:32ID:???
>>776
実行しなおすと、自動的に初期化される仕様です。
0779nobodyさん02/11/10 16:53ID:???
>>778
mod_perlかspeeycgi使いたいので
前の変数が残ってると変な動きするんで...
0780 ◆hMJAPH9PWA 02/11/10 16:58ID:???
>>779
use strict;して変数はmyで宣言する
0781nobodyさん02/11/10 17:38ID:???
mod_perlの罠 〜 その1
スクリプト全体は一つの大きなサブルーチンとして呼び出されます。
そのため、
0782nobodyさん02/11/10 19:09ID: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

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

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

すみませんが、解決方を御教授いただきたく思います、お願いします
0786nobodyさん02/11/11 23:21ID: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;
0787_gunzip ◆eiH/XdoCNg 02/11/12 02:06ID:???
>>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 $!;
で勝手に変換してくれるし楽になったなぁ。
0788_gunzip ◆eiH/XdoCNg 02/11/12 05:44ID:???
すまん。
>>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)");
が必要なのだなぁ。取りあえず報告までに
0789nobodyさん02/11/12 11:29ID:???
mod_perlというのはどのレンタル鯖とかでも組み込まれているものなのでしょうか?
CGI可とかPerl可とか曖昧にしか書いてないところが多いのですが。
0790nobodyさん02/11/12 11:50ID:???
>>789
共用なら普通動きません。
昔、mod_perlを開放して痛い目にあってた鯖屋を知ってます。
079178602/11/12 12:49ID:ucbSPxI8
わざわざ調べてもらってありがとうございます。788さんのを
ヒントに色々やってたらできました。using encode("shiftjis")
で内部の使用形式を変えているのですね。ただ、shiftjisの
問題は解決されていないようでしたので、eucかutf8で処理して
コンソール出力時にshiftjisにするように書くことにしました(汗。
内部形式に変換するにはEncode::decode("euc-jp", $euc)と
書けばできました。ありがとうございました。
0792nobodyさん02/11/12 15:43ID:kFsoQdfX
本当は改造なんですけど、改造工房よりこちら向けかと思ったので。
よろしくおながいします。

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

079679202/11/12 18:15ID: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] ですよね?
こっちの方がやりにくいのかな…
0797nobodyさん02/11/12 18:35ID:???
>>796
&error('不正な入力です');

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

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

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

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

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

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

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

とすると/,a,/は大丈夫なんですが/,b,/でエラーになります。
/\,b\,/としてもだめでした。
s/a/b/g;だとよけいなところまで変わっちゃいます。
どう書けばよいのでしょう?
0803nobodyさん02/11/12 21:33ID:???
>>802
それでエラーになるわけない。つーか、aとかbとかじゃなく、元のソース
そのまま見せてみ。
0804nobodyさん02/11/12 22:07ID:???
>802
ちなみにそのやり方だと、,a,a,a,が,b,a,b,にならないか?
080578502/11/12 22:09ID:???
すみません、やっぱどうしても分かりません…
今一度御教授ください、おながいします
色々自分で調べてみて、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とかやりたくなったりしません?
080679502/11/12 22:21ID:???
>>800
1500行でpackage分けされていないとは、物凄いコードをつかまされてしまいました
ね。ご愁傷様です。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

<input type=text name=$hoge>

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

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

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

<input type=text name=$hoge>

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

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

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

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

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

>>854
君はどういう理由が考えられるか考えたのか?
0856nobodyさん02/11/16 19:38ID:???
>854
君の脳に問題がある。<理由
もしくは君の言語能力に問題が。
085785402/11/16 19:41ID:y1C/hDJG
CGIプログラムで読みこむdatファイルのパスを固定されているパス名に
かえたらオッケーだったんですけど、変数とかパスの中に使うとダメなんすか?
チョー初心者ですいませんがお願いします。
0858nobodyさん02/11/16 20:01ID:???
>>857
平気
0859nobodyさん02/11/16 20:18ID: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'

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

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

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

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

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

とやったり

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

のようにしていますが、これを1行で書きたい。
0867nobodyさん02/11/16 22:49ID:???
>>866
($id = $file) =~ s/\.dat$//;
0868nobodyさん02/11/16 22:52ID:li3X+/+9
>>867
うぉぉォォ、、鬱くしい。
さんくす。
0869nobodyさん02/11/17 00:04ID:rKD6R3WV
2ちゃんねる風の掲示板はどの様に作ればいいのですか?
教えて下さい。あと、素材があったら貼っといて下さい。
0870nobodyさん02/11/17 00:15ID:???
>>866
($id)= $file=~ /([^\.]+)/;
こうやったほうが速いべ?
0871nobodyさん02/11/17 00:58ID:???
>>869
スレ違い。
つうかさ、「貼っといて下さい」って、人にモノを頼む態度か?
0872rubyist@カラアゲうまうま02/11/17 01:11ID:???
厨房でも偉そうな顔ができる
それがPerlスレ
0873nobodyさん02/11/17 01:13ID:???
>>869
2ちゃんねる風に作ればいいです。
0874nobodyさん02/11/17 01:37ID:???
>>869
つりぼりかい。
0875nobodyさん02/11/17 01:41ID:???
今ごろ必死でPerl覚る奴は時代の流れがよめない奴。
あほだね〜♪ あほだねえ〜♪ Perl厨がPHP本買ってる〜♪。
087684302/11/17 01:46ID:???
>>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さんのご指摘の『勘違い』が正しいのかも・・・)
至らない初心者で本当に申し訳ありませんが、
何とぞもう少しご教授いただけませんか。よろしくお願いします。
0877nobodyさん02/11/17 02:09ID:???
<input>valueはいいのか?
0878nobodyさん02/11/17 03:42ID:???
>>876
それでできたけど・・?($i = 1ね)
0879nobodyさん02/11/17 04:24ID:???
>>875
まさか君Perlを webで使うことしか考えてないのか?
ちょっとしたSystem管理みたいなことやらせるのに
PHPとかは向いてないでしょ (w
0880nobodyさん02/11/17 04:34ID:???
ぷっPerl厨房必死だな。
Ruby >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Perl
0881nobodyさん02/11/17 05:35ID:???
とりあえずRuby厨はこんなカキコするよりもCPAN全部移植汁!
0882nobodyさん02/11/17 08:12ID:???
Perl向きの(・∀・)イイ!エディタありませんか?
PerlEditorとかなんか挙動不審なんですけど…
(・∀・)イイ!エディタに乗り換えたいよ…
0883nobodyさん02/11/17 12:27ID:???
>>879
追いつめられた羊のような事を書かないで欲しいです。
PerlはWEB使うことが主流です。
そんな使い方をする人なんて極々わずかです。いや今は他の言語を使います。
あなたはWEBはPHPを使ってるんですか?Perlでしょ?
だったらもっとPerlを応援してください。
Perl最高! Perl最高! Perl最高! 
0884nobodyさん02/11/17 12:39ID:???
>>882
素直にEmacsを使え。
0885nobodyさん02/11/17 12:46ID:???
>>882
素直にHIDEMARUを使え。
0886nobodyさん02/11/17 14:00ID:???
フォルツァ(゚д゚)HIDEMARUってアニメが昔あったな
0887nobodyさん02/11/17 16:44ID:eZnGzPxh
たとえば同じフォルダ内にあるHTMLファイルの中に<SET1>〜<SET9>とか独自のタグを入れておいて、それを読み込んでそのタグの直後に文字を代入するにはどうしたらいいですか?
0888nobodyさん02/11/17 16:48ID:???
>そんな使い方をする人なんて極々わずかです。いや今は他の言語を使います。
自分周辺の狭い世界だけで語るなボケ
0889nobodyさん02/11/17 16:51ID:???
Perlhaksuoういv!
0890nobodyさん02/11/17 16:54ID:???
>>887
whileで回せ
089188702/11/17 16:55ID:eZnGzPxh
こんなかんじ?
while (<DATA>){
if (/set|SET/){
print "$line : $_<br>";}
$line++;
}
0892nobodyさん02/11/17 17:12ID:???
>>891
while (<DATA>){
if (/set|SET/){
print "$line : $_<br>";}
$line++;
print;
}
089388702/11/17 17:12ID:eZnGzPxh
追記。
さっきのHTMLの中に埋め込むタグは<SET1></SET1>と対にさせて、その中身を取り出すってかんじです
0894nobodyさん02/11/17 17:26ID:???
>タグの直後に文字を代入するには
>中身を取り出す

いったいどっちがやりたいの?
089588702/11/17 17:36ID:eZnGzPxh
>>894
スマソ
まず、HTML内の<SET1>この文字を取り込む</SET1>から対象文字「この文字を取り込む」をを読み込む。
その後、「この文字を読み込む」を消し、別の文字列を代入
こんなかんじです。どうぞおながいします
0896nobodyさん02/11/17 21:00ID:JxVm/eIS
キーボードから配列$hoge[$i]にEOFが代入された時にループを抜けたいのですが、
文字列の最後に改行コードが入ってる為か抜けられません。
chopで改行コードを取り除かずにEOF(改行)のまま認識させるためにはどうしたら良いでしょうか?
0897nobodyさん02/11/17 22:33ID:???
>>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は削った残りを返り値として欲しい
場合などに使う。
0898nobodyさん02/11/17 22:52ID:???
>>897
HTML::Templateじゃ、895の要件満たしてねーだろ。
偉そうに一般論ぶってるだけのperl厨シネヨ。
0899test ◆wSaCDPDEl2 02/11/17 23:08ID:???
YYBBSにトリップ昨日をつけたいのですが・・・
挫折。
わかる方宜しくおねがいします
0900nobodyさん02/11/17 23:11ID:???
>>898
HTMLでは、独自に定義したタグを使うことはできない。
そのため、「完成品」からは、独自タグが消えていなければならない。
HTML::Templateでは、独自タグを残せないので>>895の用件を満たせないと指摘したい
のだと思われるが、もしそうなら用件がおかしい。
しかしながら、>>887を見ると独自タグ自体に意味はないものと考えられるため、上の
ような回答を行った。
0901nobodyさん02/11/17 23:16ID:???
>899
どんな風に挑戦したかソース出してみ。
俺は意地悪だからアドバイスをする気はあっても、答えをそのまま載せる気はなくてね。
0902nobodyさん02/11/17 23:16ID:???
>>899
とりあえずこちらのスレへどうぞ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

>>939
現れないに一票
094392902/11/19 00:04ID:???
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式で利用してください。
094492902/11/19 00:07ID:???
高知県はhtml作ったやつがアホで、「県別」とかいうフィールドがありますので注意してください。
0945nobodyさん02/11/19 00:12ID:???
人に頼るなヴォケが 自分でやれ むしろ金払ってやってもらうなりしろ
0946nobodyさん02/11/19 00:24ID:???
>>929
CSVデータに , がふくまれてなさそうなので簡易に以下のようなものでできるんじゃ?

$key= 'ビオトープ';
open(IN, "hokkaido.csv");
while (<IN>){
    $n= $1=~ tr/,// if !$n && /^(.*)[^,]*\Q$key\E/o;
    print if /^(?:[^,]*,){$n}●/;
}
close(IN);
0947nobodyさん02/11/19 00:33ID:???
>>929
perl -i.bak -pe 's/(\n|<br>)//sgi'でもやっておいた方がよさげ。
少なくとも、北海道のを見る限り。
それからは、高知以外のCSVくっつけて、
perl -F, -nae '$a++if$F[4]eq q|●|;END{print$a}'
てな感じでどうかな。
4は自然観察会、9がビオトープ。
その後、高知の数字を数えて足す。
泥臭いけどね。
094894702/11/19 00:34ID:???
perl -i.bak -pe 's/(\n|<br>)//sgi' *.html
↑これをやったあとでCSVにするってこと
094994702/11/19 01:08ID:???
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)
つーか自分が勉強になった。
0950nobodyさん02/11/19 01:30ID:???
>>933
>if(-d !"存在するディレクトリ"){〜〜〜}
これがOK? マジで?

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

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

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

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

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

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

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

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



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


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

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

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

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

open OUT,">>hoge.txt";

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

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

0971nobodyさん02/11/20 16:08ID:???
ファイルポインタかな。
seek FP, 0, 0;
で先頭に戻さないと。
0972nobodyさん02/11/20 16:11ID:???
>>968
その部分だけではなんとも言えんよ
0973nobodyさん02/11/20 16:24ID:???
>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に入れると動作しません(画面には出力される)。
これでご理解頂けますか?
0974nobodyさん02/11/20 16:32ID:???
$hogehoge は ドコ(゚Д゚≡゚Д゚)ドコ
0975nobodyさん02/11/20 16:38ID:???
>974
「ちゃんと意味のある変数」として読み変えていただければ。
わかりにくければ$line[0]とでも。実際に$hogehogeを$line[0]に
変えても症状は変わりませんし。
0976nobodyさん02/11/20 16:45ID:???
「処理あれこれ」で$hogehogeだか$line[0]だかが消されている。
「画面には出力される」てのは、foreachの中でprintかなんか
入れちゃってる。

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

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

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

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

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

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

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

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

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

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

とてーも困っています。

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

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

ヒントだけでも構いませんのでよろしくお願いします。
0992nobodyさん02/11/20 21:55ID:???
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ってコマンドラインの●を認識するのでしょうか?
0993nobodyさん02/11/20 21:57ID:???
1000!
0994nobodyさん02/11/20 21:57ID:???
1000
0995nobodyさん02/11/20 21:58ID:???

0996nobodyさん02/11/20 21:59ID:???
1000kamone
0997nobodyさん02/11/20 21:58ID:???
1000です
0998nobodyさん02/11/20 22:00ID:???
?
0999nobodyさん02/11/20 21:59ID:???
ん?
1000nobodyさん02/11/20 22:00ID:2IcSyXEF
1000だよ。
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。