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

【Perl】初心者コーナー Part12

レス数が1000を超えています。これ以上書き込みはできません。
0001nobodyさん02/04/27 23:17ID:1NNXdNsp
 
いらっしゃーい、Perlの「コーディング」で困ってる人のスレです。

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

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

CGIの質問は【CGIだけどなんか質問ある Pert 6 】
http://pc.2ch.net/test/read.cgi/php/1019561283/
参考書籍の話題は【【Perl,CGI】参考書籍 第2版 】
http://pc.2ch.net/test/read.cgi/php/988809842/
その他の雑多な話題は、【CGIに依存しないPerlの話題一般】
http://pc.2ch.net/test/read.cgi/php/991313362/
スクリプトの改造依頼は 【スクリプト改造工房 Part4 】
http://pc.2ch.net/test/read.cgi/php/1012839651/

過去ログ、その他の役立ち情報は>>2-10を見よう。
 
0002nobodyさん02/04/27 23:17ID:1NNXdNsp
[過去ログ]
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/test/read.cgi/php/996075607/
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/test/read.cgi/php/1009549309/
Part10 http://pc.2ch.net/test/read.cgi/php/1014556702/
Part11 http://pc.2ch.net/test/read.cgi/php/1017201229/

[ひまぢん氏のミラー]
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
0003nobodyさん02/04/27 23:17ID:1NNXdNsp
[総合]
 ・Perl Com: http://www.perl.com/pub/
 ・CPAN.com: http://search.cpan.org/
 ・ActivePerl: http://www.activestate.com/
 ・CGI-ML:http://forest.ne.jp/cgi-ml/
[お薦め]
 ・Perl Recipes: http://www.effectiveperl.com/recipes/
 ・Perlメモ: http://www.din.or.jp/~ohzaki/perl.htm
 ・Randal's WebTechniques columns: http://www.stonehenge.com/merlyn/WebTechniques/
 ・Perlの部屋: http://www.cc.rim.or.jp/~midorin/mad-p/perl/index.html
 ・Perl初心者の部屋:http://www.harukaze.net/~mishima/perl/
 ・Perlリファレンス:http://www.big.or.jp/~mio/ga/pl/plref/pl_ref.htm
 ・Perlのページ:http://homepage1.nifty.com/nomenclator/perl/
[Document&Tutorial]
 ・Perl News: http://www.news.perl.org/
 ・Perl Monks: http://www.perlmonks.org/
 ・PerlMonth - Online Perl Magazine - : http://www.perlmonth.com/index.html 接続不能
 ・use Perl All The Perl: http://use.perl.org/
 ・Learn Perl - Perl Education: http://www.devdaily.com/perl/edu/index.shtml
 ・Perldoc.com: http://www.perldoc.com/
 ・Using Perl5 in Web: http://docs.rinet.ru/Using_Perl5_in_Web/
 ・Rex Swain's Home Page: http://www.rexswain.com/
 ・Robert's Perl Tutorial: http://www.netcat.co.uk/rob/perl/win32perltut.html
 ・Perl Tuts: http://savage.net.au/Perl-tutorials.html
 ・Beginning Perl Tutorials: http://www.pageresource.com/cgirec/index2.htm
 ・jcode.pl の私的な解説書: http://www.mikeneko.ne.jp/~lab/kcode/jcode.html
 ・Logical Choice Software, Home Page: http://www.logsoft.com/perltips/
 ・Perlfect Solutions: http://perlfect.com/
 ・The Perl Archive : http://www.perlarchive.com/
 ・Perl6 & Parrot VM についての情報: http://dev.perl.org/perl6/
0004nobodyさん02/04/27 23:17ID:1NNXdNsp
[Module]
 ・Perl Module Reference: http://www.bekknet.ad.jp/~bero/docj/module_/
 ・PPMPackages: http://www.activestate.com/PPMPackages/
 ・河馬屋二千年堂's Page: http://member.nifty.ne.jp/hippo2000/index.htm
[Security]
 ・安全なプログラミングのためのガイドライン:http://www.FreeBSD.org/ja/security/#spg
 ・Perl security:http://www.perldoc.com/perl5.6/pod/perlsec.html
 ・Perl security和訳:http://www.kt.rim.or.jp/%7ekbk/perl5.005/perlsec.html
 ・CGI and Security http://www.ansi.co.jp/tech/cgi/security/
 ・The Unofficial Web Hack FAQ:http://www.nmrc.org/faqs/www/
 ・How to Write Secure Code:http://www.shmoo.com/securecode/
 ・Safe CGI Programming :http://www.improving.org/paulp/cgi-security/safe-cgi.txt
[OS]
 ・Linux日本語マニュアル:http://www.linux.or.jp/JM/
 ・FreeBSD日本語マニュアル:http://www.jp.freebsd.org/man-jp/
0005nobodyさん02/04/27 23:32ID:???
>>1
乙カリー
0006nobodyさん02/04/27 23:41ID:???
キーボードから文字数を制限して入力するにはどうすればいいのか教えれ。《ら抜き表現》
0007hanamogera ◆kkkKkkko 02/04/27 23:49ID:zKZtkfuA
りげなく・・・漏れが作った携帯端末掲示板スクリプトを公開。
あんまり激しく叩かないで〜
http://www.sgmt.jp
0008nobodyさん02/04/27 23:57ID:???
>>7
      ∧_∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
    (∩・∀・)< もしもし…何がしたいのかもうちょっと具体的におながいします
□……(つ   ) \___________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|

textareaに書かれた文字数をcgiにわたる前にチェックしたいということかな?
0009nobodyさん02/04/27 23:58ID:???
>>8
>>7じゃなくて >>6だった。hanamogeraさん失礼
0010nobodyさん02/04/28 00:04ID:???
>>6
歴史(?)は繰り返す
http://pc.2ch.net/test/read.cgi/php/991313362/261
0011pear ◆FRUIT8pk 02/04/28 00:07ID:???
>>8
カワ (・∀・) イイ!!
0012nobodyさん02/04/28 00:47ID:???
で、結局前スレ975は何が聞きたかったんだ?
0013nobodyさん02/04/28 01:28ID:???
聞いてアロエリーナ ちょっと言いにくいんだけど
2年前Perlに挫折して、VBS、PHPやってきたんだけど
昨日 Perlのリファレンス読んだら 理解できたの
ちょっとうれしいな!
聞いてくれてあーりがと アロエリーナ♪
\______ ________/
          |/
         ∧_∧
   Ψ     (∀・  )
   □     (∩∩  )
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
0014nobodyさん02/04/28 01:49ID:???
perlは挫折する部分がありません。
0015nobodyさん02/04/28 01:59ID:???
>>14
型なし言語でクラスのまねごとし始めた時点で萎えました。
今後はObjectPascalで行こうかと考え中。
0016nobodyさん02/04/28 02:16ID:???
Perl6まで待ってくれ。
0017nobodyさん02/04/28 18:19ID:???
いつまで?
0018nobodyさん02/04/28 21:44ID:???
オープンしたファイルは、プログラムがexit;で終了するとcloseしなくても、勝手にクローズされるのでしょうか?
0019nobodyさん02/04/28 22:14ID:9I+rPdRi
>>18
クローズされます。
exit 以外でも、終了するとクローズされます。
0020継続02/04/28 22:20ID:???
1. if ($string eq "hoge") {
2. if($string eq "hoge"){
3. if ( $string eq "hoge" ) {
4. if( $string eq "hoge" ){
どれが好きですか?細かいけど

1と4が一人ずつ
0021_gunzip02/04/28 22:31ID:???
>>20 1でふ。
Perl6では、if/for/foreachなどの()は必要なくなりますが...。
0022nobodyさん02/04/28 22:44ID:???
>20
制御構造では空白を挟むのが一般的。(if, while, foreach, for ...)
パーレン中の両端は普通空白を入れない。(*)
よって「1」。

(*)条件式が複雑で、パーレン中の端に空白を入れた方が見やすくなる場合は
そうするかもしれない。
0023nobodyさん02/04/28 23:12ID:???
>>19
ありがとうございます。
0024nobodyさん02/04/28 23:16ID:???
全角の文字列の一文字おきに、何か記号を付け加えるにはどうすればよいのでしょうか?

お願いします
↓
お<>願<>い<>し<>ま<>す<>

こんな感じにしたいのですが。
0025nobodyさん02/04/28 23:24ID:???
>>24
文字コードは?
0026nobodyさん02/04/28 23:30ID:???
EUCに変換して
s/([\200-\377]{2})/$1<>/g;
0027nobodyさん02/04/29 00:30ID:???
>21
Perl6 じゃなくても if/for/foreachなどの() が必要とは限らないだろ!

`kill -KILL _gunzipのPID` if $user eq '_gunzip';

>24
環境の文字コードを早く書け、ボケ!
0028nobodyさん02/04/29 00:31ID:pMsSvLdB
質問なんですが、ハッシュのすべての要素に関して
添え字と値両方を操作したいんです。
例えば配列@aのすべての要素に関して
foreach $_ (@a) {print "添え字=$_";}
こういう感じのことを添え字が予めわからない場合
どのようにしたらいいでしょうか。
0029nobodyさん02/04/29 00:37ID:???
>>28
keys
each
などなどを検索
0030nobodyさん02/04/29 00:39ID:???
ありがとうございます!
調べてきます。
0031nobodyさん02/04/29 00:53ID:???
>>26
ありがとうございます。
sjisにも対応させるには
s/([\200-\377][\000-\377]|[\000-\377])/
でいいのでしょうか。
やってみたところ無事に動いてるっぽいのですが。
0032nobodyさん02/04/29 01:06ID:???
>>31
http://www.din.or.jp/~ohzaki/perl.htm#Character
0033nobodyさん02/04/29 01:24ID:???
ここって、初心者がくるところなんだぁ。 なんか安心した。

で、どういうことを質問すればいいの?
0034nobodyさん02/04/29 03:02ID:???
(´-`).。oO(>>33 あなたが 12〜15歳の女性なら、全身写真うpしてから話そうよ…)
0035nobodyさん02/04/29 03:32ID:???
Part11もうdat落ちしているよ… なんなんだ一体
0036nobodyさん02/04/29 03:55ID:???
ひろゆきはお金儲けに必死
0037nobodyさん02/04/29 05:40ID:???
過去ログ読めって言えないね…。
Part9、10はまだHTML化されてないし。
0038nobodyさん02/04/29 05:56ID:Ff1dM8JC
初心者の質問なんですが、HTMLファイルに直接、JavaScriptを書いて
IEで表示させると動くのに、それをCGI上でPerlで出力させたHTML文の中に
同じJavaScript(WSHでもいい)を書いて表示させると、ブラウザの
ステータスバーに「実行させたけどエラーになりました」という表示が
出て、期待通りの動作が起きないのは何故なのか、ご存知の方います?

0039nobodyさん02/04/29 06:27ID:???
>38
出力は期待通りにされてるの?
0040nobodyさん02/04/29 08:54ID:???
27に反応してください。おねがいします。
0041nobodyさん02/04/29 08:56ID:???
>>21 = Perl初心者
0042nobodyさん02/04/29 09:21ID:???
>>40
21もそれくらいは分かっていると思うのだが。
0043pear ◆FRUIT8pk 02/04/29 09:38ID:???
>>20
2!!
0044nobodyさん02/04/29 09:49ID:???
>36
儲かってますが、なにか?
0045nobodyさん02/04/29 09:59ID:???
>>27
for()、foreach()の()を外した例もキボン。
0046nobodyさん02/04/29 10:11ID:???
修飾のばあいは()をはずせるが。
exp for @array;
exp foreach @array
exp if $str eq "hoge"

>>21 はPerl6では
foreach @array -> $item {
    exp
}
if $str eq "hoge" {
    exp
}
とかくようになる、ということを言いたかっただけだと思われ。
(つーか、修飾句の場合()を外せることぐらいgunzipは知ってるだろ.do-demoiigana)
00474602/04/29 10:14ID:???
間違えた。Perl6でもifの場合は()がいるな。鬱だ
00484602/04/29 10:18ID:???
やっぱり必要ないな。>>46のままでよし
朝から連続ですまんな。
0049pear ◆FRUIT8pk 02/04/29 10:20ID:???
>>46
うん、ソレだ!
0050nobodyさん02/04/29 10:28ID:???
ああ、PerlもC++と同じ間違った道を歩むのか・・・。
0051nobodyさん02/04/29 10:29ID:???
>46
_gunzip さん、わかりやすい解説ありがとうごさいました。

わざわさ _gunzip を gunzip と書いて別人になりすますあなたのやさしさ、
たしかにわたくしの胸を打ちました。

今後ともよろしくおながいします。
00524602/04/29 10:32ID:???
最後の部分で擁護するようなことを書いたから>>51みたいなアフォを呼び込んだか。
まあ、どーでもいいや。せいぜい頑張ってくらはい。
0053nobodyさん02/04/29 10:37ID:5LS+M/ng
叩かれて当然です。
0054nobodyさん02/04/29 10:38ID:???
>>51
だよねー。 いつもの _gunzip さんの手口ね。

この板を盛り上げようとする心意気はわかるけど、名前を変えては煽ったり
するのってもうやめたほうがいいんじゃなーい? そのほうが人が戻ってくる
ように思うのはわたしだけじゃないでしょ?
0055藁藁藁02/04/29 10:40ID:5LS+M/ng
とりあえず、俺が居る限り消えてください。

こいつの1レスごとに、俺が50レスで荒らします。
そんなことになったら、他の人も困るでしょ?
0056あぼーんNGNG
あぼーん
00574502/04/29 10:49ID:???
>>45の回答もよろしくお願いします。
0058nobodyさん02/04/29 10:49ID:???
>52
あまりにも本質をついてしまったから、動揺しちゃったね。

>54
冷静に見てる人もちゃんといるんだね。
0059nobodyさん02/04/29 10:52ID:???
>>20
おれは1だな
0060nobodyさん02/04/29 10:55ID:???
52=54=58
と、おきまりのを書いてみるテスト。
さて、どんな言い訳が返ってくるか(藁)
それとも、おれが_gunzip認定されたりして。
0061nobodyさん02/04/29 10:58ID:5LS+M/ng
aaaaaaaaaaaaaa
0062nobodyさん02/04/29 10:58ID:5LS+M/ng




とりあえず、ウザイ
0063>>2102/04/29 10:59ID:5LS+M/ng
このスレ、もう駄目だね。誰かのせいで。
0064あぼーんNGNG
あぼーん
0065nobodyさん02/04/29 11:30ID:???
>>35
dat落ちを防ぐには850で次スレに移行とかしたほうがいいのかねー
0066nobodyさん02/04/29 11:32ID:???
>>65
そんな気がする。
0067nobodyさん02/04/29 12:23ID:???
>>65
だろうね。トレンド語るようなスレなら1000ゲトーしても
良いかも知んないけど、質問系スレは900逝く前に移行して
新しくスレ立つごとにうまくageてれば良いと思う。
0068nobodyさん02/04/29 12:32ID:???
あまり無いような状況だけど例えば
A,B,C,D,E,Fって処理があってどれもお互いカブってないような状況なら
サブルーチン化して&A;・・・&F;ってやるのと
ただABCDEFって並べるのなら処理速度的に後者の方が良いんですかね?
0069nobodyさん02/04/29 12:45ID:???
>>68
うん。目に見える違いが出るかどうかはさておき。
0070nobodyさん02/04/29 12:57ID:???
>>68
ちなみに、本当にサブルーチンをばらして並べる人がいたら、
漏れはその人とは一緒に開発したくない。
0071nobodyさん02/04/29 13:00ID:???
>>70
そなの? 漏れは長くなりすぎる場合は機能の区切りがいいところで分けちゃうけど……
00727002/04/29 13:06ID:???
>>71
言葉足らずだったかな?
「サブルーチンをばらしてABCDEFって並べる人がいたら、 」
0073nobodyさん02/04/29 13:27ID:???
ずーっとひととおりあちこちまわってみたけど、どこもかいてあることが
むずかしくてわっかりませーん。

ここ初心者のとこでもむずかしいのねぇ。 びっくりさぁね。
みなさんのレベルで初心者って、、、はぁ。 もう、わけがわかりません。
0074nobodyさん02/04/29 13:41ID:kMaPAu7S
>>20
()内が単純なものなら2、複雑で読みにくくなったら4です。
スペース打つのがめんどいのと、極力横幅を縮めたいので。
0075nobodyさん02/04/29 13:57ID:???
gifcat ってあるじゃん? gif画像くっつけるやつ。

標準モジュールの中にそれってあるのか? だれでもいいから早めに答えろよ、
こっちはいそがしいんだからな。

いっとくが、とほほが配布してるやつはよせよ。うまくくっつかんからな。

それ以外でくっつける方法とかしってるやつがいたらもったいぶらないで教えろや。

0076nobodyさん02/04/29 14:42ID:???
>>75
それが人に教えてもらう態度か氏ねや
0077nobodyさん02/04/29 14:47ID:???
┌──────────────────────―─┐
│                                    |
│                                    |
│                                    |
│                                    |
│                /■\                    |
│               (´∀`∩)                   |
│               (つ  丿                |
│                ( ヽノ                    |
│                し(_)                |
│                                    |
│             Now Onigiring. ...               |
│                                    |
│         大変見苦しい場面がありました。 .       |
│         そのままおにぎりでお待ちください。.        |
│                                    |
│                                    |
└───────────────────────―┘
0078nobodyさん02/04/29 15:31ID:s0WzG4fn
そのサブルーチン内しか使わないような変数も全部my宣言した方が
良いんですか?例えばクッキーの要素とか。
0079nobodyさん02/04/29 15:47ID:???
>>78
もちろん。(例えば、で"クッキーの要素"を出すのはよく判らないが)
なるべく変数の有効範囲を狭くしたほうがいいかなと思うけど。
00807802/04/29 15:54ID:???
>>79
ありがとう。疑問解決したよ。何か俺の説明が悪かったね。
クッキーの要素ってのは、よく配布CGIスクリプトとかでよく見る
($year,$month,$week,・・・)みたいな奴のスカラ変数部ってこと。
0081nobodyさん02/04/29 16:11ID:q+P1YCSQ
フォームメールCGIでメールアドレスを登録してもらうときに全角英数字で
入力する人がいるので、全角英数→半角英数に自動で変換させたいんですが
どんなふうにすれば良いでしょうか?
0082nobodyさん02/04/29 16:18ID:???
>>81
jcode.pl 使っての変換ならこれかと
http://www.din.or.jp/~ohzaki/perl.htm#JP_Z2H
00838102/04/29 16:21ID:q+P1YCSQ
>>82
ありがとうございます!
0084nobodyさん02/04/29 18:37ID:???
ょぅι゛ょ
0085nobodyさん02/04/29 19:20ID:NmdFgil6
ba0ka
0086nobodyさん02/04/29 22:00ID:NmdFgil6
こてはんはおえ
0087nobodyさん02/04/29 22:19ID:5LS+M/ng
このスレッドにコテハンが書き込み次第、このスレを処刑します。
0088コテハン02/04/29 22:20ID:???
コテハンですが何か?
0089nobodyさん02/04/29 22:22ID:5LS+M/ng
今までに、コテハンが書き込んだログはすべて削除依頼を出してください。
これは命令です。
0090_gnuzip02/04/29 22:59ID:???
これあげるから、成仏してね。

@in1 = (0,1,2,4,5);
@in2 = (6,7,8);

@c = &sum(\@in1,\@in2);

print join(',',@c),"\n";

sub sum {
 my($a,$b,$i,@ret,$n) = @_;
 $n = $#{$a} > $#{$b} ? $#{$a} : $#{$b};
 for($i=0;$i<=$n;$i++) {
push(@ret,${$a}[$i] + ${$b}[$i]);
 }
 return @ret;
}
0091nobodyさん02/04/29 23:35ID:???
汚いコードだな。いかにも厨房らしい。
0092_gnuzip02/04/29 23:46ID:???
>>91
リアル厨房ですが、何か?
0093nobodyさん02/04/29 23:49ID:???
いや、分かってるって。
知恵遅れは消えたら?
0094nobodyさん02/04/29 23:53ID:???
騙っても、書くコードのレベルでばれる、とか書いたら本人認定ですか?
0095_gnuzip02/04/29 23:57ID:???
>>94
騙ってませんが。
0096_gnuzip02/04/29 23:59ID:???
>>94
認定(w
つーか、本人は前スレ475でちゃんと書いてるしね。
0097_gnuzip02/04/29 23:59ID:???
>>95
騙ってるじゃん・・・
0098_gnuzip02/04/30 00:01ID:???
>>97
私がホンモノですが。
0099_gnuzip02/04/30 00:03ID:???
このスレッド専用の名無しさんです。
0100_gnuzip02/04/30 00:04ID:???
くそー、オレのコテハンがぁ(泣
0101_gnuzip02/04/30 00:07ID:???
>>100
なにか一席どうぞ。
010210002/04/30 00:16ID:???
>>101
朝練あるんで、もう寝ます。
0103nobodyさん02/04/30 00:17ID:???
75の質問にだれも答えてないじゃないか! なにやってんだよ、役立たずが
多いスレなのか?

90のような低レベルなこと書いてる場合じゃねーだろ!

こっちはいそがしいんだよ。 もうすこしだけまってやるからはやくしろよ。
役立たずどもはどっかいっちまえ。
0104nobodyさん02/04/30 00:38ID:???
(´-`).。oO(>>103 はカルシウム不足かな?…)
0105nobodyさん02/04/30 01:04ID:???
(´-`).。oO(カルシウム不足には牛乳だよな。_gyunyuなんちって…)
0106nobodyさん02/04/30 01:08ID:???
"_"には何の意味が。
0107_nobodyさん02/04/30 01:10ID:???
>>106
最新流行の予感。
0108_nobody02/04/30 01:11ID:???
くそっ
先を越された
0109nobodyさん02/04/30 02:16ID:???
>103
引きこもりに忙しいとかあるの?
0110nobodyさん02/04/30 11:36ID:???
なんか妙に荒れてんなぁ。
煽ってるのはいつものように一人だとは思うが…。
0111nobodyさん02/04/30 17:52ID:???
強制IDにならないかな。
0112nobodyさん02/04/30 19:15ID:vVTDvLw/
perlを勉強しはじめて2日目のタコですが、
よろしくお願いします。

REMOTE_HOSTと、HTTP_USER_AGENTと、HTTP_REFERERを
取得して、それを同じディレクトリのdata_log.txt に
書き込んでいく、というCGIを作りたいのですが、
いろんなサンプルを見ながらツギハギで書いてみたのですが、
どうしてもここから先がわかりません。
CGIで外部ファイルに書き込みを行うにはどのような処理を
行えばいいのでしょうか?
ご教授いただければ幸いです。
011311202/04/30 19:16ID:vVTDvLw/
ソースです。

#!/usr/local/bin/perl

print "Content-type: text/html\n\n";

#情報取得部

$host = $ENV{'REMOTE_HOST'};#クライアントのIPを取得
$user_agent = $ENV{'HTTP_USER_AGENT'};#クライアントのブラウザ
$referer = $ENV{'HTTP_REFERER'};#飛んできたサイト

#情報表示部

print "<b>REMOTE_HOST</b>: $host";
print "<BR>";
print "<b>HTTP_USER_AGENT</b>: $user_agent";
print "<BR>";
print "<b>HTTP_REFERER</b>: $referer";
print "<BR>";
print "<BR>";
print "<a href=\"http://localhost/~aya/cgi/data_log.txt\" target=\"_blank\">ログを表\示</a>";

#情報記録部(? data_log.txt)
sub write {
open(LOG,"+<$data_log.txt");
@logs=<LOG>;
unshift(@logs,"$host,$user_agent,$referer\n");
seek(LOG,0,0);
truncate(LOG,0);
print LOG @logs;
close(LOG);
}
0114nobodyさん02/04/30 19:22ID:???
>113
>open(LOG,"+<$data_log.txt");
この$が邪魔なんじゃない?
011511202/04/30 19:23ID:vVTDvLw/
>>114
うっス!取ってみますッス!
011611202/04/30 19:25ID:vVTDvLw/
うっス!

open(LOG,"+<$data_log.txt");
$取って見ました!

ログを表示してみたところ、
何も書き込まれていませでした!(T-T)
0117nobodyさん02/04/30 19:29ID:???
&wirte;呼んでないじゃないか。
0118nobodyさん02/04/30 19:29ID:???
>117
タイプミス。
&write;
0119nobodyさん02/04/30 19:33ID:???
>>116
当たり前だろ.どこかでwrite()すれ.
012011202/04/30 19:33ID:vVTDvLw/
>>117
なるほど!subっていうのをどこかで呼ばないとダメなんですね!

…どうやって呼ぶのでしょうかm(_ _; m?
0121nobodyさん02/04/30 19:34ID:???
カブターヽ( ´ー`)ノ
0122pear ◆FRUIT8pk 02/04/30 19:38ID:???
>>120
&write;
と、書くだけですね
それにしても2日でこれだけのソースを書くなんてすごいですね
012311202/04/30 19:39ID:vVTDvLw/
こうしてみました!
失敗しました!(T-T

print "<BR>";
print "<BR>";
print "<a href=\"http://localhost/~aya/cgi/data_log.txt\" target=\"_blank\">ログを表\示</a>";
write();

#情報記録部(? data_log.txt)
sub write {
open(LOG,"+<data_log.txt");
012411202/04/30 19:40ID:vVTDvLw/
わあああああああああああ!!!!!
できました!!!!!!
みなさん、ありがとうございます!!
012511202/04/30 19:41ID:vVTDvLw/
解決したソースです。

#!/usr/local/bin/perl

print "Content-type: text/html\n\n";

#情報取得部

$host = $ENV{'REMOTE_HOST'};#クライアントのIPを取得
$user_agent = $ENV{'HTTP_USER_AGENT'};#クライアントのブラウザ
$referer = $ENV{'HTTP_REFERER'};#飛んできたサイト

#情報表示部

print "<b>REMOTE_HOST</b>: $host";
print "<BR>";
print "<b>HTTP_USER_AGENT</b>: $user_agent";
print "<BR>";
print "<b>HTTP_REFERER</b>: $referer";
print "<BR>";
print "<BR>";
print "<a href=\"http://localhost/~aya/cgi/data_log.txt\" target=\"_blank\">ログを表\示</a>";
&write;

#情報記録部(? data_log.txt)
sub write {
open(LOG,"+<data_log.txt");
@logs=<LOG>;
unshift(@logs,"$host,$user_agent,$referer\n");
seek(LOG,0,0);
truncate(LOG,0);
print LOG @logs;
close(LOG);
}
012611202/04/30 19:45ID:vVTDvLw/
みなさん、わかりやすいアドバイスを有難うございます。
ここから、いろいろ応用できそうで、わくわくしてます♪

>>122
いえ、自力ではないです(^-^;
いろんなCGI配布サイトさまの、サンプルをかき集めて、
切り貼りしましたです。
アドバイス…というか、ズバリ回答を、ありがとうございました。

0127pear ◆FRUIT8pk 02/04/30 19:47ID:???
>>126
それでも自分でやった実力はつくと思いますよ
俺もまだ初心者ですがお互い頑張りましょう。
012811202/04/30 19:49ID:vVTDvLw/
>>127
ありがとうございます。
私も早く回答者さんに回れるように、がんばります。
0129nobodyさん02/04/30 19:53ID:???
>>123
あ,write()だと組み込み関数のwriteになっちゃうのか.
&表記をしないのであれば ::write() だったね.スマンカッタ.
013011202/04/30 20:01ID:vVTDvLw/
>>129
いえ、とんでもないです。
そういう場合もあるんですね。
勉強になりました♪
0131nobodyさん02/04/30 20:20ID:???
(´-`).。oO(>>125 <HTML><HEAD> ぐらいは書こうよ…)
0132nobodyさん02/04/30 20:42ID:???
ショッピングカートの作り方教えろ
0133nobodyさん02/04/30 20:43ID:???
(´-`).。oO(>>131それを言うなら<title>でしょ…<html>も<head>も省略可能だよ…)
0134nobodyさん02/04/30 20:48ID:???
>>133
ダウト
0135nobodyさん02/04/30 21:25ID:???
>>134
(´-`).。oO(XHTMLじゃダメだけどね… http://www.w3.org/TR/html401/index/elements.html 板違いスマソ…)
0136nobodyさん02/04/30 21:52ID:???
>>135ハァ?
0137nobodyさん02/04/30 23:02ID:gJDRgS/S
JavaScriptをStringfromCharCodeに変換するツールって あるんですか?
0138nobodyさん02/04/30 23:08ID:???
>>137
どゆこと?
013913702/04/30 23:11ID:gJDRgS/S
>>138
JavaScriptの内容を 数字化して素人さんに解読されないよーにしたいんですけど
0140nobodyさん02/04/30 23:12ID:64l1RWQD
携帯からの訪問かどうかを調べるには、どのようにすればいいんでしょうか?
0141nobodyさん02/04/30 23:30ID:???
>>139
お馬鹿さん?
0142nobodyさん02/04/30 23:34ID:???
>>139
素人さんは解読しないから大丈夫だよ。
つーか、StringfromCharCodeって、JavaScriptの文自体を生成できるんかいな?
014311202/04/30 23:42ID:vVTDvLw/
>>140
携帯からのアクセスだと、i-modeなら必ずdocomoのサーバーを
介してくる要求が来る筈ですし、c-htmlなんかを要求された
場合などが、見分けるヒントになりませんでしょうか?
素人見解ですいません。
014413702/04/30 23:59ID:gJDRgS/S
>>141
そーかも…
>>142
出来ますよ 実際ソース見ると
eval(String.fromCharCode(数字))
て、具合でしたから
014514202/05/01 00:02ID:???
>>144
おー、なるへっそ。それは面白いねぇ。
そのソースがあるサイトのURLキボン。
0146nobody02/05/01 00:14ID:???
>>145
ソース隠しとか
http://hp.vector.co.jp/authors/VA013453/temp/junk_index.htm
↑のver2.11ってところ
0147nobodyさん02/05/01 00:19ID:???
>>137
スマートな隠蔽はスマートに解読されがち。
document.write("(゚Д゚)ゴルァ world!!"); するのに400行くらいのダミー行を用意すればいい。
詰まるところ木を隠すなら森。更に言うならば板違い。
014813702/05/01 00:29ID:JaMCiNKs
>>147
すいません板違いで
ありがとうございました
014914502/05/01 00:42ID:???
>>148
ありゃ、行っちゃったかな。まぁいいや。

#!/usr/bin/perl

undef $/;
$_ = <>;
s/^(.*?)=//o;
s/\+/ /og;
s/%([a-fA-F0-9][a-fA-F0-9])/pack("c",hex($1))/oge;
$mes = $_ ? $_ : "ここに入れる";
$_ = join(", ",unpack("C*",$_));

print <<"EOF";
Content-Type: text/html

<form action="stringToCharCode.cgi" method="POST">
<textarea name="in" cols="80" rows="30">$mes</textarea>
<input type="submit">
<input type="reset">
</form>
eval(String.fromCharCode($_));
EOF
0150nobodyさん02/05/01 01:16ID:???
(´-`).。oO(>>149価値のないソースを見せてもらってワラタ)
0151nobodyさん02/05/01 02:05ID:Q/hHiA0V
>>149
文字化けします
perlじゃ無理なんですね
0152nobodyさん02/05/01 02:27ID:???
>151
とりあえず、JavaScriptで書いてみた。JavaScriptは初めてなので適当ですが、
IE5で動作しました。得られたコードは、Netscape4では動かない可能性が高いです。
特に、日本語が含まれるとき。

<html>
<head>
<SCRIPT>
function toCharCode (str) {
   var i = 0;
   var ret = "eval(\n\tString.fromCharCode(\n\t\t";
   var tmp = "";
   
   if (str != "") {
      
      while (i < (str.length - 1)) {
         ret += str.charCodeAt(i) + ", ";
         ++i;
         if (i % 16 == 0) {
            ret += "\n\t\t";
         }
      }
      ret += str.charCodeAt(i);
   }
   
   ret += "\n\t)\n);";
   document.ret.text.value = ret;
}
</SCRIPT>
</head>
<body>
<form name="form" method="POST" action="">
<textarea rows="15" name="text" cols="82"></textarea><br>
<input type="button" value="変換" name="btn_tr" onClick="javascript:toCharCode(document.form.text.value)">
</form>
<form name="ret" method="POST" action="">
<textarea rows="15" name="text" cols="82"></textarea><br>
</form>
</body>
</html>
015315202/05/01 02:38ID:???
あれれ、
<SCRIPT> → <SCRIPT LANGUAGE="JavaScript">
var tmp = ""; ←ゴミ
0154nobodyさん02/05/01 03:33ID:???
厨房質問ですいません。
use strict;って何の為にするんですか?
やると処理が早くなるとか、サーバー負荷が減るとかそういう効果が
あるんですかね?
0155nobodyさん02/05/01 03:35ID:IJ/Gv/S8

www.eseven.jp

ウェッブに関するご相談はこちらまで
ホームページ作成からCGI構築まで
国内有数のデザイン・センスとトップクラスのコンピューター・スキルを
あわせもったスタッフが対応します

0156pear ◆FRUIT8pk 02/05/01 07:24ID:???
>>140
どこからか落としたものデス

$agent = $ENV{'HTTP_USER_AGENT'};

if($agent =~ /^DoCoMo\/\d+\.\d+\/([^\/]*)/i){$name = "i-mode";}
elsif($agent =~ /^J-PHONE\//){$name = "J-Skyweb";}
elsif($agent =~ /^UP\.Browser[^-]*-(\w*) /i){$name = "EZweb";}
else{$name = "PCその他";}
0157nobodyさん02/05/01 07:59ID:???
>>154
グローバル変数の使用に警告を出したり間違いの可能性を指摘してくれたりします。
貴方の言う効果はありません。
でも出来るだけ書くことをお勧めします。
貴方以外の人がそのスクリプトを読むときに色々と助かります。
0158nobodyさん02/05/01 08:23ID:???
>>157
なんでプラグマとモジュールが同列に扱われてるんですか?
すごく違和感があるのですが。
0159nobodyさん02/05/01 09:22ID:???
>>158
つーより、プラグマモジュールだろ。
perldoc perlmodlib
0160nobodyさん02/05/01 09:53ID:???
>>158
元来Perlはそういったあらゆる制約を嫌う言語だからです。
自由な記述が出来るよう配慮したのではないでしょうか。
0161perl歴3日02/05/01 11:33ID:???
文字列から任意の文字列を削除するにはどうしたらいいんでしょうか?
たとえば

あういうえあいうえいあいうえ

から 'いう' だけを削除したいときとか。

~tr/いう//d; ではすべての 「い」 と 「う」が削除されちゃいますよね。
0162nobodyさん02/05/01 11:43ID:???
>>161

文字列 =~ s/いう//g;
0163nobodyさん02/05/01 11:43ID:???
>>161
s/いう//g;

そもそもtr/いう//d; って動くの? JPerl?
0164nobodyさん02/05/01 11:44ID:???
ケコーンするか…
0165perl歴3日02/05/01 11:46ID:???
>>162
>>163
ありがとうございます。perl歴3日はだてじゃなかったです。

>>163
例えを日本語にて行ってみました。
0166nobodyさん02/05/01 12:22ID:???
JPerlさいこー
0167nobodyさん02/05/01 12:52ID:ISNd4ZR0
use strict
を使用していますが、サブルーチン内で突然宣言したグローバル変数にエラーを出してくれません。
仕様なのでしょうか。
0168無知者02/05/01 13:00ID:RKuTX2W0
 何も知らない無知者です。これから簡単なHPを作ろうと思います。
よくプロバイダのホームページなどに「HP作成」コーナーがありますが
そういうとこ行く場合でも、お店で売ってる「HP作成ソフト」は買って
おかないとお話にならないんでしょうか? 
 パソコンの種類はibookというものです。
 
0169nobodyさん02/05/01 13:12ID:???
>>168
そんなもん買ったら、目もあてられない。
まずはPerl本を買いなさい。
0170nobodyさん02/05/01 13:21ID:???
use strictって単純に個人でスクリプト使用する場合意味無くね?
0171nobodyさん02/05/01 13:23ID:???
>>167
そりゃ宣言したらエラーは出ないだろ
0172nobodyさん02/05/01 14:33ID:???
>>170
まぁそりゃ一回書いて二度と見ない・手直ししないスクリプトや1行
スクリプトならね・・・

でも基本的には意味ある・意味ないの問題ではなく、その後問題に
ならないように癖としてつけておくべきものだと思ふ。
0173nobodyさん02/05/01 14:34ID:Y6d+iOU0
>>171
たしかPHPではグローバル変数はサブルーチン内で作成できないと思いましたが、
Perlでは間違って変数をグローバル宣言してしまっていてもわからないのですか。
0174nobodyさん02/05/01 14:35ID:???
>>167
なんだ、宣言って。local $global;とでもやったのかね。これって
全然グローバルじゃないって事わかってるだろうね?
0175あげ太郎02/05/01 15:28ID:nNyYCbiy
掲示板を作ってるんですが
同じ内容の投稿を禁止するには
どうすればいいかわかりますか?
0176あげ太郎02/05/01 15:30ID:nNyYCbiy
追加:”同じ人”の同じ内容
0177168の無知02/05/01 15:32ID:OCxUwcxh
>169 perl本とは何ですか、参考書みたいなもの?
そもそもperlという言葉の意味を簡単でいいので教えれくださ
0178nobodyさん02/05/01 15:43ID:???
>175
発言を記録する前に、発言者&内容と、最新の記事の発言者&内容を比較。
具体的なやり方が知りたければ、二重投稿禁止機能のあるBBSを探してそのソースを見るといい。
無料配布のでもたくさんあるだろ。
0179nobodyさん02/05/01 15:45ID:???
>177
http://www.google.com/search?num=100&hl=ja&as_qdr=all&q=perl%82%C6%82%CD%82%C8%82%C9%82%A9&lr=lang_ja
0180nobodyさん02/05/01 15:58ID:???
>>173
ourはブロックスコープでuse varsはパッケージスコープを持っているので,

use strict;
sub hoge { use vars qw($hage); $hage = 'sage' }
hoge();
print "$hage\n";

は合格で,

use strict;
sub hoge { our $hage = 'sage' }
hoge();
print "$hage\n"; # Error!

は失格.

ちなみにstrict 'vars'が怒るのは
 ・パッケージが指定されていない
 ・パッケージ内でuse varsされていない
 ・ブロック内でmy,ourされていない
という条件を全て満たす変数にアクセスしようとした場合のみです.

間違ってグローバル宣言する事はまず無いと思うけど,宣言しただけではエラーは出ません.
0181あげ太郎02/05/01 16:43ID:???
>>178
レスどうもありがとう
がんばります
0182nobodyさん02/05/01 16:56ID:???
何かにつけ、小一時間問い詰めたいと言うバカの何チャラがいる板は
この辺ですか?
0183nobodyさん02/05/01 18:52ID:1jtifKOi
サブルーチンの中の変数をmy宣言すると、
参照渡しできなくなるのですか?
0184nobodyさん02/05/01 18:56ID:???
出来るよ。聞く前に試した方が早いと思うが・・・
0185nobodyさん02/05/01 18:58ID:???
>>183
自分で確かめてみよう。
0186nobodyさん02/05/01 20:37ID:Kie4dwlr
URLを貼ってもオートリンクが効かない掲示板のcgiスクリプトを使っているんですが、
自動的にリンクされるように設定したいんですが、
簡単に書きかえれるものなんでしょうか?
それともおれみたいな初心者は無理でしょうか?
0187nobodyさん02/05/01 20:41ID:???
>>186
スクリプト改造工房
http://pc.2ch.net/test/read.cgi/php/1012839651/
0188nobodyさん02/05/01 21:51ID:c2Kry9FX
>>180
親切に教えて頂きありがとうございます。
わたしのグローバル宣言とは、タイポで未宣言の変数名に
$abc="abc";
のように、存在しているかのように値を入れたことです。
エラーがでなかったので特定に困りました。
パッケージはプログラムの最初に宣言していました。
0189nobodyさん02/05/01 22:56ID:???
>>188
あれ? それは use strict; していればきちんと怒られると思うのですが…….

パッケージ云々について少し伝わらなかったような気がするので補足します.
これはプログラムの最初でパッケージ宣言をしているかどうかは関係ありません.
>>180でエラーになっていたところ
 print "$hage\n"; # Error!
がありましたが,この場合でも
 print "$package_name::hage\n"; # OK
のように変数にパッケージ名を指定すれば怒られずに済むという事です.
この際そのパッケージが実際に存在しているかどうかは問いません.

ぱっと見で参照先が特定できない変数を見つけたらエラーを出す,
というのが use strict 'vars'; です.

あと,Typoを防ぐのであれば /perl -w するのがよろしいかと.
0190nobodyさん02/05/01 23:12ID:???
このスレこの板で一番まともで優良な気がするのは漏れだけ?
0191nobodyさん02/05/01 23:20ID:???
前の方の荒らしレスを見ても?
0192nobodyさん02/05/02 00:45ID:???
その荒らしが少ない。
教える方がコーマンチキじゃない(これが素晴らしい)
初心者は結構すぐに礼をしてる。

って辺りを言っているんだが、こういうこと書くと意図的に荒らす奴とかでそうだな。
0193_gnuzip02/05/02 01:05ID:???
>>192
教えるほうについては、たまたまそういう解答者がいただけだね。
荒らしについては、いつもの彼が連休でどっか逝ってるんでしょう。
0194nobodyさん02/05/02 01:10ID:???
>>192
初心者スレッドは初代からそんな感じですね。
役立つので過去ログ捨てられない。
019518302/05/02 01:14ID:+oT0W11F
>>184-185
下のスクリプトなのですが、local宣言をmy宣言にすると
   Can't declare ref-to-glob cast in my at foo.cgi line 10, near ")="
   foo.cgi had compilation errors.
となってしまいます。どこを直せばよいのでしょうか?

#!/usr/local/bin/perl

$str='ギコギコニャーニャー。トカトントン';
print "$str\n";
&str_omit(*str,16,'…');
print "$str\n";

sub str_omit
{
   local(*str,$size,$omit)=@_;
   local($buf)=substr($str,0,$size);
   
   if($buf!~/^([\x00-\x7f]|[\x81-\x9f\xe0-\xfc][\x40-\x7e\x80-\xfc])*$/){
       $buf=substr($str,0,$size-1);
   }
   if(length($buf)<length($str)){ $buf.=$omit; }
   $str=$buf;
   return "$str";
}

__END__
0196nobodyさん02/05/02 01:16ID:???
>>188
サブルーチンを別ファイルに追い出して 呼出し側で use strict しているとか。
0197nobodyさん02/05/02 01:31ID:???
>>195
型グロブをやめれ。その必要も無いし。
0198nobodyさん02/05/02 01:49ID:???
>>195
敢えて型グロブを使うなら

×
my(*str,$size,$omit)=@_;

○
local *str = shift;
my($size,$omit)=@_;
0199あぼーんNGNG
あぼーん
0200nobodyさん02/05/02 04:20ID:Opu6NMoF
二度と出てくるな!!!!!!!!
0201nobodyさん02/05/02 05:10ID:???
>>199-200
おまえはカルシウム不足だから、煮干しでも喰っておけ(w
0202nobodyさん02/05/02 08:05ID:???
>>200
お前がな。
020319302/05/02 10:34ID:???
>>192
な。ちゃんといるだろ?
0204nobodyさん02/05/02 16:25ID:Opu6NMoF
>>203

お前を見てるとむかつくんだよ。死ね!!!!!!
死ね!

■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■


(省略されました・・全てを読むにはここを押してください)


0205nobodyさん02/05/02 16:26ID:???
掲示板とかのログファイルをダウンロード(閲覧)できないようにするにはどうしたら?
0206nobodyさん02/05/02 16:30ID:???
>205
・.htaccessで制限
・ログの拡張子を.cgiや.plにしてしまう
サーバーによって使えたり使えなかったりするけど。

ちなみにコーディングの話じゃないからスレ違いな。
0207nobodyさん02/05/02 16:37ID:???
>>205
せっかく書いちゃったので。

ログ入れてるディレクトリの .htaccess で
<Files "*.log">
Order allow,deny
Deny from all
</Files>
0208nobodyさん02/05/02 16:46ID:???
>>207
それをしてもCGIから読み込みできますか。?
0209nobodyさん02/05/02 16:52ID:???
>208
出来ない方法を教えられてると思ったか?
出来るよ。
0210nobodyさん02/05/02 16:52ID:???
>>188 >>189
調べたところrequireしたplファイル内のサブルーチンで
宣言するとエラーにならず、メインのルーチン内で宣言するとエラーになるようです。
021118302/05/02 16:56ID:lVIeVo5W
>>197-198
すいません。型グロブというのはよくわかりません。
Cのようなポインタ渡しをPerlで行う方法はありませんか?
021220702/05/02 17:00ID:???
>>208
試せば分かることじゃん。まず自分で試そうよ。
もちろん、悪意のあるアドバイスかもしれんので、apacheの<Files>
の意味を調べてからね。
http://japache.infoscience.co.jp/japanese_1_3/manual/mod/core.html#files

で、CGI内でのファイルの読み書きは、httpd(webサーバ)とは関係ないので、
いくらでもできるよ。
system("cat /etc/passwd");
とか。

0213nobodyさん02/05/02 17:03ID:???
       / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
       | >>209
       | うるせーモカ!うるせーモカ!うるせーモカ!
   ∧ ∧ |/\_________
   (,,゚Д゚)____.
   (つ/~ ※ ※ \
   /※ ※ ※ ※ \
>>205じゃないよ
0214nobodyさん02/05/02 17:07ID:???
>>211
↓調べてみた。型グロブ。
http://www5a.biglobe.ne.jp/~n_rieko/perl/1.htm

リファレンス渡しについては
perldoc perlref
0215nobodyさん02/05/02 18:39ID:???
ユーザに設定を任せた配列をコピーする場合、あればそのまま、
無ければデフォルト値をセットしたいのですが、変数で
よく使われるテクニック(?)が使えませんでした。

@week = qw(日 月 火 水 木 金 土);# ユーザ任せ
my @week = @week || qw(Sun Mon Tue Wed Thu Fri Sat);

これでは $week[0] に配列の要素数が入るだけのようでした。
それで考えたのは下記ですが、もっと簡単な方法ありませんか?

my @week = @week ? @week : qw(Sun Mon Tue Wed Thu Fri Sat);
021621502/05/02 19:01ID:???
すいません、「簡単」というか「普通はこうするよ」ってな
セオリー通りのやり方が知りたいのでした。宜しくお願いします。
0217nobodyさん02/05/02 19:07ID:???
>>215
@week or @week = qw(Sun Mon Tue Wed Thu Fri Sat);

変数だったら $var ||= $default; が普通かなー。
021821502/05/02 19:27ID:???
>>217 それ簡潔でいいですね、有難う御座いました。変数の方もスッキリしてます。
0219nobodyさん02/05/02 21:28ID:???
if ($in{'name'} =~ /★/) { $in{'name'}=~ s/★/☆/g; }
if ($in{'name'} eq "#pass") { $in{'name'} = "管理人 ★"; }

これでキャップと似たようなものになるはずなんですが、
パスを打って書き込むと「管理人 ★」になるはずですが
「管理人 ☆」になってしまいます。

どうすればいいのでしょうか?
022019702/05/02 21:35ID:???
>>211
型グロブがよくわらんって、あなた自分で使っているやつだよ。
local(*str,$size,$omit)=@_; って書いてる、*strの部分。
型グロブには my は使えんから、>>195のエラーが出るって
とこまで書かないとダメかいね。
しかし、なんでスカラ値渡すのに、リファレンスや、型グロブが
必要なのか謎。
0221nobodyさん02/05/02 21:39ID:???
>>219
パス付きでも何でもいいけど、
書き込んだ時にどういう順番で処理されるかをもう一度考えてみれ。

あと、if ($in{'name'} =~ /★/) { $in{'name'}=~ s/★/☆/g; }は
$in{'name'} =~ s/★/☆/g; で十分。
0222nobodyさん02/05/02 21:44ID:???
>>219
#passに★が含まれてるんじゃねーの?
0223nobodyさん02/05/02 21:47ID:???
>219
if ($in{'name'} eq "#pass") { $in{'name'} = "管理人 ★"; }
else{$in{'name'} =~ s/★/☆/g;}
としておけば問題は起こらないと思われ。
これでもまだ「管理人 ☆」になるなら、
1:プレビュー画面を挟んでいないか
2:この処理が2回以上行なわれるようになっていないか
を確認するべき。
022421902/05/02 22:25ID:???
219です。
再確認してみたら

if ($in{'name'} eq "#pass") { $in{'name'} = "管理人 ★"; }
if ($in{'name'} =~ /★/) { $in{'name'}=~ s/★/☆/g; }

と書かれており、上下を入れ替えて試してみたら正常に動作しました。
つまり、ただ自分がミスしてただけでした(w

>>221-223
質問に答えてくれてどうもありがとうございました。
0225nobodyさん02/05/03 01:45ID:???
初心者なんですが、これでまちがいないでしょうか?

if ($in{'name'}=~ /アホ/) { $in{'name'}= 'Dream ★'; }
elsif ($in{'name'}=~ /無能/) { $in{'name'}= '_gunzip'; }
elsif ($in{'name'}=~ /厨/) { $in{'name'}= '弐編'; }
0226pear ◆FRUIT8pk 02/05/03 02:45ID:???
>>225
あ、そのコードを使うなら、下に2行足さないとダメですね

elsif ($in{'name'}=~ /用(無|な)し/) { $in{'name'}= 'pear'; }
else{ $in{'name'}='その他名無し'; }
0227nobodyさん02/05/03 03:03ID:???
500KBほどのファイル300個に対して、ファイル検索をしたいのですが、
効率の良い方法はありませんか?
ファイルの一覧は、@filesに格納してあります。
入力された、$in{'word'}が含まれるファイルをリストアップしたいのです。
よろしくおながいします。
0228nobodyさん02/05/03 03:57ID:???
>227
楽勝だな!
0229nobodyさん02/05/03 07:36ID:???
>>227
{
    my $tmp;
    @files = grep {
        open  FILE, $_ or die;
        read  FILE, $tmp, -s FILE;
        close FILE;
        $tmp =~ /\Q$in{'word'}\E/;
    } @files;
}
0230nobodyさん02/05/03 07:38ID:???
{
    my $tmp;
    @files = grep {
        open  FILE, $_ or die;
        read  FILE, $tmp, -s FILE;
        close FILE;
        $tmp =~ /\Q$in{'word'}\E/o;
    } @files;
}

すまん、/oつけ忘れた。
0231nobodyさん02/05/03 07:57ID:???
全くの初心者です(このスレできくべきなのかもわからない)
でも作りたいものはあります。

まず、お手数かけて恐縮ですがこのサイトを見てみてください。
http://kooks-highhat.com/jpn_index.html
ここの「カラーピックアップシステム」では、何種類もの色と柄を
自由に組み合わせてオリジナルTシャツ作りのシュミレーションができる
ようになっています。
私は、こういったことをTシャツの色と柄ではなく、
「複数種のワイシャツ(写真画像)」と「複数種のネクタイ(写真画像)」を自由に組み合わせて
シュミレートできるようなシステムを作りたいと思っています。

しかしながら全くの初心者のため、どんな言語をどんなふうに使えばできるのか
さっぱりわかりません。
どなたか教えて下さいませんか?
とりあえず「すぐわかるPerl」とかで学べばよろしいのでしょうか?
0232nobodyさん02/05/03 08:37ID:???
>>231
PerlとGDで出来そうだけどね。
Javaとか使った方がパフォーマンスは良いかと。
0233nobodyさん02/05/03 08:39ID:???
>>231
それなら、CGIじゃなくてJavaScriptがイイと思う。
もしくは、Flash
0234nobodyさん02/05/03 08:55ID:6+RS1vf9
>>226
コテハンは死ね!
0235nobodyさん02/05/03 08:56ID:6+RS1vf9
( ´,_ゝ`) プ プ プ プ プ プ プ プ プ プ プ プ
0236nobodyさん02/05/03 09:04ID:6+RS1vf9
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
gdsdgsdgsdgsdgsdgsdgsdgsdgsdgsdgsdgsdgsdgsdgsdgsdgsdgsdgsdgsdgsdgs
xs5r6rs56rs56rs56rs56rs56rs56rs56jtx,7wz434w34w34w34w34w34w34w34w34w34w34,........
0237nobodyさん02/05/03 10:54ID:6+RS1vf9
程度ひくぅ(p
0238nobodyさん02/05/03 10:54ID:6+RS1vf9
このスレの1だが、あまりに程度が低いので終了とします。
0239pear@空気固定 ◆FRUIT8pk 02/05/03 10:55ID:???
>>234
うんうん
0240nobodyさん02/05/03 11:05ID:6+RS1vf9
とんでけ
0241nobodyさん02/05/03 11:09ID:6+RS1vf9
コテハンはみんな無能。
スキルの低い奴ばっかり
0242こてはん ◆W181N/6Q 02/05/03 11:22ID:???
呼んだ?
0243nobodyさん02/05/03 11:23ID:???
>>241
ばかばっkあ(藁
0244nobodyさん02/05/03 11:26ID:6+RS1vf9
コテハンはみんな無能。
スキルの低い奴ばっかり


0245nobodyさん02/05/03 11:48ID:KcX/dW60
サブルーチンの引数でハッシュの参照渡しってどのようにするのですか?
0246nobodyさん02/05/03 12:01ID:6+RS1vf9
コテハンなんてなぁ、所詮はしろーとなんだよ(ワラ
要するに初心者以下のレベルってことよ(ゲラ
おめーら小学校からやりなおせよ(ハゲワラ
0247nobodyさん02/05/03 12:08ID:???
>>245
foo(\%bar);
0248nobodyさん02/05/03 12:10ID:???
229=230=Mr.ohzaki?
0249nobodyさん02/05/03 12:11ID:6+RS1vf9
p;p;p;p;p;p;p;p;p;p;p;p;p;p;p;p;p;p;p;p;
0250_gunzip02/05/03 12:21ID:???
>>246
しろーと か否かはレベルではなく、収入を得ているかどうかです。あしからず。
025124502/05/03 12:21ID:KcX/dW60
sub hashtest(\%){
my (%s) = @_;
my %test;

%h_test = ("1", "h1",
"2", "h2");

%$s = %h_test;
}

これでは駄目でしょうか?
025224502/05/03 12:24ID:KcX/dW60
訂正:
my %test; -> my %h_test
0253nobodyさん02/05/03 12:27ID:???
>>251
my ($s) = @_;

リファレンスは常にスカラー値。
0254_gnuzip02/05/03 12:33ID:???
>>250
出てくるな。ヴォケ
0255nobodyさん02/05/03 12:36ID:6+RS1vf9
>>254
はげ指導医
0256nobodyさん02/05/03 12:37ID:6+RS1vf9
>>254        
激しく同意
0257nobodyさん02/05/03 12:59ID:6+RS1vf9
次は>>226がターゲットです。
0258_nobodyさん02/05/03 13:17ID:???
>>254
それ、オレのコテハンだったのに・・・
もういいもん。
0259_gnuzip02/05/03 13:18ID:???
煽り専用の共用コテハンかと思うて使っただけなのだ。
すまど
0260_nobodyさん02/05/03 13:22ID:???
>>259
じゃ共用でOKです。
0261nobodyさん02/05/03 13:43ID:6+RS1vf9
┌──────────────────────―─―┐
│□ ■2ch BBS . − Microsoft Internet Explorer     囗曰区| |
├───────────────────────┬─┤
│ファイル(F) 編集(E) 表示(V) お気に入り(A) モナー(∀)   |::田|
├────────────────┬──────┴─┤
| ←     →     ×     圍    合  |   Q          》|
| 戻る   進む   中止  更新  ホーム |  検索          |
├────┬───────────┴──┬─┬───┤
│アド レス(D) | □http://www.2ch.net/2ch.html. . |▼|⇒移動|
├────┴───┬┬─────────┴─┴──┬┤
│                ├┤                      ├┤
|2ちゃんねる..    ||                      ||
│2chの入り口..    ||                      ||
│2ch総合案内┌───────────────────────┐
│.           | 2ch.                                    |
│        ├───────────────────────┤
│おすすめ   | 1は不正な処理を行いました 。         ┌───┐  |
│モナー    | 残念ですが1の人生を               | 終了.... |  |
│        | 終了させてあげて下さい。(推奨).     └───┘  |
│        |                                  |
│        └───────────────────────┘
│特別企画        ├┤                      ├┤
├┬──────┬┼┼┬────────────┬┼┤
├┴──────┴┴┴┴──┬─┬─┬─────┴┴┤
│□ エラーが発生しました    |  |  |●インターネット |
└─────────────┴─┴─┴───────┘
0262nobodyさん02/05/03 15:29ID:???
http://cgi.members.interq.or.jp/www1/q-mail/gh/img-box/img20020502225058.jpg
0263nobodyさん02/05/03 15:50ID:7hc2ohlW
タグの中を英字を大文字→小文字にするにはどうすればいいんでしょうか?
ただ、<img src="image.png">などの場合の""の中は変換したくないのですが。
0264nobodyさん02/05/03 15:57ID:???
>263
すっごいめんどうくさい正規表現を組む。
0265nobodyさん02/05/03 16:19ID:???
>>263
$str = join '', map {
    /^</ and $_ = join '', map { /^"/ or $_ = lc; $_ } split /("[^"]*")/; $_
} split /(<[^>]*>)/, $str;

$strにHTML文書を入れれ。
0266nobodyさん02/05/03 16:21ID:???
>265
alt='この中では"が使えます'
が入ってた場合は?
0267nobodyさん02/05/03 16:43ID:???
>>266
$str = join '', map {
    /^</ and $_ = join '',
        map { /["']$/ or $_ = lc; $_ } split /(["'])([^\1]*\1)/; $_
} split /(<[^>]*>)/, $str;

こんな感じかな? 適当スマソ。
0268nobodyさん02/05/03 18:01ID:7wVKBbUQ
#! c:/perl/bin/perl

print "Content-type: text/plain\n\n";
print "Hello Perl !";

これをローカルで試そうとして、http://127.0.0.1/chapter1/1.cgi
と入力しました。が、なぜかダウンロードしてしまいます。(保存するか聞いてくる)
text/htmlにするとちゃんとブラウザに表示されます。
解決策教えてください。
0269nobodyさん02/05/03 18:06ID:???
どういう風に解決したいのかがわからん・・・・
0270nobodyさん02/05/03 18:06ID:???
>>268
いろんなブラウザで試してみた? IEだとたまにそうなる。
0271nobodyさん02/05/03 18:13ID:7wVKBbUQ
>>269
ダウンロードせずに、結果をブラウザで表示させたいんです。

>>270
Netscape6で確かめたらちゃんとできました。Opera6.01だとだめでしたが。
どうもありがとうございました。
0272nobodyさん02/05/03 19:17ID:???
ファイル情報を取得するにはどうすれば良いですか?
0273nobodyさん02/05/03 19:24ID:???
>>272
ファイル情報って例えばドンナンデスカ
0274cova02/05/03 19:26ID:???

スカラ変数 = (stat(ファイルハンドル または ファイル名))[インデックス番号];

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

インデックス番号

0 → ファイルシステムのデバイス番号
1 → iノード番号
2 → ファイルのモード
3 → ハードリンクの数
4 → ファイル所有者のユーザID
5 → ファイル所有者のグループID
6 → デバイスID
7 → ファイルサイズ(バイト単位)
8 → 最終アクセス時間
9 → 最終変更時間
10→ iノード変更時間
11→ ファイルシステムI/Oの最適ブロックサイズ
12→  割り当て済みのブロックサイズ
0275cova02/05/03 19:27ID:???

data.datというファイルの最終アクセス時間を取得する場合は

$accesstime = (stat(data.dat))[8];

という感じ
0276nobodyさん02/05/03 19:29ID:7hc2ohlW
>267
それだと Foo="Bar" の組み合わせが複数あると最初の一つしかできませんでした。
というか自分がその事書いてなかった。。逝ってきます。
0277nobodyさん02/05/03 19:32ID:???
>>275
Web上のファイル情報は取得できないのでしょうか?
0278nobodyさん02/05/03 20:01ID:???
>>276
ごめんなさい……。
直すついでにPerlメモの『HTMLタグの正規表現』(のコメント抜き)を取り入れてみました。
ttp://www.din.or.jp/~ohzaki/perl.htm#HTML_Tag

my $tag_regex_ = q{[^"'<>]*(?:"[^"]*"[^"'<>]*|'[^']*'[^"'<>]*)*(?:>|(?=<)|$(?!\n))};

$str = join '', map {
    /^</ and $_ = join '',
        map { /["']$/ or $_ = lc; $_ } split /(["'])(.*?\1)/s; $_
} split /(<$tag_regex_)/o, $str;

で、試してみたら <!DOCTYPE まで小文字になって鬱。
0279nobodyさん02/05/03 20:07ID:???
>>278
<!DOCTYPE

って、必ず1行目だっけ?だったら、最初の1行目だけスキップすれば?
0280nobodyさん02/05/03 20:20ID:???
>>279
xml宣言もあるのでそうとも限らない.
まあ指摘の通り>>278に特殊な場合の処理を足していけばいいだけだね.
0281nobodyさん02/05/03 20:22ID:???
>>280
カキコしたあとで気づいた…
1行目に記述されてても、複数行に渡って書いているのもあるな…
0282nobodyさん02/05/03 20:40ID:???
>278-281
うまく動きました。ありがとうございました。
あと、<!DOCTYPEは削除してしまうので特に問題ないです。
0283nobodyさん02/05/03 21:05ID:vg/qOBA6
初めまして。
さっそくですが、質問です。
これはどういういみですか?第2引数がわかりません。
push(@sqcookie, "${name}_${value}");
0284nobodyさん02/05/03 21:05ID:???
http://と打つと自動的にリンクされるようにしたいのですが(本文の変数は$FORM{'comment'} )

$url = '([^=^\"]|^)(http\:[\w\.\~\-\/\?\&\=\@\;\#\:\%]+)';
$FORM{'comment'} =~ s/$url/<a href=\"$url\" target=\"_top\">$url<\/a>/g;

こうしても上手くリンクされますか?
028528402/05/03 21:06ID:???
誤字

こうしても上手くリンクされますか?
↓
こうすると上手くリンクされますか?
0286nobodyさん02/05/03 21:09ID:???
>>284

そのコードで動かしてみればいいじゃん
0287nobodyさん02/05/03 21:11ID:???
>>277

ファイル情報って具体的にどういう情報を知りたいんだYO
0288nobodyさん02/05/03 21:11ID:???
>>286
おれもそうおもったw
0289nobodyさん02/05/03 21:13ID:???

$scalar = "10";

$scalar += 10;

とやらないで,いきなり

$scalar += 10;

とやるとスカラ変数'$scalar'にはundef値である0が代入されていますが

このundef値って何て読むんですか?アンダフ値でいいの?
029028402/05/03 21:21ID:???
284です。
実際に試してみましたが、無理でした・・・。

どうすればURLが自動リンクされるのでしょうか?
0291nobodyさん02/05/03 21:22ID:???
>>289
あんでふじゃない?
定義されていないって意味
0292nobodyさん02/05/03 21:29ID:???

なるほど アンデファイン undefine の略か

じゃあ人前で使うときはアンデファインでいいや
0293nobodyさん02/05/03 21:29ID:???
>284
後方参照($1とか$2とか)は知ってる?
029428402/05/03 21:33ID:???
>>293
すみません。
全然知りません。
KENT WEBのCGIにはあったけど・・・
0295nobodyさん02/05/03 21:34ID:???
undefinedだろ ボソ
0296_gnuzip02/05/03 21:34ID:???
     _,∩_         _,∩_           _,∩_
    (_____)ゝ、     (_____)    y     (_____)
    / :: :: :: ヽ 〉     /-‐:: ::‐-ヽ /       / :: :: :: ヽ
   _./ (・ )ll(・ ) ∨     _/  0) i! 0) ∨      _/ ( ・)i!(・ ) ゙、_
 // :: :: ∈ゝ :: ::ヽ   // ::  ‐-‐ :: ヽ    //  :: ー一 :: ヽ\
. ゝ/:: :: ::  :: :: ::ヽ  ゝ/ :: ::  ::  :: :: ヽ   ゝ/ :: ::  ::  :: :: ヽく
   ̄ ̄ | ̄ ̄ | ̄ ̄     ̄ ̄ | ̄ ̄ | ̄ ̄     ̄ ̄ | ̄ ̄ | ̄ ̄
       |     |             |     |             |     |
    ⊂!     !つ        ⊂!     !つ        ⊂!     !つ      
教えてあげないよ!ジャン!
0297nobodyさん02/05/03 21:40ID:???
>>295

そうなの?
0298さゆ ◆ugYa5.J6 02/05/03 21:51ID:???
>>284
()でくくった部分にマッチした文字列は$1とか$2で参照できる。

$FORM{'comment'} =~ s/$url/<a href="$2" target="_top">$2<\/a>/og;
0299nobodyさん02/05/03 21:52ID:???
>>277
HEADでヘッダだけ持ってくれば、
ある程度わかるよん。
0300nobodyさん02/05/03 22:08ID:CL/oAkFo
imode用の「accesskey=」をcgiにリンクさせたいんですが、どうすればいいでしょうか?
0301nobodyさん02/05/03 22:10ID:???
>>284
役に立たない細かい事を色々と。$urlの中の([^=^\"]|^)は余分。

あと、文字クラス[〜]の中ではほとんどの文字はエスケープしなくてもいい。
ただし"-"はマジカルインクリメント(例:[a-z])の効果があるから最初か最後に置く。
[\w\.\~\-\/\?\&\=\@\;\#\:\%]+ → [\w.~/?&=@;#:%-]+

つかここで聞くよりPerlメモを・・・・ (ボソ
0302pear@空気固定 ◆FRUIT8pk 02/05/03 22:27ID:???
>>300
意味がわかりません。

<a href="test.cgi" accesskey="1">
ということかな?
0303nobodyさん02/05/03 22:47ID:???
>>301
マジカルインクリメントは ++ っしょ。
0304nobodyさん02/05/03 23:02ID:apBthE5H
別スレでやったらスレ違いっぽかったので こっちで

\n\n〜 と複数続いていたら
\n一つだけに やるのは どうすればよいのでしょうか?

s/[\n]*$/\n/g
でうまくいきませんでした
0305nobodyさん02/05/03 23:14ID:???
s/\n+/\n/g;
030630402/05/03 23:16ID:???
>>305
ありがと
0307nobodyさん02/05/03 23:33ID:???
>>303
マジカルインクリメントって .. じゃねーの?
030830302/05/03 23:49ID:???
>>307
ちがうー。
0309nobodyさん02/05/03 23:55ID:???
>>308
そなの? perlopのRange Operatorsにそれっぽい事が書いてあったんだけど。
++はどうマジカルなの?
0310nobodyさん02/05/04 00:05ID:???
パターンマッチングについて質問させてください。
テキストファイル内の文字列をjcode.plにてEUCに変換後、
ひらがだけを抜き出したいのですが、検索対象文字リストを
tr/ぁ-ん//cd にすると結果が文字化けしてしまいます。
この場合、検索対象文字リストはどのように指定したら良いのでしょうか?
031130302/05/04 00:08ID:???
>>309
Perlでは、数字じゃないものもインクリメントできるから、マジカル。
perlop の Auto-increment and Auto-decrement のとこに
「オートインクリメントオペレータには、ちょっとしたマジックが
仕込んである」と書いてある。

perlopには
「レンジオペレータは、数字じゃないものが来た時、マジカルインクリメント
 アルゴリズムを使う」
って書いてあるよぅ。
0312nobodyさん02/05/04 00:09ID:???
>>310
オレは、そういうときは jperl を使います。
031331002/05/04 00:12ID:???
>>312 さん
やっぱりjperl使うしかないのですかねぇ・・・。
0314nobodyさん02/05/04 00:16ID:???
>>310
>>3の[お薦め]に載ってるPerlメモってサイトを参考にしてみては?
0315nobodyさん02/05/04 00:16ID:???
>>311
んー。諒解しました。本家は ++ なわけね。
0316nobodyさん02/05/04 00:26ID:GNJILI/X
質問です。
ログファイルの$hoge[3]にそれぞれ数字がありまして
その数の合計を求めるにはどうすれば宜しいのでしょうか?
ログファイルは\tで区切ってあります。
031731002/05/04 00:26ID:???
>>314 さん
実はすでにあちらのメモも試したのですが、うまくいかなかったのです。
でも、実際のところはどこがうまくいっていないのか理解できていないので
うまく適用できていなかったのかもしれませんが・・・。
0318nobodyさん02/05/04 00:33ID:???
>>316
改善されてねーな

112 :nobodyさん :02/05/03 18:40 ID:???
>>110
「ログファイルの$hoge[3]」って何よ。
「ログファイルは\tで区切ってあります」ってのはレコード区切りが\nでデータ区切りが\tって事か?

わかるように書いてくれ。いや、大体わかっているんだけどな。
0319nobodyさん02/05/04 00:35ID:???
>>316
\tで区切ってるログファイルの4番目のとこに数字があるってこと?

$count=0;
open(FILE,"./$filename");
while(<FILE>){
@hoge=split(/\t/);
$count+=$hoge[3];
}
close(FILE);
print $count;
0320nobodyさん02/05/04 00:46ID:???
>>318
漏れもワラタ。
0321nobodyさん02/05/04 00:49ID:???
>>310
$_ = '文字コードがEUCの場合ね';
s/\x82[\x9F-\xF1]//g;
print;

これでひらがなだけ削れる
逆は自分で考えれ
0322nobodyさん02/05/04 00:49ID:???
>>317
$hoge ="123あいうえ456さしすせ-*/アイウabcdエオ";

$Zhiragana = '(?:\xA4[\xA1-\xF3])';
$hoge =~ s/$Zhiragana//g;

EUCこれでできるよ。
実行したら print $hoge; で表示されるのは
123456-*/愛上尾アウabcdエオ

あなたはどう書いてるの?EUCにコンバートするところとかは?
0323nobodyさん02/05/04 00:53ID:/IfudcOZ
他のサーバーにある画像ファイルのファイルサイズを取得するにはどうすれば良いでしょうか?
0324nobodyさん02/05/04 00:54ID:???
上のShift_JISだった
EUCはこうか
s/\xA4[\xA1-\xF3]//g;
0325321,32402/05/04 00:56ID:???
>>322が書いてるし 逝ってこよ…
032631002/05/04 00:56ID:???
>>321 ( >>324 ) さん
ありがとうございます!うまく動きました。
trを使っていたのが間違いだったのでしょうか??
兎にも角にも、ありがとうございました。
0327nobodyさん02/05/04 00:56ID:???
>323
LWPを使う。
0328nobodyさん02/05/04 00:57ID:???
(´-`).。oO(今日は妙に活気があるね…)
0329nobodyさん02/05/04 00:58ID:???
>>322
実行されて表示されるの違った結果かいちゃいました。ごめん
0330nobodyさん02/05/04 00:59ID:???
>>328
全部自作自演です。
033131002/05/04 00:59ID:???
>>322 さん
お答えありがとうございます。そちらも試したのですが
SCALAR(0xc963c4)
のエラーがでてしまいます・・・。なぜでしょう?
0332_gunzip02/05/04 01:00ID:???
質問するほうも、答えるほうも、はっきり言わせてもらうが
レベルが低いよ。
033331002/05/04 01:02ID:???
>>322 さん
とりあえず、入力される文字列は全て
jcode::convert(\$hoge, 'euc');
にてeucにコンバートしております。
で、とりあえずいまはWin2000上のコマンドプロンプトで動かしているので
出力前にsjisにして出力しています。
0334nobodyさん02/05/04 01:04ID:/IfudcOZ
>>327
LWPですか・・
ちょっと調べてきます・・・
0335nobodyさん02/05/04 01:05ID:???
>>332
(´-`).。oO(はっきり言わせてもらうがレベル高かったら質問しないよ…)
033631002/05/04 01:06ID:???
>>322 さん
何度もレスすみません。動きました。こちらの記述ミスでした。
ただ、「イ」が消えてしまうのはやはりコード上の問題でしょうか?
0337nobodyさん02/05/04 01:07ID:???
(´-`).。oO(>>332 は放置で…はいはい、次の方〜)
0338nobodyさん02/05/04 01:08ID:???
★★★ 質問者はコードを晒せ ★★★
0339nobodyさん02/05/04 01:09ID:???
>>332
騙りウザイ
0340nobodyさん02/05/04 01:10ID:???
if ( $situmonsha{'sex'} == $female ) {
 print "写真うpしる!話はそれからだ!\n";
}
else {
 print "逝ってヨシ!\n";
}
0341nobodyさん02/05/04 01:11ID:???
(´-`).。oO(_gunzipは共有コテハンじゃないのにねぇ・・・はい、次の方〜)
034231602/05/04 01:15ID:GNJILI/X
>>319
エラーになっちゃいました。
$count+って使えます?
0343さゆ ◆ugYa5.J6 02/05/04 01:20ID:???
>>342
うちではエラーでないぞ。
コピペミスじゃない?
0344nobodyさん02/05/04 01:35ID:???
>>342
+ と += の違い分かりますか?
0345_gunzip02/05/04 01:37ID:???
レベルが低いと言ったのは、1 に書いたことを無視した質問のしかたや
過去レスで何度も答えている内容をいまだに質問してくるということで、
そのために答えるほうもまとを得ない答えになってしまっているということ。
034634202/05/04 01:38ID:???
>>344
わかりませんです。
0347nobodyさん02/05/04 01:43ID:???
>>346
perlの本を読み直しましょう。
本もってないなら、買ってね。
0348nobodyさん02/05/04 01:50ID:???
>345 =~ s/_gunzip/_gnuzip/
暇な奴だな(w
0349pear@空気固定 ◆FRUIT8pk 02/05/04 01:52ID:???
>>344
$x += 50; # $xに50を足す
$x = $x + 50; # $xに50を足す
0350nobodyさん02/05/04 01:56ID:???
>>348
漫画でよくあるネタだよね(w
↓ここに投稿したくなった。
バカの一つ覚えな展開2
http://comic.2ch.net/test/read.cgi/comic/1019059437/
0351nobodyさん02/05/04 01:58ID:???
↑何が言いたいのかわからん。
0352nobodyさん02/05/04 02:00ID:???
どうでもいいネタでいつまで盛り上がってるんだ。
0353nobodyさん02/05/04 02:08ID:???
LWPって何?
0354nobodyさん02/05/04 02:11ID:???
>>353
http://www.google.com/search?hl=ja&q=lwp%82%C1%82%C4%82%C8%82%C9%81H&btnG=Google+%8C%9F%8D%F5&lr=lang_ja
035535202/05/04 02:13ID:???
>>350 よくわからん。
>>353 LibWww-Perl の略じゃないの?
http://www.linpro.no/lwp/
Perl関連でなけりゃLight Weight Processの略かもしれないがな。
0356nobodyさん02/05/04 02:47ID:???
>>327
他の方法はないですか?
0357nobodyさん02/05/04 02:54ID:???
なぜlwpでは駄目だと判断したのかを書いたら?
0358ん〜さっぱわからん02/05/04 04:11ID:qVSStWkL
とある、ファイルがある。
んで、そのファイルには20行のテキストデータがあって
その1行の文字数はマチマチである。

さて、このファイルの5行目から10行目までのデータを
読み込みたい。

でも、ファイル全部を読み込んで後から整形するのはいやだ。
どうすればいいのだろうかぁ?
0359nobodyさん02/05/04 04:13ID:???
>>356
あとは、wgetやWWWcp等の外部コマンドを呼ぶしか、簡単な方法は
無いと思う。
めんどくさい方法でもいんなら、Socket使ってうりうりやる方法もある。
0360nobodyさん02/05/04 04:15ID:???
>>358
foreach(1..5) {
 <IN>;
}
foreach(1..5) {
 push(@data,<IN>);
}
でどうかね。
0361nobodyさん02/05/04 04:19ID:Wv66U69I
FreeBSDのWebサーバ上に、簡単なテストのPerlCGIを設置しよう
としているのですが、ブラウザから呼び出すと何故か動きません。
「500 Internal Server Error」とエラーメッセージが出てしまいます。
文字コードも置き場所もパーミッションも.htaccessも問題無いと思うし、
TELNETで単体実行してもちゃんと動きます。
エラーログを見ると、「Premature end of script headers」となっています。
・・・スクリプトヘッダーの時期尚早の終わり?とな?ん?
他の人が作っていたCGIを見てみても、とりあえず一行目の
「#!/usr/local/bin/perl」というのは一致しているし・・・

皆さん、どうぞ知恵をお貸し下さい。
0362ん〜さっぱわからん02/05/04 04:25ID:qVSStWkL
>>360
そんなに簡単にできちゃうの?もうずいぶんと長い間悩んでいるのだが
でも、それって結局ファイル全部読み込んでるのと同じじゃないのだろうか?
0363nobodyさん02/05/04 04:28ID:???
>>361
改行コードがDOS改行になってるっていうオチはないか。
とりあえず、telnet経由で単独で実行した結果の先頭5行くらいコピペ
してちょ。
036436502/05/04 04:29ID:???
>>362
んなこたーない。
1〜5行目までは読んで捨ててるのでメモリに残らないし、
11行目以降は、読んでさえいない。
0365なんとなくわかってきた02/05/04 04:38ID:qVSStWkL
>>364
んん、なんとなくわかってきますた。すいませぬ。

つまりは2ch掲示板の
最新50 1-100 100-200 200-300
っつーのをやりたいのですが、やはりこの方法でやっているのでしょうか?
036636102/05/04 04:39ID:Wv66U69I
>>363
秀丸を使って、EUCからS-JIS、JIS、UNICODEにUTF-8まで試してみました。
以下は単独実行の結果です。
dalrq000@sv29:~/public_html/acjik/abcd/cgilib>./jiktes.cgi
Content-type: text/html

<html>
<body bgcolor=silver text=navy>
<h1>CGI TEST</h1>
length:<p>
IP Addres:<p>
data:<p>
(以下略)
・・・どんなでしょうか?
0367nobodyさん02/05/04 04:44ID:???
>>366
っかしいなぁ。
出力はそれでOK。
ためしに、
#!/usr/local/bin/perl
print "Content-Type: text/html\n\nほげほげ";
だけ書いたスクリプトだとどうなるかな。これでだめなら、
webサーバの設定(httpd.confか.htaccess)がおかしいと思う。
0368nobodyさん02/05/04 04:46ID:???
>>365
read.cgiはperlじゃなくてCでしょ。
やってることは同じだと思うけど。
0369わかりましたぁ!02/05/04 04:50ID:qVSStWkL
>>368
ですよね。なんとか理解してきました。
早速試してみます。ありがとうございます。

・・・しかし、随分長い間Perl書いてるのになんで
教える側にまわれないんだろう?(ショボン
037036102/05/04 04:58ID:Wv66U69I
>>367
.htaccessは以下の二行だけです。
AddType application/x-httpd-cgi .cgi
AddType application/x-httpd-cgi .cgi/

他の人が作成してちゃんと動いているCGIのディレクトリ内には、
.htaccessはありません。当然削除して試してみましたが駄目でした。
更に、その人のディレクトリに私のCGIを置いて試してもみました。

httpd.confの方は見る事も禁止されてるので、なんとも言えません。
0371nobodyさん02/05/04 05:05ID:???
>>370
で、その人のを自分とこ置いたらできたの?
>>367の2行だけのスクリプトはどう?
037236102/05/04 05:37ID:Wv66U69I
>>371
それが・・・それらのファイル、エラく大掛かりなんで、ドコを
どうイジったらいいか分析するのに凄く時間が掛りそうなんです。
とりあえず移動させずに、ブラウザからアクセスするとForbiddenと
言ってきます。これは、一応CGIの実行結果みたいです。
関連するらしいファイルをまとめて(怪しいですが)私のトコにコピーし、
ブラウザから呼び出してみると・・・500 Internal Server Errorになります。

あ、「ほげほげ」もやっぱり駄目みたいです。
0373nobodyさん02/05/04 05:39ID:???
>370
オマエには無理じゃないのか?
FreeBSDのWebサーバ上にCGIスクリプトをアップしてるわけだろ。
秀丸で文字コード変換を試したっつーことはWinからアップしてるだろ。
アップはFTPだと思うが、結局アップするときにバイナリモードでやったのか?
オマエのことだから自動変換かアスキーモードでやっていないか?
あとは、パーミッションは大丈夫だと言ってるが、上位ディレクトリのパーミッション
まで確認できてるのか?
それと、371 が書いてることも合わせて確認しろ。
0374nobodyさん02/05/04 05:40ID:fEiPwaMd
すんません誰か力かしてください。
LWPで取得したデータを$xに入れる。
その$xをwhileで処理させる超シンプルなソースお願いです。
0375nobodyさん02/05/04 05:45ID:???
foreachを使った制御構造とwhileを使った制御構造がありますが
foreachでも(1..5)とか指定すればwhileで5回繰り返しやったのと
結果以外の部分でも同じ位の負荷だとかになるんでしょうかね?

後、どっかのスレで書けるなら全部whileの方がいいと聞きましたが
全部読む必要があるときなんかもwhileで書いた方が良いんですかね?
037636102/05/04 05:56ID:Wv66U69I
>>373
ん?確かにWinからですが、CGIの類ってASCIIで
転送するんじゃなかったんですか?
パーミッションはpublic_html以下から、とりあえず777にしてみてます。
037736102/05/04 06:09ID:Wv66U69I
>>373
CGIの類っちゅうか、スクリプト言語の類ですね。
037837102/05/04 06:09ID:???
>>376
ASCIIでやったほうが、改行コード変換してくれるので楽だけど、
できればあらかじめUNIX改行(LF)にしておいて、バイナリモードで
転送したほうが確実。
(>>363で改行コードの指摘したのはそれなんだけど)

んで、Forbiddenってのは、CGIの実行結果じゃく、サーバが返してる
エラーだと思うんだけど、それはおいといて、

まずは>>367の2行スクリプト試してよ。
不安なので、public_html/ 直下に置いて、.htaccess アリの場合と
無しの場合と、telnet で直接実行した場合の3通りの結果よろしく。
037936102/05/04 06:42ID:Wv66U69I
>>378
EUCにしておいてバイナリモード転送。・・・同じですね。
でも、363の内容で問題が起こってたとしたら、
単独実行も出来なかったのでは?

その人は403.htmlってファイルを自分で用意してて、
それを表示させてるみたいです。

試しましたよ。「ほげほげ」って、その2行スクリプトの事です。
先程改めて、EUCにしておいてバイナリ転送して試しましたが、駄目みたいです。
public_html直下に置く件、.htaccessの件、直接実行の件、
試しましたがどれも駄目みたいです。
038037102/05/04 06:51ID:???
>>379
EUCは文字コードで、改行コードとはぜーんぜん関係ないんだけど、
それはまぁいいや。

とりあえず、例の2行スクリプトがだめなら、君のせいじゃなくて、
サーバの設定の問題しか考えられないので、管理してる人に
相談しよう。
0381nobodyさん02/05/04 06:57ID:???
AddHandler cgi-script .cgiは?
038236102/05/04 07:24ID:Wv66U69I
>>380
へー、今までそれらはセットになってるんだと思っでもてました。メモメモ。
でも、373の彼もその辺まで考えてたとは思えないなー?

もう5日前からサポートにメールしてるんですが、リアクションが無いんです。
GWをフルに休んでるのか、誰もメールをチェックしてないのか・・・
太陽が眩しい。とりあえずもう寝ます。お付き合いありがとうございました。

>>381
ん?・・・それ、今.htaccessに追加してやってみました。駄目です。
0383nobodyさん02/05/04 07:35ID:???
う〜ん、つ〜かさ
結局今まで出ているエラーは

Premature end of script headers

これなんでしょ?だとしたら、cgi は動いているんだよ
で、俺が見て気になった部分なんだけど

#!/usr/local/bin/perl
print "Content-Type: text/html\n\nほげほげ";

↑これを

#!/usr/local/bin/perl
print "Content-Type: text/html\r\n\r\nほげほげ";

↑こうやっても駄目カナ?
以前、一度これではまった覚えあるから…
0384nobodyさん02/05/04 07:38ID:???
どうせperlのパス間違ってるとかScriptAliasが設定してあるとかだろ。
038538302/05/04 07:43ID:???
もし、↑で動くんだったら、conf/mime.types がオカシイという落ちになる
0386nobodyさん02/05/04 07:45ID:???
>>384
(゚Д゚)ハァ?

何言っているの君?

>>361
> エラーログを見ると、「Premature end of script headers」となっています。
> ・・・スクリプトヘッダーの時期尚早の終わり?とな?ん?
> 他の人が作っていたCGIを見てみても、とりあえず一行目の
> 「#!/usr/local/bin/perl」というのは一致しているし・・・

日本語読めますかぁ?
0387nobodyさん02/05/04 07:46ID:???
>>382
フリー鯖ならちょっと試してみたいのでどこなの教えてほしいんだけど、
telnet使えるってことはフリーじゃないか。
0388nobodyさん02/05/04 07:53ID:???
Premature end of script headers
ってスクリプトが実行できていないときにも出るよ。
0389nobodyさん02/05/04 07:55ID:???
>>383 例えば?
0390nobodyさん02/05/04 07:55ID:???
>>383
#!/usr/local/bin/perl
の行が間違ってても、Premature end of script headers になるよん。

なので、改行がDOS改行(CR+LF)になってると、
「/usr/local/bin/perl^M」ってファイルを実行しようとして、上記のエラーになる。

ただしその場合、コマンドラインから実行しようとすると、コマンドが
見つからないっていうエラーになるはずなので、今回はあてはまらないんだよね。
0391nobodyさん02/05/04 08:05ID:???
>>389
鬱。間違えた

>>388 が正しい。ゴメソ

>>398
> ただしその場合、コマンドラインから実行しようとすると、コマンドが
> 見つからないっていうエラーになるはずなので、今回はあてはまらないんだよね。

だから、cgi は動いていると判断するのが妥当だろ。なんで、.htaccess に
話をもって行くのが疑問…
0392nobodyさん02/05/04 08:06ID:???
設定がうまくいってなくても
Premature end of script headers でるよん。
0393nobodyさん02/05/04 08:13ID:???
Premature end of script headers でるでる言われても例示してくれないと説得力無いな。。。
0394nobodyさん02/05/04 08:26ID:???
Premature end of script headers は suExec失敗したり、
いろいろなケースが考えられるんじゃないかな?
質問者の利用している環境がよくわからないので、何とも言えませんが。
Perlスクリプトとしては実行できているのに、CGIでは動作していない
ようなので、あらゆる可能性を考えてみるのも悪くないと思うよ。
まぁ、こういう時は、単純なケアレスミスだったりするかもしれないけど。
0395nobodyさん02/05/04 13:02ID:KUHaKz9T
#! c:/perl/bin/perl

open(FILE,"./log.txt");
@data=<FILE>;
close(FILE);

$num=1;
$i=0;

print "Content-type: text/plain\n\n";
while(($data[$i] ne '') or $num<8){
($name,$message)=split(/\t/,$data[$i]);
print "名前$num:$name\n";
print "メッセージ$num:$massage\n";
$i++;
$num++;
}

logファイルを読み込んでそれをただブラウザに表示させるプログラムです。
logファイルから読み込んだデータが8行以上の場合は7行まで表示させて、7行に満たない場合は
そこで表示を終了させたいのですが、データが7行未満しかないときでもwhile文を抜け出してくれません。
配列にデータが入ってない場合はどのように条件にしたら良いのでしょう。
0396nobodyさん02/05/04 13:25ID:???
>>395
or ぢゃだめじゃん・・・
039739502/05/04 13:36ID:???
>>396
どうもです。andで成功しました。
恥ずかしいミスだぁ・・・

0398nobodyさん02/05/04 14:54ID:???
KENTさんの掲示板でトリップを使おうとして
17氏のbbs.cgiからトリップの部分だけコピペしましたが動作しませんでした・・・。
どうすればトリップが使えるようになりますか?
0399nobodyさん02/05/04 15:06ID:???
>398
名前欄に「#〜〜」と入れる。

というネタレスはさておき。
$name = $in{'name'};
$name =~ s/◆/◇/g;
if($name =~ s/#(.+)$//g){
$key = $1;
$salt = substr(substr($key, 1, 2) . "H.", 0, 2);
$salt =~ tr/:;<=>?\@[\\]^_`/ABCDEFGabcdef/;
$salt =~ s/[^\.\/0-9A-Za-z]/\./g;
$trip = substr(crypt($key, $salt), -8);
$name .= "◆$trip";
}

漏れはこうやって使ってる。
0400さらなる謎02/05/04 15:50ID:qVSStWkL
>>358なんだけど・・・

>>360さま

下のようなテストのスクリプトを書いて試してみたんだけど
#(ok)の方では正しい答えがえられるのに
コメントアウトしてある#(ng)では11行目以下のデータも
@LOGに読み込んでしまうのですます、はい。
なんでだろ?同じ筈なのに・・・・謎。

#!/usr/local/bin/perl
#==========================================
open(IN,"test.dat");

foreach(1..5) { <IN>; }
foreach(1..5) { push(@LOG,"".<IN>); } #(ok)
#foreach(1..5) { push(@LOG,<IN>); } #(ng)
close(IN);

#==========================================
print "Content-type: text/html\n\n";
print "<HTML>\n";

foreach $data(@LOG){
print "$data<BR>\n";
}

print "</HTML>\n";

exit;

サーバーはfreeBSDのアパッチ。
0401nobodyさん02/05/04 16:24ID:638lh9Jm
ユーザ管理用のプログラムを作っています。
そのデータ管理ファイル内にパスワードを
平文のままで保存しておくとセキュリティー上問題が
在ると思います。
しかし、ユーザIDとメールアドレスをユーザが入力すると
その2つと一致したデータのパスワードを
相手にメールで通知したいと思います。

そこで、そのようなプログラムはどのように組めばいいのでしょうか?
暗号・復号可能なパスワードのロジックなど存在するのでしょうか?
アドバイスをお願いします。
0402nobodyさん02/05/04 16:29ID:???
ごめん。そろそろ>>283教えてください。
0403ん〜02/05/04 16:30ID:qVSStWkL
>>401
ん〜、crypt。。。じゃダメなの?
0404nobodyさん02/05/04 16:33ID:???
>283=>402
あまりに基本過ぎてネタとしか思えないんだが。
第一引数の配列の末尾に第二引数を要素として加える。
第二引数はダブルクォーテーションとして囲まれてるから文字列として加えられる。

頼むから初歩の初歩的なことくらい自分で勉強してくれ。
0405nobodyさん02/05/04 16:39ID:638lh9Jm
>>403
cryptだと、ユーザが入れたパスワードが
在っているかどうかのチェックはできると思うのですが、
パスワードを忘れたユーザに対して登録しているメールアドレスに
通知するとき、もとのパスワードはわからないですよね?

かといって、平文で保存しておくと、セキュリティー上やばいでしょうから。
皆さんのお知恵をお借りしたいのです。
0406nobodyさん02/05/04 16:56ID:???
>>405
xorでも取れば?
8文字なら64bit通りの可能性がある暗号化となる。
0407nobodyさん02/05/04 17:00ID:???
>>404ありがとう。${name} ${value}こいつらがわからんかったんです。
$_みたいなものですか?
while (($name, $value) = each %cookie) {
$name =~ s/([$encode])/'%'.unpack("H2", $1)/eg;
$value =~ s/([$encode])/'%'.unpack("H2", $1)/eg;
$name =~ s/\s/\+/g;
$value =~ s/\s/\+/g;
push(@sqcookie, "${name}_${value}");
}
0408nobodyさん02/05/04 17:05ID:???
>407
$sqcookie[@sqcookie] = "${name}_${value}";

こういう書き方をすればわかるかな?
強引なやり方だが意味は同じ。

${name}は$nameと同じ。
何でそういう事をしているかというと、$name_$valueだと、
「$name_」と「$value」を足す事になって、「$name」と「_」と「$value」を足す
という意味にはならないから。
変数にどの文字が使えるか考えればわかる事。

${name}という表記の仕方は覚えておくといいよ。
変数名に変数を使いたい時とかに役立つ。
質問の意図を一部誤解していたみたいですまない。
0409nobodyさん02/05/04 17:34ID:???
>405
複合化できたら平文で保存するのとあまりセキュリティ上の危険さは変わらないと思うけど。
(自分で複雑なのを組むとか言うなら別だけど。)
それなら、確認のメール入れてそこからアクセスして変更ってのが一番楽かと。
041036002/05/04 17:39ID:???
>>400
スマソ。そうなるね。
#(ok)のようにしてちょ。
もしくは、明示的に、
push(@data,scalar(<IN>));
と。
0411nobodyさん02/05/04 17:40ID:???
>>405
メールアドレスをキーとして、暗号化しよう。
そしたら、メールアドレスが分かる場合だけ元に戻せる。
0412nobodyさん02/05/04 17:47ID:???
クッキーの読み込みで、
a1
a:aaaa
*
a2
a:aaa
*
a3
a:aa
*
こんな感じで保存されているクッキーがあって、
$COOKIE{a}と書くと
aaaaのみ表示されて、
aaaa
aaa
aa
と表示されません。
どうすればいいのでしょうか?
0413nobodyさん02/05/04 17:52ID:???
>>412
↓これ、どういう意味?
a1
a:aaaa
*
a2
a:aaa
*
a3
a:aa
*
041441202/05/04 17:55ID:???
>>413
クッキーにそうやって保存されています。
041541302/05/04 17:58ID:???
>>414
改行されてるのは、9個の別々のクッキーが得られるってこと?
それとも、これ繋がってるの?
041641202/05/04 18:10ID:???
一つのファイルの中に
a1
a:aaaa
*
a2
a:aaa
*
a3
a:aa
*
このように書かれています。
*で区切られています。
a1
a:aaaa
*
これで一つです。

041741502/05/04 18:13ID:???
>>416
ファイル??クッキーじゃないの?
まぁいいや。で、

a1
a:aaaa

の a1 ってなに?コメント?
a:aaaa の a と aaaa って何? a が キーで、aaaa が値?
041841202/05/04 18:20ID:???
>>417
そうです。a が キーで、aaaa が値です。
041941502/05/04 18:31ID:???
>>418
こんなんでいんかな・・・

open(IN,"cookie.txt") || die;
while(<IN>) {
    chop($_ = <IN>);
    $COOKIE{$1} .= ($COOKIE{$1} ? "\n" : undef) . $2 if /(.+?):(.+)/;
    <IN>;
}
close(IN);
042041202/05/04 18:40ID:???
>>415
すみません。ファイルでは無くてクッキーでした。
説明が足りませんでした。
0421nobodyさん02/05/04 18:52ID:???
>>420
つーと、>>416 は、なんかの変数に入ってるの?
改行されてるのは何故?
つーか、>>416の文字列は、どっからコピペしたの?なんかの出力?
042241202/05/04 18:56ID:???
>>421
失礼ですがクッキーの事はご存知なんでしょうか?
042342102/05/04 19:01ID:???
>>422
うん。掲示板作る時に使ったよ。
で、オレが知ってるcookieは、$ENV{'HTTP_COOKIE'};に渡されるんだけど、
>>422のクッキーっていったいなんなの?
042441202/05/04 19:12ID:???
>>423
すみません。ウタガテマシター。
($dummy,$biscuit)=split(/=/,$ENV{'HTTP_COOKIE'});
@cookie=split(/,/,$biscuit);
foreach (@cookie){
($cookname,$cookvalue)=split(/:/,$_);
$cookname=~s/ //;
$COOKIE{$cookname}=$cookvalue;
}
取得の方法は↑です。
僕が利用したいクッキーはチェックを入れた項目のみをクッキーに保存しています。
バナナにチェックを入れるとバナナ:はい
となります。
で次にジュースにチェックを入れるとすると
バナナ:はい
ジュース:はい
とならずに
そのままクッキーに上書きされて
ジュースのみはいとなってしまいます。
これを
バナナ:はい
ジュース:はいとバナナの下に追加で書き込めるようにしたいです。
先程のやり方もありますが、メンドクサソウデスノデこの方法解りますか?
0425nobodyさん02/05/04 19:23ID:???
>>424
うっかりソースを晒したからCGIスレの黄金厨118だって事がバレちまったな(w

で、この問題については他のスレできちんとした答えをもらっているだろ?
キーが全てaだったらそりゃ上書きされる。キーを変えれ。ハッシュを学べ。
042641202/05/04 19:25ID:???
すみません。簡単に説明すると掲示板でメールをクッキーに保存して
読み込むとhoge@***となります。
そのhoge@***を消してまた情報を送信するとクッキーには
2度目に記入したメールアドレスがクッキーのメールの部分に上書きで保存されるとします。
そこを、
メール:hoge@***
メール:2度目に入力したもの
このようにクッキーに保存して、
1度目に記入したメール
hoge@***読み込んで
2度目に記入したメール
2度目に入力したもの
と読み込みたいです。

042741202/05/04 19:28ID:???
CGIスレに書き込んだのは一度きりで、
あれは偽者です。
信じるか信じないかはあなたの自由ですけど、、、。
0428nobodyさん02/05/04 19:36ID:???
>426
$cookie{'mail1'}にまず最初のクッキーを保存。
2度目では$cookie{'mail1'}を$cookie{'mail2}にコピーしてから、$cookie{'mail1'}を上書き。
同じキーでは無理だから、別のキーを考える。
0429nobodyさん02/05/04 19:39ID:???
>>427
#!/usr/local/bin/perl

print
"Set-Cookie: a=aaaa\r\n",
"Set-Cookie: a=aa\r\n",
"Set-Cookie: a=aaa\r\n",
"Set-Cookie: a=a\r\n",
"Content-type: text/html\r\n\r\n",
$ENV{'HTTP_COOKIE'};

適当な名前(cookie.cgiとか)を付けて保存して実行してみれ。
やろうとしている事が無謀だとわかるだろ。
あと、Cookie読む時はエスケープも解除してやれ。
043042302/05/04 20:24ID:???
>>424
print $ENV{'HTTP_COOKIE'};
すると、
dmy=バナナ:はい,ジュース:はい,メール:hoge@***,メール:foo@+++
って入ってるなら、
$COOKIE{$cookname} .= ($COOKIE{$cookname} ? "\n" : undef) . $cookvalue;
そうじゃないなら、
Set-Cookie: dmy=バナナ:はい,ジュース:はい,メール:hoge@***,メール:foo@+++
する。EXPIRESも付けたきゃ勝手に付けてくれ。
0431nobodyさん02/05/04 20:37ID:???
>>430
同じキーを持つクキーはそもそも保存されないんだってさ
043243002/05/04 21:06ID:???
>>431
うん。>>430の例もキーはdmy一つだけ。
0433nobodyさん02/05/04 21:21ID:???
>>427
  _____________
 (つかえねぇ奴らだな。氏ね!!)
   ̄ ̄ ̄V ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
   | ̄ ̄ ̄ ̄ ̄|             ___________
   | ∧_∧  |    ∧_∧   /
   | ( ´∀`)  |    (´∀` ) <オマエモ・・・オレモナー??
   | ( ???:bI ) .|    ( Id:??? )   \
   | | |  |  .|    | | |       ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
   | (__)_) .|     (_(__)
   . ̄ ̄ ̄ ̄ ̄

※偽者防止のため、IDは必ず出しましょう。


PC初心者でもやってるぞ。
0434nobodyさん02/05/04 21:22ID:???
>>432
スマソ。逝って来る。
0435nobodyさん02/05/04 21:24ID:GvcNIgW1
サブルーチンについての質問です。
sub function
{
######省略
}

を呼ぶとき
function(); と &function;
の2つのやり方あるみたいですけど、どっち使ってもいいの?
0436nobodyさん02/05/04 21:26ID:???
>435
後者の方がいい。
汎用性のあるものを組みたいなら特に。
043743502/05/04 21:29ID:GvcNIgW1
>>436
ありがとう。
自分が持ってる参考書にfunction()しか載ってなかったから使っちゃいけないのかと思ったよ。
0438 02/05/04 21:35ID:dGBL2sA8
画像スケールを縮小してサムネイルをつくってアルバムにするCGIを作りたいんですが
どうしたらよいのでしょうか?
0439412 ◆ZJG8NJmQ 02/05/04 21:41ID:???
#!/usr/local/bin/perl

print "content-type:text/html\n\n";
ここからまずフォームを作ります。

それからログファイルを開いて読み込みます。
で表示します。

ログ書き込み処理
\nや<>とかを変換します。
そうしたらログを開いて書き込みます。
そして閉じます。
0440nobodyさん02/05/04 21:41ID:???
>435
Perl5以降ならfunction()でいいと思うけど。
普通のプログラミング言語ではfunction()と書くので、&を付けると嫌われる。
ただでさえスカラーの前に$とか付いて笑われているのに。
一生Perlしか使いそうにないなら&functionでもいいけど。
ただし、&functionとfunction()では若干動作が異なるとだけ覚えておいてください。
0441nobodyさん02/05/04 21:56ID:???
つか&functionだとプロトタイプが効かねぇのが嫌です。

尤も、「貧弱なプロトタイプなんぞいらん」とか
「関数なにそれ?メソッドのこと?」って人には関係ない事ですが。
0442nobodyさん02/05/04 22:24ID:???
index.htmlのないディレクトリにアクセスするとファイルリストが表示されるものがあります。
しかし私のサイトではそれが許可されていません。
perlプログラムであるディレクトリ以下を全部回って
それぞれにindex.htmlファイルを作っていってくれるプログラムを知りませんか。
0443nobodyさん02/05/04 22:26ID:3kOee6Z3
あげるの忘れた。
0444nobodyさん02/05/04 22:34ID:???
>知りませんか。
作ればいいじゃん。
0445nobodyさん02/05/04 22:39ID:3kOee6Z3
>>444
あっさり言いますけど。間違えてサーバー内で無限ループって恐怖があって。
0446sage02/05/04 22:40ID:???
再帰の深さに制限付ければOK。
0447nobodyさん02/05/04 22:45ID:???
下げるの忘れた。深さは2つまででいいですが。
0448さゆ ◆ugYa5.J6 02/05/05 00:01ID:???
>>442
スレ違いな回答でわるいんだけど、
.htaccess に
Options +Indexes
って一行書いておくと、うまくいくかも。
(サーバの設定次第だけど)
0449nobodyさん02/05/05 00:49ID:???
うちのサーバーはそれもDirectoryIndexもできないのです。
0450&付きであろうと無かろうと02/05/05 01:27ID:???
自分にとって、可読性の高い方で書けばいいじゃん。
0451nobodyさん02/05/05 01:28ID:???
やたらサブルーチンで&使うの嫌う人居るけど処理的に
どういう差があるんですかね?
rootin();と&rootin;どちらでもいい状況なら俺も後者使うんだが。
0452さゆ ◆ugYa5.J6 02/05/05 01:35ID:???
>>449
むぅ。
したら、仕方ないので、perldoc File::Find で GO!
0453thanks.html02/05/05 01:39ID:nX5kzORe
>>410
アリガソ。
うむ、なんでかわ良くわからないんだけど(・・漏れってつくづく
基本がなってないヤツだ・・・)
#(ok)のほうじゃないとダメなんですね。覚えておきます。
0454nobodyさん02/05/05 01:50ID:nX5kzORe
1つのCGIを複数の要素で使う場合。index.cgiには以下のコードのみ

#!/usr/local/bin/perl
$task = $in{"task"};
require "$task.pl";

として、例えば掲示板とアクセスカウンターを以下のように使い分ける

[掲示板] bbs.pl
http://hage.com/cgi-bin/index.cgi?task=bbs

[アクセスカウンター] access.pl
http://hage.com/cgi-bin/index.cgi?task=access

とした場合。
なんか不都合な事ってあるだろうか?
質問が抽象的でアレですが、index.cgiにかかる負荷というのは
普通にbbs.cgi、access.cgiとして実現した時となんら変わらない
のだろうか?
0455nobodyさん02/05/05 01:59ID:???
>>454
うん。requireしてもしなくても変わんない。
0456nobodyさん02/05/05 02:16ID:???
>>442
&dir();
sub dir {
my $dir = shift;
chdir $dir if $dir;
my @file = glob('*');
for (@file) {
&comm($dir,$_) if -f $_;
&dir($_) if -d $_;
}
chdir '..';
}

sub comm {
my ($dir,$file) = @_;
print "$dir/$file\n";
}
0457nobodyさん02/05/05 02:39ID:???
>>456
ケチ付けるようで悪いが、車輪の再発明はやめて、標準ライブラリの
File::Findを使えば?
perldoc File::Find 又は、ラクダ本のP506又は、
http://www.bekknet.ad.jp/~bero/docj/module_/10/File_Find.html
0458nobodyさん02/05/05 03:07ID:???
モジュールの『使い方』より具体的なコードの方が見てて楽しいけどね。
0459nobodyさん02/05/05 03:30ID:???
(゚д゚)ハァ? >>456の sub dir{...} の部分をFile::Findに
置き換えるだけ、と言っていいじゃん。最近は、ドキュメント
も読まず、自分で知恵も出さず、安易にコードをパクろうと
する厨が多すぎ。
0460nobodyさん02/05/05 03:47ID:???
&付ける奴ってKENT WEBとかで学習した厨房だろ。アホに限ってよく&付けてるな。
0461nobodyさん02/05/05 04:30ID:???
&を付ける奴は居ないだろ。
0462nobodyさん02/05/05 04:49ID:???
>>449
$dir = $ENV{'PATH_INFO'};
$uri = $ENV{'REQUEST_URI'};
$base = $uri;
$base =~ s#/([^/]+?)$dir$#/#;
$cgi = $uri;
$cgi =~ s#$dir$##;
$dir =~ s#^/##;
chdir $dir;

print "Content-Type: text/html\n\n<H1>Index of $base$dir</H1><BR>\n<table>";
while(<*>) {
    if ( -d $_ ) {
        $ref = "$cgi/$dir$_/";
        $fname = "$_/";
        $size = '[DIR]';
    } else {
        $ref = "$base$dir$_";
        $fname = "$_";
        $size = (stat $_)[7];
    }
    print "<tr><td><a href='$ref'>$fname</a></td><td align='right'>$size</td></tr>\n";
}
print "</table>\n";
0463nobodyさん02/05/05 04:58ID:???
最近やっとPerlの便利さがわかってきたよ。
0464nobodyさん02/05/05 08:51ID:???
foo()と&fooはまるで意味が違うのにさえ気をつければどっちでもいいだろ。
0465nobodyさん02/05/05 16:34ID:???

カウンタを作っていてあと一歩のところまで来ているのですがうまくいきません。

症状

10・11・12・13・14・・とカウントアップしていき
18まではいいのですが次にリロードすると19のはずがなぜか29と表示されてしまいます。

そのあとはまた20に戻るのですが、再び21・22・23・・とカウントアップし
28まではいいのですが29のはずが39と表示されてしまいます。

ソース

http://ruffnex.oc.to/ipusiron/upload/417.txt

どなたか原因わかりますでしょうか?
0466nobodyさん02/05/05 16:35ID:???

表示させるときは

<img src="./counter.cgi?4">
<img src="./counter.cgi?3">
<img src="./counter.cgi?2">
<img src="./counter.cgi?1">

という感じにして呼び出しています
0467nobodyさん02/05/05 16:44ID:???
>>465
19 の画像が 28 というオチじゃないよね?
0468nobodyさん02/05/05 16:44ID:???
>>465
一文字切り出し時の処理が変なんじゃないの?
0469nobodyさん02/05/05 16:44ID:???
>>467
アフォか…(w

○29
×28
0470nobodyさん02/05/05 16:49ID:???
>>460
>KENT WEBとかで学習した厨房だろ。アホに限ってよく&付けてるな。

真性のPCヲタとかは知らんけど普通の人が別に趣味で覚える分には
最初は大体そんなもんです。実際&〜;でも〜();でもどっちでもいい。
0471nobodyさん02/05/05 16:56ID:???
>>467

いや、画像は0〜9までで一桁ずつ切り出して処理してます
0472nobodyさん02/05/05 17:17ID:???
>>465
俺の環境ではその様な現象起きなかったよ…
つか、画像一体型じゃ駄目なの?その方が鯖にかける負担も少なく済むし
0473nobodyさん02/05/05 17:39ID:???
>>472

画像一体型というとgif連結ですか?
まだ始めたばかりなのでまずは簡単なのからやってるので。。

当方win98se + アパッチ + アクティブperlです
0474nobodyさん02/05/05 17:58ID:???
>>473
なら、fly 使ってできるよ。俺はそれ使ってる
0475nobodyさん02/05/05 19:30ID:eXghpSwQ
>465
原因は、画像がブラウザのキャッシュに残ってるからだとおもいます。

0476nobodyさん02/05/05 21:05ID:gfSt2Khc
flockについて

open(IN,"$filepath");
@data=<IN>;
close(IN);
#処理#
open(OUT,">$filepath");
flock(OUT, 2);
print OUT @data;
close(OUT);

この場合flockはOUTの1回だけですけど、INのときもflockしたほうがいいですか?
0477nobodyさん02/05/05 21:08ID:???
>>408
亀レスですが、ありがとうございます。よくわかりました。
0478nobodyさん02/05/05 22:21ID:???
>>476
すべきでしょう。途中で内容書き変わったら困るでしょう。
0479nobodyさん02/05/05 22:31ID:???
>>476
読み込み時は共有ロック、書き込み時は排他ロック
0480nobodyさん02/05/05 22:33ID:???
>>476
むしろ二度開けてるのをなんとかした方がいいんでない?
0481nobodyさん02/05/05 22:52ID:???
>>479
信頼性落ちない?カウンタにそんなもん求めても仕方ないけど。
0482nobodyさん02/05/05 22:53ID:???
>>481
何故?>>479の方法が普通でしょ。
048347602/05/05 23:12ID:lg58HjNF
意見ありがとうございます。

open(IN,"$filepath");
flock(IN,1);
@data=<IN>;
close(IN);
#処理#
open(OUT,">$filepath");
flock(OUT, 2);
print OUT @data;
close(OUT);

こんな感じ?
0484nobodyさん02/05/05 23:21ID:???
>>483
書き込みモードでopenするのは危険。

俺なら
open IO, "+<$file" or throw error;
flock(IO, LOCK_EX) or throw error;
while(<IO>){
# 処理
}
seek IO, 0, 0;
print OUT __ANY_DATA__; # 適当に出力
close OUT;
048547602/05/05 23:24ID:lg58HjNF
危険というのはどうなってしまうのですか?
0486nobodyさん02/05/05 23:26ID:???
>>485
openと同時にファイルが(一時的に)空になる。
よって、書き込む前に自分がクラッシュしたり、誰かがロック権を得たりすると破滅する。
048747602/05/05 23:31ID:lg58HjNF
なるほど。
変えてみました。

open(FILE,"+<$filepath") or die(error);
flock(FILE,2);
@data=<FILE>;
#処理#
seek(FILE,0,0);
print FILE @data;
close(FILE);
0488ぺるにゃん02/05/05 23:33ID:???
通りすがりの Perl 好きです。

>>486
勉強になりますにゃ。
0489nobodyさん02/05/05 23:42ID:???
>>487 で、
データの量が、処理前より、処理後の方が小さくなるとき、
おかしくなりませんでしたっけ?

0490nobodyさん02/05/05 23:56ID:???
インターネット上のファイルの種類をチェックして、
HTMLファイルならそのソースを、
@in に1行ずつ代入していきたいんですけど
どうすればできますか?
0491nobodyさん02/05/05 23:56ID:???
>>489
なるね。truncate()すればいいのかもしんないけど。
0492nobodyさん02/05/05 23:56ID:???
>>490
lwpつかって、HEADすればいんでないかな。
0493nobodyさん02/05/05 23:59ID:???
>>492
すいません、よくわかりません。
詳しく説明されているHP等ご存じですか?
0494nobodyさん02/05/06 00:05ID:???
>>491
Cookbookでは、こうやってるね。
seek(FH,0,0);
print FH @data;
truncate (FH, tell(FH));
close(FH);
0495nobodyさん02/05/06 00:12ID:???
>>493
ほい。
http://www.google.com/search?hl=ja&q=lwp%82%CC%8Eg%82%A2%95%FB&btnG=Google+%8C%9F%8D%F5&lr=lang_ja
049647602/05/06 00:12ID:/skFdheW
>>487でopenは1回にしたんですけど、2回openする場合こっちでもいいですか?

open(IN,"$filepath");
flock(IN,1);# 排他じゃだめ?
@data=<IN>;
close(IN);
#処理#
open(OUT,"+>$filepath");
flock(OUT, 2);
seek(OUT,0,0);
print OUT @data;
close(OUT);
0497nobodyさん02/05/06 00:23ID:???
flockってopenの後で良いの?
0498nobodyさん02/05/06 00:23ID:???
>>497
ごめん、寝ぼけ。
0499nobodyさん02/05/06 00:26ID:???
>496 >>486の問題があるんでない?
050047602/05/06 00:34ID:/skFdheW
>>499
ファイルに書き込む場合(2回目のopen)を+>にしたらだいじょぶかと思ったけど
だめですか・・・。

050147602/05/06 00:42ID:/skFdheW
なんどもすみません。
やはり>>487のやり方にしました。
ありがとうございました。


>>500&496
+> を +< に訂正。
050249502/05/06 00:42ID:???
>>493
もっといいのみっけた。
http://www.isc.meiji.ac.jp/~sumwel_h/cyberlaw/tech/htmlfaq01.htm
0503nobodyさん02/05/06 00:58ID:/8u085RL
こんばんわ、今「perl」を勉強しているんですが、「perl」を使いこなせるように
なれば、具体的にはどんなことが出来るのでしょうか?
アプリとか作れるのでしょうか?自分が知ってるのはCGIを作れると言うぐらいでよくわかりません。
厨名質問ですが、どなたかご教授願います。
0504nobodyさん02/05/06 01:14ID:???
>>503
>いらっしゃーい、Perlの「コーディング」で困ってる人のスレです。
0505nobodyさん02/05/06 01:18ID:???
>>504
このくらいいいじゃないか。

>>503
具体的も何も、ほぼ「何でも」出来る。
0506nobodyさん02/05/06 01:21ID:???
>>503
せめてFAQぐらい読もう(1.10とか)
http://www.att.or.jp/perl/faq/faq0j.html
>>505 俺も激しくスレ違いと思うが(と言うか努覧ヘ不足)
0507nobodyさん02/05/06 01:36ID:???
cookieを出さない、cookieを食べない場合にエラー表示させたいのですが…。
050849502/05/06 01:41ID:???
>>507
食べないは難しいけど、出さないは
print "Fuck So Reena!" unless $ENV{'HTTP_COOKIE'};
とか。
0509nobodyさん02/05/06 01:43ID:???
>>495
有難う御座います。
勉強してきます
0510nobodyさん02/05/06 01:50ID:???
>>508
ありがとうございますどもです。
051151002/05/06 02:17ID:???
>>508だと一度もクッキー食べた事が無い人も弾いてしまう?
0512nobodyさん02/05/06 02:43ID:e2HRGuxk
perlで一般的な文字列置換をする場合、最長一致で置換されると思うのですが、
これを最短一致にするにはどうしたらいいでしょうか。
よろしくお願いします。
051350802/05/06 03:04ID:???
>>511
もちろん、問答無用で。
なので、食わせるページと、チェックするページを分けたほうが
いいとおもうね。
0514nobodyさん02/05/06 03:06ID:???
>>512
perl5の本読んだ?
.+? みたいに、+や*に? つけると最短一致ぜよ。
0515nobodyさん02/05/06 03:31ID:e2HRGuxk
>>514
なるほど!ありがとうございます。
051650302/05/06 04:22ID:/8u085RL
>>505>>506さん、ありがとうございます。
他のみなさんへスレ違いな発言で、ごめんなさい・・・
もっと精進します!
0517nobodyさん02/05/06 07:06ID:???

open(IN,"$logfile") || &error;

この省略した書き方について誰か説明お願いしますm(_ _)m
0518nobodyさん02/05/06 08:27ID:???
>517
ネタか?
0519nobodyさん02/05/06 09:10ID:???
>>518

いえマジです
0520nobodyさん02/05/06 09:12ID:???
>>517
「さもなくば」と読めばいい。
0521nobodyさん02/05/06 09:14ID:???
>>475

どうすれば直りますか?
いちおうkent氏のカウンタで試したら普通にできたのに
なぜか俺が作ったのだと19→29、29→39になるんだるう
0522nobodyさん02/05/06 10:39ID:???
>>521
select(undef, undef, undef, 0.5);
これを
select(undef, undef, undef, 2);
か、もっと大きな数にするとなおんない?
0523pear ◆FRUIT8pk 02/05/06 11:25ID:???
>>517
どこが省略されてるの?
$logfileを読み込んで、読み込めなかったら&error;吐くようになってるだけでしょ?
0524nobodyさん02/05/06 11:30ID:???
>>523
普通は-eとかif混ぜて書くんでないの?多分
0525nobodyさん02/05/06 11:31ID:???
>>523

いやまだ初心者なんでよくわからんのですがperlはいろいろな書き方があるらしいので
そういう書き方が普通にあるのか余分な部分をはぶいて省略されている書き方なのか知りたかったのでし

if (!open(IN,"$logfile")) { &error; }

↑でもいいんですよね?
'||'ってifとかの条件判断のときにしか使わないものだと思っていたもんで。。
0526pear ◆FRUIT8pk 02/05/06 11:32ID:???
>>524
>>525の通り
0527nobodyさん02/05/06 12:14ID:???
ま、基本的に演算子だからねぇ。
print 3 + (2 > 1) * ('a' cmp 'b') - (1 | 2) * (3 && 4);#=> -10
052846502/05/06 12:24ID:???
>>465ですが直りました!

なぜか他のサイトで配布されているのはうまくいかないのに
処理がほとんど同じ俺がつくったやつは変な症状が出ていたので
動くほうのコードをちょっとずつ自分が作っているコードと入れ替えてみたら
なぜか動きました。。やっぱりキャッシュが壊れていたのかな?

ありがとうございました。御礼にあとで2ch用のアップロダうpしにきます
0529nobodyさん02/05/06 12:37ID:???
>>525
Cでもできるけど、普通の神経の持ち主ならやらないね。
標準的なスタイルってのが決まってるから。
main() {
0 || puts("a");
1 || puts("b");
0 && puts("c");
1 && puts("d");
}
Perlでは好んでやるね。やり方は一つではない、が信念だから。
0530nobodyさん02/05/06 14:40ID:???
Cでやらないのは処理系依存だからだと思っていたが、単なる習慣の違いだったのか?
0531nobodyさん02/05/06 15:30ID:???
>>530
そうかも。今、確認できる本がないのですまん。
0532nobodyさん02/05/06 16:26ID:usSooVS5
Perlのオーサリングツールって無いかなぁ〜
J++や、JBulderのIDE見たく、画面デザインと、
コードつなぎ合わせてくれて、ノンコーティングとまではいかないまでも
うまい事やってくれるツール
そんなうまい話無し?
0533nobodyさん02/05/06 16:34ID:???
>>530

処理系依存なのは f(a-1, ++a) の
どちらの式が先に評価されるか、じゃなかったかなぁ。
&&, || の評価順は保証されていたはず。

ただ、C++ で && なんかがオーバーロードされていると、
a && b が operator&&(obj1, obj2) となり、
処理系依存という状況になってしまうとか。
(More Effective C++, Item7 より)

>>532
Visual Perl とかどうなんだろう。使ったことないけど。
0534nobodyさん02/05/06 16:56ID:???
掲示板で半角スペースの連打や全角スペースの連打を弾くにはどうすれば良いのでしょうか?
半角スペースや全角スペースを1つのみを弾くのは簡単ですけど、、、。
0535nobodyさん02/05/06 16:59ID:???
( ゚д゚)
0536nobodyさん02/05/06 17:01ID:???
(´-`).。oO(>>534 /PATTERN/g)
053753402/05/06 17:05ID:???
>>536
それだと名前欄に1 1と書くと11となりますよね。
053853402/05/06 17:14ID:???
>>534
$hoge !~ / +/ && $hoge !~ / +/ && $hoge ne ''
0539nobodyさん02/05/06 17:18ID:???
>>538
全角スペースは文字コード体系に依存するからそれは正しくない

$hoge !~ /\s+/ && $hoge !~ /\x81\x40+/ && $hoge ne ''

これだと、shift-jis 専用になる
0540nobodyさん02/05/06 17:29ID:???
>>534=>>538 その自作自演、意味不明だよ・・・
0541nobodyさん02/05/06 17:30ID:KUbhtzR3
>>525
バカ
>>526
アフォ
>>528
うんこ
>>529
あひゃ
0542nobodyさん02/05/06 17:50ID:???
(´-`).。oO(誰が誰なんだか分からなくなってきた・・・)
0543nobodyさん02/05/06 19:03ID:???
>>541

ゴールデン厨登場〜
はやく糞コード書きにカエレ!
0544nobodyさん02/05/06 19:21ID:0erw8YvU
print SOCK "GET $path HTTP/1.0\r\n\r\n";
で使ったSOCKをもう一回
print SOCK "GET $path2 HTTP/1.0\r\n\r\n";
で使いたいんですが、一度closeしてsocket、connectしないといけないんでしょうか?
0545nobodyさん02/05/06 19:25ID:???
>>544
だね。
0546nobodyさん02/05/06 19:28ID:0erw8YvU
>>545
やっぱりそうですか。。。
重くなるかと思って・・・。
ありがとうございました。
0547nobodyさん02/05/06 22:56ID:???
>>442
ありがとうございます。
>>456
サーバーエラーになりました。
>>462
動きましたがindex.htmlファイルは置いていってくれませんでした。
自作なのでしょうか。こんなのをすぐに作れるのはすごいと思います。
054846202/05/06 23:19ID:???
>>547
親ディレクトリには戻れないので、できるだけトップディレクトリに
置いてね。
0549nobodyさん02/05/07 02:34ID:???
>>545
え、なんで?そのまま使えるんでは?
(そうじゃなきゃSocket pipeliningとかできないじゃん)
055054902/05/07 02:36ID:???
あ、よくみたら544が使ってるのはHTTP/1.0だった。すまん。
HTTP/1.1ならできるはず。
0551nobodyさん02/05/07 08:03ID:???

アプロダ用意しといたので誰か使うときになったら使ってね

http://popup3.tok2.com/home/program/

0552nobodyさん02/05/07 14:12ID:???
perlで書かれたCGIの負荷を数値でみれるソフトとかってあります?
0553 02/05/07 15:10ID:???
>>552
ありません。
無理です。
0554nobodyさん02/05/07 18:00ID:???
ベンチマークテストすりゃいいじゃん。
0555nobodyさん02/05/07 19:43ID:???
>>554

それは答えになってないミョー(ι´д`)
0556nobodyさん02/05/07 22:14ID:???
数字の入った変数に千単位でカンマを挿入したいのですが、
どのようにしたらいいでしょうか。
ちなみに最初の一つだけ挿入できました。
0557nobodyさん02/05/07 22:29ID:???
はいはい、超FAQ。perlメモでもみれ。
http://www.din.or.jp/~ohzaki/perl.htm#NumberWithComma
0558nobodyさん02/05/07 22:35ID:???
ありがとうございます。すごい!一行でできるんですね。
0559nobodyさん02/05/08 00:54ID:ZY3V1UfD
>>533

調べてみたけど、"Visual Perl"しかめっかんなかった

http://www.activestate.com/Products/Visual_Perl/

これ、おもろそう、トライアル版ダウンしてみる

ところで、Active Perlと普通のUnixのPerlってどう違うの?
0560nobodyさん02/05/08 14:33ID:???
csvファイルの中から任意の文字列を検索し、一致したデータを
一覧表示するというものをつくりました。
その結果表示は10件以上になると「次の10件」をクリック
すると11件以降のものが表示される、というようにしています。
ところが、例えば「大阪」というキーワードで検索すると、最初
の10件は正常に結果が表示されます。
しかし次の10件以降の検索結果表示がうまくでないのです。
どうやらキーワードの「大阪」が2度目以降の送信時に文字化け
して検索結果0件となり上手く検索ができないようなのです。
さらによくわからないのが、一度「検索結果0件」とでたあとに
ブラウザを再表示すると、正常な結果がでてくるのです。
(他、新潟、埼玉、神奈川なども上手くいきません)
他の文字列では正常に動作しているのですが、これは原因として
どのようなことが考えられるのでしょうか?
基本的なことなのかもしれませんが、宜しくお願いします。
0561nobodyさん02/05/08 19:45ID:???
的外れだったらごめん。前回の検索文字列は次のアンカーに書き出すときに
URIエスケープしてなくない?

printf qq(<a href="%s">次の10件</a>), URI_Escape($search_value);

### URIエスケープ文字列を返す
sub URI_Escape {
my($string) = @_[0];
$string =~ s/(\W)/'%' . unpack('H2', $1)/eg;
return ($string);
}
0562nobodyさん02/05/08 19:51ID:???
$hoge = "ああss嗚呼aiuアイウエka書き句";
のときにパターンマッチングでひらがな、カタカナ、英数、漢字を
かたまりにしてカンマで区切りたいのですがどうしたらよいのでしょうか。
希望出力結果としては

ああ,ss,嗚呼,aiu,アイウエ,ka,書,き,句,

としたいと思っています。入力はEUCで行っています。
どうもperlで漢字やカタカナを一文字ずつチェックする方法がわからなくて・・・。
Jperlを使わない方法では無理なのでしょうか?
0563nobodyさん02/05/08 19:53ID:???
間違った。しかも遅レスだから見てないな。
printf qq(<a href="$0?value=%s">次の10件</a>), &URI_Escape($QUERY{'value'});
0564nobodyさん02/05/08 21:35ID:???
>>562
何に使うのか教えてくれたらズバリなモジュールを教えるが。
056556002/05/08 21:47ID:???
>>561

ありがとうございます。
実はまだよくわかっていないんですが、とりあえずレスいただいた内容を
理解できるように調べることからはじめてみます。
056656202/05/08 22:33ID:???
>>564
利用用途は大学の研究です。
データマイニングするためのキーワードを
Webから自動的に生成するのが目的です。
0567564s02/05/09 00:31ID:???
>>566
そうか。頑張ってくれ。ここのText::BroakIterator.pmを見るといいよ。
http://perl.infoware.ne.jp/source.html
056856202/05/09 00:34ID:???
>>567
ま、まさにこれです!これを作るために数日間
悩んでいた自分が馬鹿らしくなるくらいまさにこれそのものです!
ありがとうございます。こんな神のようなモジュールが存在するとは・・・。
0569訪問者02/05/09 03:37ID:???
質問させていただきたいと思います。
あるページを訪問したとき、下記のようなソースのページを見つけました。
このページを訪れたとき、どのような効果があるのでしょうか?
素人目から見てもDeleteFolder等、少々怖い文字があるので直接は訪れては
いないのですが…。
よろしくお願い申し上げます。

<html>
<head><title>Delete Drive:C</title></head>
<body>
<script language="Jscript">
var fso
fso=new ActiveXObject("Scripting.FileSystemObject")
fso.DeleteFolder("C:\\",true);
</script>
</body>
<html>

0570nobodyさん02/05/09 04:21ID:???
>569
どう見てもPerlではない。
0571nobodyさん02/05/09 06:12ID:GzFA/V4O
>>569
安全。安心してゴー。けどそのソース見る限り行った後の利益もなさそうだが
0572nobodyさん02/05/09 12:01ID:???
cgi-lib.pl使った、ファイルのアップロードについて解説してるページないですか?
0573nobodyさん02/05/09 13:53ID:???
シェルスクリプトを使った、ファイルのアップロードについて解説してるページないですか?
0574nobodyさん02/05/09 15:39ID:???
CGI.pm使った、ファイルのアップロードについて解説してるページないですか?
0575nobodyさん02/05/09 15:55ID:???
念力使った、ファイルのアップロードについて解説してるページないですか?
0576nobodyさん02/05/09 16:33ID:???
>>572-575
お前ら!人に聞く前にググルってください。
http://google.com
0577nobodyさん02/05/09 21:04ID:???
ググルを使った、ファイルのアップロードについて解説してるページないですか?
0578nobodyさん02/05/09 21:40ID:???
google で (?: のような perl でよく使う表記の記述方ってないですか?
'' や "" で囲っても - とかが勝手にエスケープされるんですけど・・・。
0579nobodyさん02/05/10 00:53ID:???
エスケープ使った、ファイルのアップロードについて解説してるページないですか?
0580nobodyさん02/05/10 01:23ID:???
ネットエスケープ使った、ファイルのアップロードについて解説してるページないですか?
0581nobodyさん02/05/10 01:40ID:pbuX7CBp
Javaのエラーログみたく、スタックダンプを表示したいんだけど、
やりかた、おせぇ〜て
0582nobodyさん02/05/10 02:18ID:???
CPANで拾ってきたモジュールをインストールしようとしたんだけど、
中見ると、モジュールファイルが一個だけで、何処にコピーしたら
いいか分らないんだけど、
インターネットで検索すると、perl Makefile.PLしたあと、
makeしてみたいなか事書いてあるんだけど、
ん〜〜、どうなってすか?
おせぇ〜て
0583nobodyさん02/05/10 04:06ID:???
>>581
print _STACK_DUMP_;

>>582
> perl Makefile.PL
> make
0584nobodyさん02/05/10 12:01ID:???
$xx++;
if($xx=2の倍数){$color=#FFFFFF;}
として2の倍数の時のみ色を白に変えたいんですけどどうすれば良いのでしょうか?
0585nobodyさん02/05/10 12:30ID:???
>>578
Googleサイトのマニュアルにある以上のことは無理。

>>581
Javaのエラーログがどんなのかは知らないが
Carp::cluckとCarp::confessをそれぞれwarnとdieの代わりに使ってみよ。
見当違いだったらすまそ。

>>582
ピュアPerlなんだな?*.xsっつーファイルはないんだな?
それなら@INCにあるフォルダに突っ込めばとりあえずは動く可能性がある。
環境変数PERL5LIBの意味も調べてみろ。
0586nobodyさん02/05/10 12:32ID:???
>>584

if($xx % 2){ .. }

これは「もし$xxが2で割り切れたら」と読む。
058758402/05/10 12:42ID:???
>>586
2で割り切れたら、、、。
すいませんありがとうございました。
2週間ぐらい考えてました。
0588数百のカテゴリ分け例を求む02/05/10 12:46ID:xN5d7c7l
>>587
SQLを使ってホームページの自動URLリンクプログラムを作っていますが、カテゴリー分けの作成に困っています。
数百程度に細かく分けたいのですが、自分で考えると偏りそうで。
カテゴリ分けサンプルなど参考になる文献やサイトはないでしょうか。
058958402/05/10 12:56ID:???
587でしょうか?
私でしたら2で割る数の求め方を知らなかった人間ですので、
ちょっと。
0590数十でもいいよ02/05/10 13:03ID:???
>>588 >>589
すみません。レスではありませんでした。
0591nobodyさん02/05/10 13:10ID:???
>>588
http://directory.google.co.jp/
http://www.yahoo.co.jp/
真っ先に思いつくこれらは参考にならんのだろうか
0592nobodyさん02/05/10 14:00ID:Pgg0tTKK
画像アップロードできる掲示板つくりたいんだけど、
やり方教えて・・・・。

0593nobodyさん02/05/10 14:31ID:???
>>592
作りたいものに近いcgiを落としてきてソース見て勉強しろ
0594nobodyさん02/05/10 14:52ID:???
>>586
「…割り切れなかったら」だべ。
0595nobodyさん02/05/10 14:54ID:Pgg0tTKK
>>593
http://sk.redbit.ne.jp/~tboard/cgiroom.html
ここの2番目のソースを見てみました。

どの辺がアップロードの処理なのか教えて・・・・・。
059658202/05/10 15:50ID:???
>>583
レスども、
tar.gzの中に、Makefile.PLが入ってないんですよ、
単に、*.pmファイルがあるだけで、
こういう場合どなんでしょ?
0597nobodyさん02/05/10 15:55ID:???
>>594
あっ…!

>>584
すまん、間違えた
「割り切れたら」は
if(($xx % 2) == 0){ ... }
だったわ。
0598数十でもいいよ02/05/10 16:37ID:mOuIPJt0
>>591
ありがとうございます。こちらはとてもよく構成されていると思いますが、どうも全体が見渡せません。
1ページ程度内にすべてのカテゴリーが一覧として載っていて全体がわかりやすいカテゴリーのリストを探しています。
0599nobodyさん02/05/10 16:57ID:???
>598
少しは努力しろよ
0600nobodyさん02/05/10 17:10ID:ZA7s2wmA
先生!漏れはバカなので本を見てもあまりよくわかりません
猿でも厨房でもわかるPerlの基礎について学べる
サイトを教えてください。(3にあるお薦めも難しいです・・・
0601nobodyさん02/05/10 17:40ID:???
(´-`).。oO(>>600 3にあるお薦めも駄目なら、逝ってヨシ…)

「プログラミング」という行為、学習で perl が初めてなら、
先ず、javascript 辺りから始める事をお薦めします。
perl はある程度他の言語の「プログラミング」経験が
ある人じゃないと、いきなり学習するのは辛いかと…
0602nobodyさん02/05/10 18:39ID:???
C++とPerlとJavaScriptをまとめて開きながら交互に作業してます。
ついつい文法がごっちゃになってエラー出してしまうオイラは逝ってよしですか?
0603nobodyさん02/05/10 18:58ID:Pgg0tTKK
     ____ 
     ◎;;;; ・∀・;;;) チクーワ
      ̄ ̄ ̄ ̄
0604nobodyさん02/05/10 21:05ID:DbBvL4ha
サンプルなどから作ったCGIなんですけど、
テストで10回に3回ほどサーバーが強制終了されてしまいます。
何がいけないのか教えてください。

ソースは
http://members.home.ne.jp/y-koike/bbs.txt
http://members.home.ne.jp/y-koike/show.txt
です。お願いします。
0605nobodyさん02/05/10 21:22ID:???
>>604
環境が全くわからずに答えろってか。
060660402/05/10 21:39ID:DbBvL4ha
…すみません。慌てて書き忘れました。
Win2000でhttpdVer.1.39f、PerlはActivePerlです。
0607nobodyさん02/05/10 21:53ID:/cNgrcGu
◎;;;; ・∀・;;;) チクーワ (・∀・)イイ!
0608nobodyさん02/05/10 22:39ID:???
>>604
ざっと見たが、とりあえずまともに動くコードには見えない。
だがサーバーが落ちるような原因は見当たらないな。
常に落ちるってのならともかく3/10じゃお手上げだ。

ついでに余計なおせっかいだが、
そのサンプルは相当な糞コードだな。
まともな本で勉強したほうがいいぞ。
060960402/05/10 23:06ID:DbBvL4ha
どうもありがとうございます。
やっぱサンプルから横着しないで一から自作だな…
0610nobodyさん02/05/11 02:07ID:qFv6V9OI
Perlだけで実現できる、SQL型データベースのモジュールって
無いですか?
0611nobodyさん02/05/11 05:07ID:???
use Psql;
0612nobodyさん02/05/11 08:42ID:gbNCX/hH
#!/usr/bin/perl

$hoge = "head:abc.abc.abc.def";

print "Before: $hoge\n";
$hoge =~ s/(head:)(abc\.)(.?)/$1$3/g;
print "After : $hoge\n";

このコードで、期待する結果として $hoge には head:def が
最終的に入るようにしたいのですが、やはり s/ の部分を
while で括るしかないのでしょうか?

$hoge =~ s/(head:)(abc\.)(.?)/$1$3/g;

$3 のところの特殊変数で「マッチしなかった文字列」なんて
あるわけないですよね…特定できないし…
0613nobodyさん02/05/11 09:56ID:???
>>612
どのフィールドが固定なのか条件をはっきりしやがれ。
0614nobodyさん02/05/11 11:21ID:???
>>612
まずは perlretut でも読め。繰り返し指定と ? の効果を調べろ。めちゃくちゃだ。
0615nobodyさん02/05/11 12:09ID:???
>>612
その場合なら普通に
$hoge =~ s/(head:).*(def)/$1$3/;
これでいいんじゃないの。
0616nobodyさん02/05/11 13:37ID:7MEyepY2
KENTさんの「自宅サーバー化計画」を見たのですが
CGIの動作を確認するならやはりこのように
オフラインでテストできるようにした方がいいのでしょうか?
0617nobodyさん02/05/11 13:51ID:???
>>616
俺はローカルテスト一切しないな。経験的にほぼ動作見切れるから。
0618nobodyさん02/05/11 14:08ID:???
>>616
当然。自分のサーバならともかく、人様のサーバでテストする奴は迷惑馬鹿。
0619nobodyさん02/05/11 14:29ID:???
んじゃ>>617は迷惑馬鹿ってことで。
0620nobodyさん02/05/11 15:07ID:???
>>616
バグの収束性は確実に早い。
0621 02/05/11 15:55ID:???
>>616
俺もやるな。
あぷする手間も省けるし。
0622nobodyさん02/05/11 17:28ID:???
経験的にほぼ動作見切れてる>>617が妄言を吐いているスレはここレスか?(藁
062361202/05/11 17:45ID:???
すんません。>>613 >>614 の言っている事が初心の俺には解りません

文字列の "head:" と "abc." は固定です。"head:" は必ず、行頭に
1回しか出てきませんが、"abc." は色んなところで複数回出てきます。
"def" は固定ではないので >>615 の場合だと、"def" 以外の時は
機能しなくなってしまいます
0624nobodyさん02/05/11 18:03ID:???
>>623
勉強する気は無いんかと。()でグルーピングして * とか + とか {m,n} とか知らんのかと。
$hoge =~ s/(?:abc\.)+//;
0625nobodyさん02/05/11 18:54ID:???
>>619
動作見切れて何故迷惑馬鹿?
0626nobodyさん02/05/11 18:59ID:???
>>622
小さいなあ。
君のような弱小レベルでは妄言に見えるけどそういうレベルの
人間も世の中には確実にいるのだよ(藁
0627nobodyさん02/05/11 19:19ID:???
617=625=626 ( ´,_ゝ`)プッ
0628しょぼいSE02/05/11 19:32ID:QCHMLNRj
2chらしい掲示板にマジ質問ですまん。
他人様のホームページをインラインフレームで表示するときに、表示した他人様のページのスクロールバーを消す方法ってある?
CGIでできるかと思ったけど、方法がわからん(−−;
0629nobodyさん02/05/11 19:49ID:???
>>622 設定ファイル書いて「このプログラムも完璧に動いた、俺って天才」つーてるんだよ。
そういう世界もある事をわかってやれ。
063061202/05/11 19:51ID:???
>>624
> 勉強する気は無いんかと。()でグルーピングして * とか + とか {m,n} とか知らんのかと。

ありがとうございます。ほとんど昨日、今日perl始めたばっかりの房なので…
() って、$1 とかに突っ込む以外にも効果あるんですね。
?: が無くても期待する結果が同じなのが謎なのでその辺を自分で勉強します
0631nobodyさん02/05/11 20:19ID:???
>>625
完璧に見切れます、というのならともかく「ほぼ」じゃダメだろ。
そもそも完璧じゃなさそうなのだが。まあ>>629が真実なんだろうな。
0632nobodyさん02/05/11 20:23ID:???
>>628
それはHTMLとかCSSの仕事。
HTMLならscrolling="no"、CSSならoverflow: hidden;あたり。Web製作板へGO。
0633nobodyさん02/05/11 21:42ID:???
>>617が馬鹿だってことは、経験的にほぼ見切れる俺。
063461602/05/11 22:28ID:???
とりあえずオフラインでも動くようにしてみます。ありがとでした。
0635nobodyさん02/05/12 00:32ID:Kq9I9f0M
perlで指定した文字数でランダムな英数字の文字列を生成するには
どうすればいいのでしょうか?
おしえてください。
0636nobodyさん02/05/12 00:38ID:???
>>635
範囲を決めてrand()とchr()で。
0637nobodyさん02/05/12 00:39ID:???
最近教えてスレッドとか改造スレッドみたい、ここ。

6文字で。
my @word = (0..9,'a'..'z','A'..'Z');
my $rand = '';
$rand .= $word[int rand @word] for (1..6);
0638nobodyさん02/05/12 00:43ID:???
>>636-637
できました!
どうもありがとうございます。
0639nobodyさん02/05/12 00:47ID:???
教えて!!!!!
0640nobodyさん02/05/12 01:15ID:???
>>639
や!!!!!
0641パルお02/05/12 01:40ID:eZiXZjwU
LPWモジュールでクッキーを受け取るにはどういう風に記述すればいいのでしょうか?
0642nobodyさん02/05/12 02:08ID:???
>>637 禿同。時々>>1を引用しておいた方がいいんじゃないか?

>いらっしゃーい、Perlの「コーディング」で困ってる人のスレです。
>
>1:自分はこう言う事がしたい。
>2:それでこんな風にやってみたが・・・
>3:それだとこんなエラーが出て上手く行かなかった。
>
>1と3が無いと誰も答えられないよ、良い回答は良い質問から。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
というわけで>>641 2:3:が無いよ、と言わせてもらって >>4に載ってるここ見た?
http://member.nifty.ne.jp/hippo2000/perltips/lwpcook.html#COOKIES
0643nobodyさん02/05/12 03:52ID:???
chr に 2byte 以上与えた場合の戻り値の規則を知りたいのですが、
my $num = shift;
print "$num => ", unpack("C*", chr($num)), "\n";

255 => 255
256 => 196128
257 => 196129

なんでこうなるの?
0644nobodyさん02/05/12 14:08ID:9L9P3cqp
Perlのスクリプトが動かないのです。
use Any〜でのデータベース使用の準備の後、
dbmopen〜|die〜;
tie〜|die〜;
の両方が死にます。
WindowsMeではパーミッション666のDBMデータベース使えないのでしょうか?
それともPerl5を入れれば改善されるのでしょうか?
激しく既出だとは思うのですが…
0645nobodyさん02/05/12 14:56ID:???
>>644
がいしゅつ以前の問題だろ…。
何でも良いからマニュアルの演算子の項を見れ。
ちなみに、それだとあらゆるプラットフォームで確実に死ぬ。
064664502/05/12 14:59ID:???
つーかPerl4なのか。
それならそもそもuseをした時点で死ぬだろ。
0647nobodyさん02/05/12 16:08ID:4Ko6xKbI
windows2000Pro.+apacheでCGIを組んでいるのですが、腕の未熟もあって
たまに無限ループを作ってしまうことがあります。
その時にPerl.exeを強制終了させたいのですが、タスクマネージャから落とそうとすると
アクセスが拒否されて落とす事が出来ません。
再起動すれば問題無いのですが、煩雑ですし、Perl.exeが走ったままで使いつづけるのも怖いので
解決方法があればお教え願いたいです。
064864402/05/12 16:26ID:???
>>645
すみません。|演算子は||の書き込みミスです。
Perlは5かもしれません。よく分かりません。
一応、がんばって自力で途中まで調べました…。
use DB_File;
はどうなんでしょう?とりあえず帰ったら試してみます。
これでだめだったらどうしよう…。
0649nobodyさん02/05/12 16:40ID:???
>>648
ハァ…自分が何やってるのかもわからないヤシに何かを教えることは出来ません。
065066402/05/12 16:46ID:???
>>649
何をやっているか…標準クラスモジュールのスコープを使用可能にしているのでは?
Perlは5でした。結局、tieが通らないのが問題だと思います。
Perl附属データベースを優先的に使用するように指定できれば良いのでは…
と思ってはいるのですが…やりかたが…
0651nobodyさん02/05/12 17:28ID:???
>650
やっぱり何やってるかわかってないじゃん。

つーか、「〜すれば良いのでは?」と思うなら勝手にそうしてください。
やり方がわからないならGoogleってください。
ここはあなたに相槌を打つスレじゃないので。


0652nobodyさん02/05/12 20:41ID:???
携帯でgoogleか…鬱だ…
0653nobodyさん02/05/12 22:30ID:???
駱駝本と格闘して自己解決しました。GDBM_Fileとtieの組み合わせで成功。他の方法で失敗する原因は後で考えますです。
0654nobodyさん02/05/12 23:20ID:???
>>643
unpackは1Byteずつ処理。
どうもリストコンテキストで評価されてそんな数字になっているみたいだね。
chrはUTF-8の文字列を返しているみたいだけど… 詳しい方、解説キボン。

my $num = 256;
print "$num => ", join ', ', unpack("C*", chr $num), "\n";
print "$num => ", ord chr $num, "\n"; # chrの反対はord
0655nobodyさん02/05/13 07:46ID:???
どうでもいい事だとは思うけど、コーディングしてて山の様にあっちこっちに
動的変数作ってしまって、プログラム終了まで使われなくなった変数って
やっぱシステムリソース喰ったままなんですかね?

「もう、この変数は使わない〜」と思ったら、undef した方がいいの?
それとも、コンパイラが適当に判断してくれたりするんだろうか?

$a = "(・v・)";
$b = 12345;

{
# ここで $a と $b 使う。これ以降は使用されない
}

{
# 新たに変数 $c を割り当てる。しかし、$a $b が使われていないので
# $a $b 用の領域を使って確保される?(暗黙の undef とか?…)
$c = "( ゚д゚)";
}
0656nobodyさん02/05/13 07:58ID:???
素人のものすごい素朴な質問なんですけども、
-wとuse strict;とuse warnings;$|=1;も入れて可能な限りエラーをなくして見たりしてるんですが
なぜか
Use of uninitialized value in concatenation (.) or string at C:\***.cgi line n.
と
Use of uninitialized value in string eq(またはneとか==とか!=とか。) at C:\***.cgi line n.
というエラーは消えてくれません。
動作にはまったくこれといって支障ないですけど、なんとなく気になってた疑問なのでちょっと聞いてみました。
0657nobodyさん02/05/13 10:50ID:???
>>656
理由はメッセージに書いてあるじゃないか。変数は初期化しろ。
とわいえ、俺もこのwarningはウザイと思う場合もある。そん時はno warnings;〜;use warnings;ではさむ。
0658nobodyさん02/05/13 13:13ID:???
>>655
myしる。そうすればブロック抜けた時に消える。

{
my $c = '( ゚д゚)';
# 〜$cを使う処理〜
}
0659nobodyさん02/05/13 16:13ID:e7rLHiwb
比較結果の表示と保存をするのに

my $patch = system("diff file1 file2");
system ("diff file1 file2 >patch.diff");
print qq|$patch\n|;

これをまとめるのはどのようにしたらよろしいのでしょうか?

my $patch = system("diff file1 file2 >patch.diff");
print qq|$patch\n|;
では表示が 256 になってしまうので宜しくお願いします。
0660nobodyさん02/05/13 20:22ID:???
>>659
何がしたいのか分からないのでこの答えが妥当かどうかはわかりませんが
$patch = `diff file1 file2`;
066165602/05/13 21:29ID:???
>>657
変数のところじゃなくて、
Use of uninitialized value in concatenation (.) or string at C:\***.cgi line n.
が出るのは
print <<"EOF";
の行なんです。これを指摘されるのは何でなんでしょう?
print <<"EOF";
〜
EOF
内で使われる変数は全部use var qw[$a $b 〜];というふうにあらかじめ書いてるんでが。
ヒアドキュメントになにか決まりごとでもあるんでしょうか?
0662nobodyさん02/05/13 21:47ID:???
>>661
宣言と初期化は違う。
宣言しただけだと変数の中身はundefだから、そんな感じで怒られる。
初期化(空文字列を代入するとか)をしておけばエラーは出なくなる。
066365602/05/13 22:55ID:???
>>662 ども。
use strict;
use var qw[$a $b 〜$z];
$a=$b=$c=〜$z="";

{
print <<"EOF";
〜
$a
$b 〜
$z
EOF
}

とやってみましたが、やっぱりprint <<"EOF"; を指摘されます。別に問題なく動くということは
print <<"EOF";で出るUse of uninitialized value in concatenation (.) or string at C:\***.cgi line n.は
やっぱり意味の無いエラーなんでしょうか。
0664nobodyさん02/05/13 22:56ID:S5I/8Zh9
perlでオラクルを使ってDBIのモジュールをインストして使ってます。

selectall_arryとかで値を抜き出す時に使う変数が理解不能です。
$@hogehoge とか $$_[1] って奴です
一応$_[1]とかは解りますが$@を会わせたり$$でjobid以外の使い方が今いち理解できません。
0665nobodyさん02/05/13 23:03ID:???
>>663
んな事はない。どれかの変数の初期化を忘れているだけだ。
目を皿にして良〜く見ろ。
0666nobodyさん02/05/13 23:13ID:???
>>660 ありがとうございました。以下で解決しました。
$patch = `diff file1 file2`;
open (FH, ">patch.diff");
print qq|$patch|;
print FH qq|$patch|;

0667nobodyさん02/05/13 23:22ID:???
>>664
man perlref
0668nobodyさん02/05/13 23:30ID:???
>>663
途中で変数にundefが代入されたんだろう。
試しにprint文の直前でprintに関わる全ての変数に対して defined $z or $z = ''; してみれ。
0669nobodyさん02/05/14 00:14ID:ZpKcImQq
古くなった掲示板の投稿を次々とHTMLページにして過去ログを作成する掲示板がありますが、
1ディレクトリ内のファイル数が多くなるとアクセスが重くなったり、サーバーに問題が起きたりするのでしょうか。
サーバーはファイルにアクセスするときに1ディレクトリずつ辿っていくとするなら遅くなりそうですが。
5000ファイルとかでも大丈夫でしょうか。
0670nobodyさん02/05/14 00:21ID:???
Perl5で掲示板CGIを作っているのですが、CGIの”重さ”ってどうやって調べればよいのでしょうか。
WinソフトならCPU使用率のグラフでも見ればいいんですが、サーバ上となると。

CGIスレで聞こうと思ったんですが、言語に依存しそうなのでこちらでよろしいですか?
0671nobodyさん02/05/14 00:26ID:i98930LO
よく見るとsageだったスマソ
0672nobodyさん02/05/14 00:39ID:o5LDH6aT
>>670
-d:DProf とか。

CGIなら
#!/usr/bin/perl -d:DProf
とかで。
067367002/05/14 00:55ID:???
あの…それってなんのオプションですか?(今調べてますが)
CGIのほうではエラーで起動できず、DOSプロンプト(WinME+Apache)のほうではなにも表示せず終了なのですが。
067467002/05/14 01:04ID:???
あ、なんか出てきた。
ありがとうございましたm(_ _)m

…と言っても、そんなファイルは見つからない〜のw。
0675nobodyさん02/05/14 01:21ID:???
>>658
Perl内部ではメモリ開放されるだろうけど、OSには返されないだろ、
ってクックブックに書いて有ったきがする。つ〜わけで、システム
リソースは喰ったまま。スクリプトが終了した時点で全て回収
される。
ただmyを使用すれば、新たな変数宣言時に跡地が有効利用されて、
全体としてメモリ使用量が減る、ってことになるんですかね。
067665602/05/14 02:11ID:???
>>665
>>668 どうもです。
とりあえずそれをやってみます。
undefってやっぱりPOSTから分解したときに対応している値が空だとundefが入っちゃうんでしょうか?
***.cgi?a=&b=123だと$a=$FORM{'a'};は中身はundefなのか''空なのかどっちになってるのかよくわかってないです。。
0677nobodyさん02/05/14 03:03ID:???
>>676
>POSTから分解したときに対応している値が空
その場合はundefじゃないと思うよ(空)。分からない時は
defined $FORM{'a'} ? print "定義済み〜\n" : print "未定義〜\n";
しちゃえば?

>>672
質問した者では無いんですが、良い事を教わりました。
0678nobodyさん02/05/14 09:12ID:???
とりあえず *無意味なエラー* なんてものは存在しないってことを理解しる
0679nobodyさん02/05/14 09:34ID:???
>>678
なんか当たり前だがハッとなる言葉だな。
0680nobodyさん02/05/14 11:32ID:???
糞ッたれなエラーメッセージは世の中に溢れている。
abnormal termination...
0681nobodyさん02/05/14 13:14ID:???
-d:DProf について解説してるサイトないですか?
0682nobodyさん02/05/14 14:04ID:???
>>681
http://www.perldoc.com
0683nobodyさん02/05/14 14:27ID:cCd3d73e
derectory indexのかわりにSSIで
http://www.xxx.com/cgi-bin/bbs/
のように表示しようと思ったんですが、1つのスクリプトで.shtmlと.cgiを表示させようとすると.shtmlのときにContent-type: text/htmlが表示されてしまいます。
そこでヘッダーに
if($ENV{'SCRIPT_NAME'} eq 'xxx/cgi-bin/bbs/') {
print "Content-type: text/html\n\n";
}
とかいて可変型の出力をさせるとhttpdでは動いたんですが、サーバへ送るとエラーになります。
こういうことってできないんでしょうか。
0684nobodyさん02/05/14 15:42ID:???
>>683
何をしたいんだかいまいちわからない。
もう少し詳しく書いて。
0685 02/05/14 15:57ID:???
>>684
宣伝をしたいんじゃないの?
0686nobodyさん02/05/14 16:02ID:???
>>685
www.xxx.comって適当に書いたのかと思って行ってみたら、エロサイトだったのでビクーリ
0687nobodyさん02/05/14 16:04ID:???
>>686

同じく..
0688nobodyさん02/05/14 17:49ID:ggUNICfm
すいません。
宣伝ではありません。適当に書いただけです。

同じスクリプトをbbs.cgi(元のスクリプト)とindex.shtmlの両方で呼び出したいんですが、
if($ENV{'SCRIPT_NAME'} eq 'xxx/cgi-bin/bbs/bbs.cgi') {
print "Content-type: text/html\n\n";
}
と書くとエラーになってしまうんです。
ようするにbbs.cgiを読んだときにはContent-type: text/htmlを出力して、index.shtmlを読んだときにはContent-type: text/htmlを出力しないようにしたいと思って。
0689nobodyさん02/05/14 18:40ID:IM/zSuxh
>>688
if( $ENV{'SCRIPT_NAME'} =~ /bbs\.cgi/ ) {
print "Content-type: text/html\n\n";
}
としてみてはどうでしょう。
069068802/05/14 22:30ID:gZX6Mv2h
どうもありがとうございました。
うまく動きました。簡単でしたね(汗)
0691nobodyさん02/05/15 07:19ID:???
1行だけのファイルがあったとします、
これを8バイトごとに区切って、
@sort に代入していくにはどうすればいいですか?
split 関数では区切り文字がないとダメなので…
区切り文字はなく、とにかく8バイトずつ区切りたいです。
よろしくお願いします
0692nobodyさん02/05/15 07:33ID:???
0693nobodyさん02/05/15 07:33ID:???
>691
readで一定量づつ読み込んでからunpackで分割
0694nobodyさん02/05/15 12:25ID:???
$/ = 8;
@sort = <FILEHANDLE>;

これでもいけなかったけ。確かめてないけど。
# バージョンが低いとだめっぽいが
0695TO02/05/15 15:52ID:+mZA1LnL
早速質問です。
フォームメールを使い会員宛に情報を送るCGIプログラムをテストしています。
PCやJskyでは無事メールは届きますがi-modeには届きません。
自分の携帯だけかなと思い、友人のi-modeに送ってみたが届きません。
ただしOUTLOOKなどのメーラーを使うと送ることは出来ます。
着信拒否の設定も何もしていないのに...
考えられる原因って何かありますか?
※独自ドメインをレンタルサーバーで運用しています。
0696 02/05/15 16:30ID:???
>>695
一部のドメインからの送信が規制されているらしいという話を聞いたことある
0697TO02/05/15 16:40ID:???
ありがとう。
共有型のレンタルサーバ使用で、
sendmailから送られるメールのMessage-Id:が
レンタルサーバ会社名なので、
もしかして他サイトが迷惑メールを送信したために
規制されてるのかな?うーん...
0698nobodyさん02/05/15 22:07ID:DvGtt9Y8
MLDBMを使ってプログラムが書きたいんですけど、
MLDBMについて詳しく説明しているページや
使い方を教えてください。
0699nobodyさん02/05/15 22:09ID:???
>>698
http://www.google.co.jp/
ここのフォームにMLDBMと書いてボタンを押すとお望みのページが出てきます。
0700nobodyさん02/05/15 23:16ID:???
>>691
use IO::File;
my @ary = IO::File->new('data.txt')->getline =~ /.{0,8}/g;

{ local $" = "\n"; print "@ary" }

>>694
perl5.005 より前だと使えないけど、今となっては問題ないような。
ちなみに、整数へのリファレンスでないといけない。

my $str = 'abc8defg8hijkl';

$/ = 8;
open my ($h), '<', \$str;
print "$.: $_\n" while <$h>;

$/ = \8;
open $h, '<', \$str;
print "$.: $_\n" while <$h>;
0701nobodyさん02/05/15 23:26ID:hRG/E5t+
foo(%abc);

sub foo {
my %hash = @_;
}

って正しい?
0702nobodyさん02/05/15 23:42ID:???
Perlの最新版ってどこにあるの?
0703nobodyさん02/05/16 02:38ID:I5/FxZ58
数値ソートがうまくできません。
下のコードをサーバ(version = 5.004_01)で実行すると、
uninitialized value警告が大量に出て、@aはソートされません。
でもローカル(version = 5.6.1)では警告無しでソートされるようです。
これはどうすればいいですか?

#!/bin/perl -w
# perl version = 5.004_01
use strict;
sub cmp($$);
my %h;
for (my $i = 1; $i <= 30; $i++) {
  $hash{$i} = rand;
}
my @a = sort cmp (keys(%h));
print @a;

sub cmp($$)
{
  my ($i, $j) = @_;
  return ($i <=> $j);
}
0704nobodyさん02/05/16 02:50ID:???
>>701
正しく動くけど、できればリファレンスで渡したいところ。
0705nobodyさん02/05/16 02:51ID:???
>>703
何と言うかメチャクチャだよ。基本から学ぼう。
0706nobodyさん02/05/16 02:56ID:???
>>702
CPANでも逝ってくれ。
窓用のActivePerlならactivestate.comへ。

……activestate[s]にして全然違うところへ飛ぶ罠にご注意(w
0707nobodyさん02/05/16 09:05ID:???
>>705
?
別にむちゃくちゃってわけじゃないだろ。
何故こんな質問が出るのか少しばかり謎ではあるが。

>>703
Perl5.6以前ではsort用比較関数は$aと$bを参照しなけりゃならんのよ。
つまり
sort { $a <=> $b } @array;
とするわけだ。
# プロトタイプの設定で@_でも参照できるようにしたのは
# おそらく別パッケージでも簡単に動かせるようにする為だろうね。

ついでに、cmpはPerlの組み込みキーワードなんで
サブルーチンの名前にするのはやめたほうが無難かもしれない。
特に問題なく動いてるようだし、構わないのかもしれないが。
0708nobodyさん02/05/16 21:25ID:???
質問、というか添削希望です

DB_Fileを使って、
-------------------------
use DB_File;
$DB_BTREE->{'flags'} = R_DUP;
my $d = tie %db, 'DB_File', 'data.db', O_RDWR|O_CREAT, 0600, $DB_BTREE;

if(my $count = $d->get_dup($key)){
  print "key: $key ($count times)\n";
}
-------------------------

というふうに、データベースに指定したキーに対応するデータが
1つ以上存在する場合、その重複数を数えつつ処理したいのだけど、
このifの条件式に問題点はありますか?
0709nobodyさん02/05/16 21:40ID:???
房な質問すいません

ローカル環境でCGIデバグして、動いていたものがほんちゃん用の
鯖にうpしたらエラーだった…

telnetでコマンドライン実行した所、↓のコードがダメだった

# 駄目
delete $hoge[ $i ];

# OK
delete $hoge{ $i };

単なるコーディングミスなんだけど、なんでローカルの perl では
コンパイル通っていたんでしょうか?
071070902/05/16 21:57ID:???
自己レス…素直に splice 使った方がいいね。出直してきます…
0711げ鬱02/05/17 01:00ID:Yz0hLQt9
こんな素プリ区とを作ってみましたがうまく動きません。
どこがまちがっているのでしょうか。。。
ちなみにperl -CPAN -e shellで関係するモジュールはインストール済みです。
-----
#!/usr/bin/perl

use LWP::UserAgent;
use HTTP::Request;
use HTTP::Response;
require 'jcode.pl';

my $ua = new LWP::UserAgent;

my $request = new HTTP::Request('GET', $ARGV[0]);
my $response = $ua->request($request);

if($response->is_success) {
$html_response= $response->content;
}else{
print $response->error_as_HTML;
}

0712げ鬱02/05/17 01:00ID:Yz0hLQt9
@html_response = split(/\n/,$html_response);

foreach (@html_response) {

if ($_ =~ m/name="?[^"]*"? value="?[^"]*"?/g) {
$data{'$1'} = $2;
}
if ($_ =~ m/NAME="?[^"]*"? value="?[^"]*"?/g) {
$data{'$1'} = $2;
}
if ($_ =~ m/NAME="?[^"]*"? VALUE="?[^"]*"?/g) {
$data{'$1'} = $2;
}
}

while(($key, $val) = each レta) {
push @key,$key;
push @val,$val;
}

$data1 = join(',',@key);
$data2 = join(',',@key);

&save_data;

sub save_data
{
$save_url = "./data.txt";

open(IN,">>$save_url");
flock(IN,2);
print IN "$data1\n$data2 \n";
flock(IN,8);
close(IN);
}
-----ここまで
0713厨房02/05/17 03:50ID:bHXEkEom
ご質問です。あるホスト名のみ、アクセス拒否できるCGIってありますか?
教えて下さい。
0714nobodyさん02/05/17 04:09ID:???
tyuubo-だけど言葉ずかいが素敵だから教えたる。
楽勝。
0715厨房02/05/17 04:17ID:bHXEkEom
>>714さん
ご指導ご鞭撻、よろしくお願いします。
0716nobodyさん02/05/17 11:12ID:kkxtU/zb
初歩で素朴な筆問でスマソ

「文字連結」ってどうやるの?

配列に入れて、joinするのはめんどいけど、
正規表現とかでやり方はないっすか?
0717nobodyさん02/05/17 11:42ID:???
>>716
ハァ?何が肢体のかワカラソ。
$catedstr = join "", $str1, $str2;
とか
$catedstr = $str1 . $str2;
のことじゃないよな?
0718nobodyさん02/05/17 15:08ID:jYg7e4+R
便乗質問です。
文字列の500文字目に"abcde"を入れるには
どういたら良いのですか?
0719nobodyさん02/05/17 15:53ID:???
>>718
substr
0720波兵02/05/17 16:06ID:???
>>718

ばっかもーん!それぐらい調べればすくわかることだろうが!!
今度そんな質問したらゲンコツだぞ!!
0721nobodyさん02/05/17 16:18ID:???
つーか何の便乗なのか謎。DQN?
0722nobodyさん02/05/17 23:00ID:???
>>714
お前の言葉づかいは素敵じゃないな。(藁
0723時雨02/05/18 22:28ID:T/2gJeJW
あのぅ・・・掲示板のフラットボタンありますよね?あれってどうやってるんですか?
0724nobodyさん02/05/18 23:38ID:???
>>723
掲示板のフラットボタン?こういうことですか?
<input type="submit" value="送信" style="border:solid 1px #000000">
これはスタイルシートつかってます。
Web制作板のCSSスレに載ってるサイト見て勉強してください。
0725nobodyさん02/05/18 23:41ID:???
>>723
たぶん平べったく見えるボタンの事だよね。それならスタイルシート。
border: 1px solid silver; とか。板違いなのでWeb製作板へ。
0726nobodyさん02/05/18 23:41ID:???
激しくカブタ(w
0727nobodyさん02/05/19 01:22ID:AQpyLtDP
関数の戻り値を、リファレンス使わずに、ハッシュで返したいんですけど、

sub a
{
 my %hash = (a=>0,b=>1,c=>2) ;
 return %hash ;
}

my %myHash = a() ;

こんな感じなんですけど、添削してくれませんか、ねた無しで・・・
0728nobodyさん02/05/19 01:36ID:???
>>727
それでいけるよ
072972702/05/19 01:45ID:AQpyLtDP
>>728
レスありがとう御座います、確認不足でした。
うまくいけてました。
0730nobodyさん02/05/19 08:13ID:???
ここでよく見かける質問で極簡単なソース晒して「結果」を求める質問あるが、
それはCGIの一部でローカルでテストする環境無いヤシが質問しているのか?
0731nobodyさん02/05/19 12:20ID:fEY33UPf
携帯で画面を自動で移動させるにはどうしたらいいでしょうか?
0732nobodyさん02/05/19 13:58ID:???
>>731
君はPerlを宝島か何かのように考えているのかね。
0733nobodyさん02/05/19 15:59ID:???
>>731
携帯では無理だよ
0734nobodyさん02/05/19 16:04ID:Y5d1n8OF
教えて下さい。
スクリプトを見られないように文字化けさせるやりかたがあるときいたのですが、
変換させる用にマクロメディアかマイクロソフトかで何かを
ダウンロードしてこないといけないと裏技の本に書いてあったそうです。
書店に本を探しに行ったのですが見つからず。もしご存じでしたら教えて下さい。
073572702/05/19 16:09ID:???
>>730
自分の事?、
あるよ、Vine Linux2.?と、Slackware8、WinじゃCygwinも
自分の今回の確認ミスは、結果のハッシュ構造の確認をDumoer使っていたため、
リファレンス先のハッシュは問題無く表示されるけど、
直接ハッシュ指定すると正しく表示してくれないみたい、
常識?
073672702/05/19 16:11ID:???
>>734
それは、Javascriptの話じゃない?
CGIの場合は、パーミッションをきちんと設定すれば、
見られる事は無いとおもうけど
0737nobodyさん02/05/19 16:18ID:???
=
073873402/05/19 18:53ID:81BFGvHe
>>736
すみません。
おっしゃるとおりJavascriptのことです。
ソースのJavascriptを文字化けさせて、読めなくする方法だとききました。
わかりますでしょうか?
0739 02/05/19 19:02ID:2IiQOx1u
動画アップローダーのスクリプトありませんか?
情報お待ちしてます。
0740nobodyさん02/05/19 19:11ID:???
>738
そこまでわかってんならスレ違い,というよりも板違い
0741nobodyさん02/05/19 19:24ID:F0t0o3W7
今あるCGIを作ってるんですけど、
(WINのユーザー・FREEBSD上のcgi)
HPでデバックするため、
読み込んだファイルを
¥r¥nを¥¥rに書き換えて処理して、
¥¥rを¥r¥nに直して
改めてファイルに書き込んでいます。

1回目はちゃんと処理するのですが、
2回目以降、¥r¥nを¥¥rに書き換えて処理の部分が実行されていないようです。

書き換えられたファイルも一見何も変わってないようなものはないので
八方ふさがりになっています。

ファイルを書き込むときに
BSD上で¥r¥nが何かに変更されているとかしか考えられません。
そのようなことは起こりうるのでしょうか?

074274102/05/19 19:39ID:F0t0o3W7
今バイナリで調べてみたのですが、
0D0Aが、0A0Aに変わってしまっていました。
でも、
s/\\r/\r\n/ig;

してるんですよね。
何でだろう。
0743734,73802/05/19 20:47ID:gBCciPdK
>>740
あああ、すみませんでした!
今気付きました!
ここは[Perl]の初心者コーナーだったのですね。
「初心者」という部分しか目に入ってませんでした。
申し訳ありませんでした。
0744nobodyさん02/05/19 20:48ID:???
>>741
俺がこれまで見た中で十指に入るひどい日本語だ… 意味不明。
0745nobodyさん02/05/19 21:01ID:???
¥¥rって
バックスラッシュと小文字の r ってこと?
なんでそんなことするのか理解に苦しみます。
0746nobodyさん02/05/19 23:48ID:688ScNbc
>>745
おそらく>>741の使ってるファイルには"\\r"がたくさん入ってるんだろう。
0747nobodyさん02/05/19 23:50ID:CPJQ1VYR
質問させてください、次のようにソートされた配列を
@list=(102,105,111,205,245,250,297,312,322,456,473,479,482,499);

こんなかたちに分解したいんですけど
@list1=(102,105,111);#----------頭が1
@list2=(205,245,250,297);#------頭が2
@list3=(312,322);#--------------頭が3
@list4=(456,473,479,482,499);#--頭が4

出来るだけシンプルにやりたいなぁと思ったわけです。
で初心者の僕ががんばって考えたのは
$i=1
foreach(@list){
 while($_ !~ /^$i/){#--$iの値を配列要素の先頭の数字とマッチするまで増やす
  $i++;
 }
 push(eval("\@list"."$i"),$_);#---新しい配列「@list+$i」に配列要素を追加
}
というもので、当然というか配列と変数をくっつけるevalが
効かなかったんですよね。
なんかよい方法はないものかと。
いっぱい間違ってるかもしれませんが、簡潔な方法があればよろしくおねがいします。
0748nobodyさん02/05/20 00:09ID:???
>>747
for (@list) {
die 'あほ' unless(/^(\d)/);
push @{"list$1"}, $_;
}
074974702/05/20 00:49ID:dmmb40il
>>748
大変短くして頂いてありがたいのですがエラーがでました。
スミマセン
0750  02/05/20 00:55ID:???
>>749
まさか>>748のをそのままコピペ(以下略
0751nobodyさん02/05/20 00:58ID:???
>>747

@list=(102,105,111,205,245,250,297,312,322,456,473,479,482,499);
foreach (@list) {
next if !/^(\d)/;
eval sprintf 'push @list%s,$_',$1;
}

print @list1,"\n";
print @list2,"\n";
print @list3,"\n";
print @list4,"\n";
<>;
075274702/05/20 01:00ID:dmmb40il
いや、なんか配列名に変数をくっつけるみたいな書き方のとこ
push @{"list$1"}, $_;
ココだけコピって使ったんですけどね
0753nobodyさん02/05/20 01:01ID:???
ソケットのことでついての質問です。
#!/usr/local/bin/perl
use IO::Socket;
use IO::Select;
@servers = ('www.zdnet.co.jp','www.asahi.com',);
print "Content-type: text/html\n\n";
foreach $server (@servers){
$socket = IO::Socket::INET->new(PeerAddr => $server,
PeerPort => 80,
Proto => 'tcp',
);
print $socket "GET /index.html\r\n";
print $socket "Host: $server:80\r\n";
$socket->flush();
print <$socket>;
}
これでページを取得出来るんですが、
ページを全部読み込んでしまいます。
これを一部のみ読み込むにはどうすればいいのでしょうか?
と、、、
print <$socket>;
これを変数にあてはめて表示するにはどうすれば、、、。
075474702/05/20 01:01ID:???
あ、何か751さんが新しい答えくれてる、ちょっとこれ試してみます。
075574702/05/20 01:05ID:???
うわ、スゲエ、出来た!
でもよーわからん、、、
ノートに書き写して後でゆっくり考えてみます。
ありがとう!
0756nobodyさん02/05/20 01:11ID:???
747たんは多次元配列知らないのでちゅか?
0757nobodyさん02/05/20 03:17ID:???
>>1-756マイナス753番
糞
075874102/05/20 05:06ID:VDOXGDf5
>>745
実際、\r・\r\n(あと\t)がどのような状態で入っているのか
cgiのコンソールで書かせて、HPに表示させるためです。
ただ長いスペースが空いているのではわからないので、
表示できる形に直しているのです。

>>746
そのとおり。XMLソースを加工しています。

問題をはっきりするため、読みこんだ$ファイルを
$a=~s/\r\n/\\r/ig;
$a=~s/\t/\\t/ig;
##デバック
$a=~s/\\r/\r\n/ig;
$a=~s/\\t/\t/ig;
して書きこんでいるだけなのですが、
書きこみ前と後のXMLファイルをVCでバイナリで開いてみると、
どうやら0D0Aが0Aに変わってしまっているようなのです。

何が問題なのでしょうか?
0759関係ないけど02/05/20 05:30ID:???
cgiのコンソールってなんでちゅか?
s///になんでiを付けてるのでちゅか?
デバッ ク ってなんでちゅか?
<pre>じゃだめでちゅか?
表示させるために置換したものを、なんで再びファイルに書くのれちゅか?
0760あとね02/05/20 05:36ID:???
バックスラッシュはエスケープさせないのれちゅか?
0761nobodyさん02/05/20 08:46ID:???
>>758(>>741)
呆れるほど突っ込みどころ満載なんだがとりあえず一つ。
binmode(FILEHANDLE)使って見れ。
0762とんちんかん02/05/20 14:27ID:827vrQS8
Perl を使ってあるWin2kのログ ファイルから必要な情報を別のテキスト ファイルに抽出
してるんですが、ちょっとした理由でこのログ ファイルが Unicode 形式になってしまいまいた。
でこのスクリプトで読み込んでみたら案の定白紙のテキスト ファイルを作ってくれました。
Perl で UCS2 のファイルの読み書きってできるんでしょうか?
Jcode.pmとかって使うんですか?
教えて君ですみません。
0763nobodyさん02/05/20 16:08ID:???
>762
yes.
0764nobodyさん02/05/20 20:31ID:???
すみません。勉強したての超初心者ですが、下の場合どのように書けばいいのでしょうか。
例えば
a==bで尚且つcの場合"あいうえお"を返す。a==bで尚且つcで無い場合"アイウエオ"を返す。
a==bでなかったら"123"を返す。それ以外は"---"を返す。

それで

if(a==b){if(c){z="あいうえお"}else if{(c){z="アイウエオ"}
}
else if{(a!=b){z="123"}
}
}
else{z="---"}

だと、当たり前のようにエラーになります。教えて君ですみませんが皆さんの力を貸して下さい。
0765 02/05/20 21:05ID:???
s/[a-z]+//;

とか正規表現にマッチした部分が格納される変数の名前ってなんでしたっけ?
0766nobodyさん02/05/20 21:08ID:???
>>764
もし $A eq $B かつ $A eq $C のとき $Z="あいうえお";
そうじゃなくて $A eq $B かつ $A ne $C のとき $Z="アイウエオ";
そうじゃなくて $A ne $B のとき $Z="123";
それ以外のとき $Z="---";

if && elsif else
0767nobodyさん02/05/20 21:32ID:???
>>765
とうとうこんな質問まで出るようになったか・・・。
検索もできないクズはプログラミングなどやるな。
0768nobodyさん02/05/20 21:34ID:???
>>764-765
おい、流石にLV低すぎだろ。ネタだとしても酷すぎる。
0769nobodyさん02/05/20 21:38ID:yMovYRK1
Image::Magick を使って画像の切り出しをやろうと思います。

$img = Image::Magick->new;
$img->Read( $file );
$img->Crop( $w, $h, $x, $y );
$img->Write( $file2 );

とやることで一ヶ所の切りだしはできるのですが、
格納している画像をカットしてしまうので、部分コピーするか、
元画像をコピーしようと思います。

ループの中に
$img2= $img->Clone;

を入れて、 $img2 に対して処理を行うことにしましたが、
Cropが有効にならなかったり、前回と同じ位置が吐き出されたりと
うまくいきません。

指定範囲を別の変数にコピーして、そこから書き出すということを
やりたいのですが、どのようにしたらいいでしょうか?
077076902/05/20 22:08ID:???
>>769
原因わかりました…。
単に座標の指定を間違えているだけでした…。
0771長瀬 愛02/05/20 22:16ID:95UXUtUe
>>764
カッコの数があわないのではないか。
それはともかく、この判定条件ではz="---"の文には
至らない気がするがまあいいや。

if(a==b){
if(c){
z="あいうえお";
}else if(c){
z="アイウエオ";
}
}else if(a!=b){
z="123";
}else{
z="---";
}


>>768
グレシャムの法則というのがあってね以下略
0772nobodyさん02/05/20 22:17ID:???
elsif
0773771 長瀬 愛02/05/20 22:30ID:95UXUtUe
perlスレだった。
くどいけど旅の恥はかきすて。

if($a==$b){
if($c){
$z="あいうえお";
}elsif($c){
$z="アイウエオ";
}
}else{
$z="123";
}
0774 02/05/21 00:24ID:???
>>767
初心者は何がわからないかもわからなくて、検索もできません。
答える気がねーなら、煽ってんじゃねーヴォケが
ここは”一応”初心者スレなんだから。


オレモナー。
0775nobodyさん02/05/21 02:20ID:iePDZE0b
すいません、Perlの質問ではなく申し訳ないのですが、CGIの呼び出し方で一つ質問があります。
SSI/.htaccessが使用できないサーバ上にPerlで作成した単純なテキストを返すCGIをアップロードしました。
IEのアドレスエディットボックスに直接CGIのアドレスを入力すると正常動作しています。
これをindex.htmlがロードされると同時に読み込みたいのですが
CGIの参考書に載っている<!--exec cmd="hoge.cgi"-->や<img src="hoge.cgi">の呼び出し方が出来ません。
この他にindex.htmlと同時にhoge.cgiを読み込む方法がありますでしょうか?
0776nobodyさん02/05/21 02:53ID:???
>>775
JavaScriptで飛ばすとか。
0777nobodyさん02/05/21 02:58ID:OppOtViG
>>775
「SSI/.htaccessが使用できないサーバ」ですから
<!--exec cmd="hoge.cgi"-->
は使えません。

「単純なテキストを返すCGI」ですから
<img src="hoge.cgi">
はイメージデータが返さなければ意味がないです。

<script src="hoge.cgi"></script> で呼び出して、
ソースを下記のように javascript に書き換えましょう。

$text = "出力する文字列";
print "Content-type: text/plain\n\n";
print "document.write('$text')\;\n";
exit;
077877502/05/21 03:11ID:iePDZE0b
776さん、777さん
ご丁寧なレスありがとうございました。
早速試してみます。m(__)m
0779nobodyさん02/05/21 03:36ID:???
(´-`).。oO(>>775 JavaScript 常時 OFF な人には見えないね…)
0780nobodyさん02/05/21 03:53ID:1dGqnG5G
質問なんですが、携帯からなので、ログ参照、検索は勘弁願います。

学内BBS作ってるんですが、全員同じプロクシなので、
ほかに手っとり早く個人識別する方法はありますでしょうか。
0781nobodyさん02/05/21 04:01ID:???
>>780
(1)全員に固有のIDとパスワードを配布する。
(2)書き込みは係りの人に紙に書いて手渡しにする。
(3)自分だけ書き込み出来るようにすれば、おそらく書き込んだのは君だ。
(4)名前を書かせ、それを信じる。
078277502/05/21 04:04ID:iePDZE0b
>779さん
試して見ましたが、どうやらそのようですね。
ASAHIネットがCGIのβサービスを開始したからCGIの勉強を始めようとしたのですが・・・
うーん、他の人達は一体どのように対応しているのかなぁ???
もう少し調べて見ます。
ご指摘ありがとうございました。
0783nobodyさん02/05/21 04:09ID:???
>>782
イメージデータにして<img src="hoge.cgi">すれば?
0784nobodyさん02/05/21 04:11ID:1dGqnG5G
>>781
うーん、2chのIDみたいなのとかつけたら
面白がると思うんだよね。

5) 300カ国の人間が300人自分の言語で書く。
0785nobodyさん02/05/21 04:57ID:???
(´-`).。oO(>>784 全員同じ串なら、リモホも同じだよね?よって、IDも同じになると思うが?…)

あ、非匿名串とかは別ね
0786nobodyさん02/05/21 06:14ID:???
普通のPerlとアクティブパールの違いだってなんですか、
今度IISでPerl使うんですけど、選択に迷ってまして、
どんなもんでしょ?
0787nobodyさん02/05/21 06:22ID:???
(´-`).。oO(>>786 名前が違う…)

ドキュメントぐらい読めよ。ヴァカwin房
078878602/05/21 06:34ID:???
>>787
しゃべんなって。
0789nobodyさん02/05/21 09:32ID:???
>>788
最近この手のアフォよく見るな。たいした質問内容でもないくせにやたら偉そうだな

↓はい、次の方どうぞ
0790nobodyさん02/05/21 10:59ID:???
Perl → 言語名
ActivePerl → 処理系名

ですよ。
0791nobodyさん02/05/21 11:05ID:???
>>787 >>789
煽りなら他でやっていただけますか?
邪魔です。
0792nobodyさん02/05/21 11:52ID:???
>>791おまえも邪魔だ。いちいちレスするなって。
0793nobodyさん02/05/21 12:47ID:???
>>785
だからIP.リモホ以外で個人を識別する方法を…
0794nobodyさん02/05/21 13:04ID:???
掲示板などでhttp://〜から始まるURLに自動でリンクしたいのですが、
どうしてもうまくいかない箇所があるのでどなたか教えてください。

書き込まれる本文を「$message」としたとき、
$message =~ s/(http:\/\/[ほげほげ]+)/<a href=\"$1\">$1<\/a>/ig;
こんな感じになると思うんです。

そこで、
$message =~ s/(http:\/\/[\w\.\,\/\~\-\+\=\#\%\&\?\(\)]+)/<a href="$1" target="_blank">$1<\/a>/ig;
こういう記述でやってみました。

ところが、どうしても以下のような「,」が続くURLや、
ttp://k-tai.impress.co.jp//cda/article/news_toppage/0,,9441,00.html
以下のような「&」が入るときに、URLのリンクがそこで途切れてしまうのです。
ttp://news.lycos.co.jp/company/story.html?q=20bloombergki1580637&cat=10

試行錯誤してみたのですが、詰まってしまいました。
どなたか教えて頂けませんか?
0795nobodyさん02/05/21 13:50ID:???
>>794
http://www.din.or.jp/~ohzaki/perl.htm#httpURL
079679402/05/21 14:21ID:???
>>795
参考にさせて頂きます。
実は結構難しいんですね…。
0797とんちんかん02/05/21 14:30ID:+ltjKcZF
すいません。
Jcode,pMの実装例がみたいのですが、サンプルどこかにないでしょうか。
けっこうしつこく検索してるんですが。。。

UCS2をよみこむスクリプトつくりたいのdせうが。
0798nobodyさん02/05/21 14:34ID:???
エディタスレに載ってたんだけど
DzSoft Perl Editorは良さそうだね。
(ただし、フリー版は行数制限あり)

http://www.dzsoft.com/dzperl.htm
0799nobodyさん02/05/21 16:11ID:???
サーバの起動状況を見ようと思っています。

最初はSocketを使って、レスポンスが帰ってきたらUpというようにしていましたが、
性質上どうも動作が重いので、代わりにpingで見ようとしましたが、全然資料が無くてよくわかりません。

どなたかご教授願います。
0800800?02/05/21 16:21ID:???
Socketでファイル取得して、保存しようと思うのですが画像ファイルなどがうまく保存できないんです。
普通のテキストファイルはちゃんとできるのですが。
有用なリンクなどがあれば教えていただきたいです。
0801nobodyさん02/05/21 16:44ID:???
binmodeってオチですか?
0802nobodyさん02/05/21 16:50ID:???
>>801
binmodeは多分やってるはずですが・・・。
以下ソースです。
$addr = (gethostbyname("www.2ch.net"))[4];
$name = pack("S n a4 x8", 2, 80, $addr);
socket(S, 2, 1, 0);
connect(S, $name);
binmode(S);
select(S); $| = 1; select(stdout);
print S "GET /back.jpg HTTP/1.0\n\n";
open(A,">>back.jpg");
while (<S>) {print A;}
close(A);
close(S);
0803nobodyさん02/05/21 17:13ID:???
binmode(A)だし、<S>に何がかえってくるかコンソールで確認した?
ダメすぎです。
0804nobodyさん02/05/21 17:37ID:Eo1hAg2d
$target =~m/ー/;

"ー"は日本語のハイホン

これが走らないのですが、ーはできないのですか?
0805nobodyさん02/05/21 17:41ID:???
このスレは
【Perl】FAQを敢えて質問するネタ心者コーナー
に変更されますた。
0806nobodyさん02/05/21 18:08ID:???
ハイホン
http://www.google.co.jp/search?num=100&hl=ja&safe=off&q=%83%6E%83%43%83%7A%83%93&btnG=Google+%8C%9F%8D%F5&lr=lang_ja
ハイフン
http://www.google.co.jp/search?num=100&hl=ja&safe=off&q=%83%6E%83%43%83%74%83%93&btnG=Google+%8C%9F%8D%F5&lr=lang_ja
ハイプン
http://www.google.co.jp/search?num=100&hl=ja&safe=off&q=%83%6E%83%43%83%76%83%93&btnG=Google+%8C%9F%8D%F5&lr=lang_ja
0807nobodyさん02/05/21 18:18ID:???
ヒロポン
ttp://www.warbirds.nu/heiki/42000.htm
0808nobodyさん02/05/21 20:48ID:???
>>803
んーいまいちよくわからんです。。
0809nobodyさん02/05/21 22:04ID:???
>808
参考サイト(http://x68000.startshop.co.jp/~68user/)
書き出すファイルのファイルハンドルもbinmodeにしてね。
それとHTTPの応答は邪魔だから捨てると。
IO::SocketやLWPもチェック。
================================
use Socket;

$port = getservbyname('http', 'tcp');
$iaddr = inet_aton("www.2ch.net") or die "www.2ch.netは存在しないホストです。\n";
$sock_addr = pack_sockaddr_in($port, $iaddr);

socket(SOCKET, PF_INET, SOCK_STREAM, 0) or die "ソケットを生成できません。\n";
connect(SOCKET, $sock_addr) or die "www.2ch.netのポート$portに接続できません。\n";
select(SOCKET); $|=1; select(STDOUT);
binmode(SOCKET);

print SOCKET "GET /back.jpg HTTP/1.0\r\n";
print SOCKET "\r\n";
while (<SOCKET>){
    m/^\r\n$/ and last;
}

open(FH, "> tmp.jpg");
binmode(FH);
while (<SOCKET>){
    print FH $_;
}
close(FH);

0810nobodyさん02/05/21 22:04ID:???
>>806暇人
0811nobodyさん02/05/21 23:11ID:???
>>810ハイホン
0812nobodyさん02/05/22 00:59ID:???
>>811ハイプン
0813nobodyさん02/05/22 09:31ID:???
勢ぞろいだな
0814nobodyさん02/05/22 11:42ID:o5bpVYAL
length($value)のように
配列のサイズを求めたいのですが、length(@arry)や(-s @arry)で取れません。
サイズを求める記述を教えてください。
0815nobodyさん02/05/22 12:29ID:TrskWj5V
>>814
foreach (@arry){$length = length;}
0816nobodyさん02/05/22 12:30ID:???
>>814
配列をスカラーコンテキストで評価すると要素数になります。
my @array = 0..99;
my $c = @array;
print $c;

それともこういうこと?
my @array = 0..99;
my $length = 0;
map { $length += length } @array;
print $length;

どちらにしろまともな参考書を読むのをお勧めします。
0817nobodyさん02/05/22 14:29ID:FKXAo2H1
$length=$#array_name;
0818nobodyさん02/05/22 14:31ID:FKXAo2H1
ちなみにハッシュは、
$length=keys %hash_name;
0819nobodyさん02/05/22 14:34ID:dip8mLbF
DBMファイルに、配列を格納したく、

use MLDBM 'GDBM_File';
tie (%db, 'MLDBM', 'data.pag', O_CREAT|O_TDWR, 0644) || die;

としましたが、
MLDBM:error Second level tie failed 'ファイルもディレクトリもありません'
と出て止まってしまいます。
スカラーを格納する時は、use GDBM_File ですぐできたのですが、
このエラーの原因が解りません ;;
Diedは上記エラーの次に出ます。MLDBMは最新です。
どなかた勘所の解る方、ヒントでも教えていただけませんか。 よろしくお願いいたします。
0820nobodyさん02/05/22 14:35ID:LbPQIjeD
CGI上で
Content-type: text/html\n\n
書いて、HTMLを表示したものを、処理の終わりがけに消して
Location: jump_url\n\n
したいのだが、どうすればいいのれすか
0821nobodyさん02/05/22 14:51ID:???
>>820
定期的に監視するフレーム作る。
0822nobodyさん02/05/22 15:16ID:7BsbRs8K
>>821
言っていることがいまいちわかりません。
参考URLがあったら、教えてくれ。
0823nobodyさん02/05/22 15:19ID:???
CGIの中にカウンターを付けたいのですが誰か作って下さい(テキストカウンター)
2重カウント防止のやつね。
0824nobodyさん02/05/22 15:44ID:???
>>823
What are you?
0825nobodyさん02/05/22 16:12ID:???
>>823
print "僕はカウンターすら作れない厨房です";
0826nobodyさん02/05/22 16:37ID:JlVHE84P
(・∀・)?
0827nobodyさん02/05/22 16:50ID:???
>>820
結果表示用のフレーム(F1)とCGIの進行状況を監視するフレーム(F2)をつくる。
F1にはCGIの出力を垂れ流す。(長時間無出力でタイムアウトしないように注意)
F2ではCGIの状況を監視する監視用CGIを実行する。
監視用CGIは処理が完了するまでrefreshでループする、完了したらWindow全体をどっかに飛ばす。
0828nobodyさん02/05/22 17:24ID:B5h8aDro
携帯で「Location」が出来ないんですけど、何故でしょうか?
PCなら飛ぶんですが。。。
0829nobodyさん02/05/22 17:29ID:T+IRZr/d
>828
仕様です。
0830 02/05/22 17:30ID:???
>>828
Locationヘッダを絶対パスじゃなく相対パスで指定してるとか?
0831nobodyさん02/05/22 17:43ID:B5h8aDro
>>830
絶対パスで指定しています。
cgiにジャンプしてるんですが、できないんでしょうか?
0832nobodyさん02/05/22 17:48ID:???
>>831
ソース晒せ
0833nobodyさん02/05/22 18:23ID:a/hkqU17
あのー.............カウンター..................お願いします
0834nobodyさん02/05/22 18:26ID:???
>833
> いらっしゃーい、Perlの「コーディング」で困ってる人のスレです。
>
>1:自分はこう言う事がしたい。
>2:それでこんな風にやってみたが・・・
>3:それだとこんなエラーが出て上手く行かなかった。
>
>1と3が無いと誰も答えられないよ、良い回答は良い質問から。
>一緒に勉強しましょう。
0835nobodyさん02/05/22 18:51ID:???
最近はこのスレにぎやかだな。燃料が湧き出る湧き出る・・・
0836nobodyさん02/05/22 18:59ID:dip8mLbF
くだらん質問よろしいですか。
2ch掲示板のID付与機能は、何を見てなされているのでしょうか。
環境変数でしょうか。
cookieでしょうか。
よろしくお願いします。
0837nobodyさん02/05/22 19:04ID:???
>>836
環境変数です。
083883602/05/22 19:08ID:dip8mLbF
ありがとうございます!

0839nobodyさん02/05/23 00:03ID:wU66PY4j
フォームの最大文字数の設定なんですがこれだとエラーが出ます。

if (length($data{'coment'}) > 500){print 'コメントが長すぎます。'
}else{

構文チェックではOKが出るんですが、どこが間違ってるんでしょうか?



0840nobodyさん02/05/23 00:12ID:???
>>817
要素数なら、
$length = $#array_name + 1;
で、ないか。
0841nobodyさん02/05/23 00:54ID:???
>>839
>これだとエラーが出ます。
エラーの内容を書けない理由でもあるんでしょうか?
>フォームの
 ↓ ヘッダ(Content-type)出力してますか?
>print 'コメントが長すぎます。'
0842nobodyさん02/05/23 01:04ID:???
>>841
例によってコマンドラインでなくてHTTP500のエラーなんだろう・・・
0843nobodyさん02/05/23 04:41ID:???

・ ・ ・ ヽ(´ー`)ノ ・ ・ ・
0844nobodyさん02/05/23 16:07ID:???
htmlから<a href>のタグで指定されているURLを抜き出したく
$strtmp = htmlテキスト
の条件で

$strtmp =~ /<a*href=(\w+)>/i;
print "URL = $&\n";

のように指定しておりますが、$&が返ってきません
($1にしても同様でした)

なるべくシンプルな形で改善方法およびもっと良い方法があれば
ご教授いただけますでしょうか。

0845nobodyさん02/05/23 16:11ID:???
>844
×a*href
○a.+?href
084684402/05/23 17:00ID:???
>>845
ありがとうございます。
どうしようもないとこまちがってました。
ただ、直してもやはり結果が

URL =

と何も出てきません。なぜなのでしょう??
0847nobodyさん02/05/23 17:10ID:yzRVE+W0
 はじめまして。

 えっとperlの関数でエクセルのMAXやMINと同じ働きをするのはないの
でしょうか?

 やりたいことは、
 ある配列リストの中で、一番大きな数字と一番小さな数字を抜き出したい
んです。

 例えば
 @AA = (1, 0, 5, 13, 8, 0, 4,);
 となっていたときに、最小の0と最大の13を抜き出して、それぞれを別々の
スカラー変数に入れるようにするにはどうしたらいいのでしょうか?
(@AAの中に入る数字は、整数だけです。また@AAの中身は別の計算で出た答え
を順番にならべたものなので、可変します)

 よろしくおねがいします。
0848nobodyさん02/05/23 17:26ID:???
>>844
perlfaq9

#!/usr/bin/perl -n00
# qxurl - [email protected]
print "$2\n" while m{
< \s*
A \s+ HREF \s* = \s* (["']) (.*?) \1
\s* >
}gsix;

>>847
# もっと効率いいのがあるかも
@AA = (1, 0, 5, 13, 8, 0, 4,);
@BB = sort { $a <=> $b } @AA;
$MIN = shift @BB;
$MAX = pop @BB;
0849nobodyさん02/05/23 17:28ID:???
>846
\wは正規表現でなにを意味するかをよく考える。
そしてURLに使われる文字列に必ず入るはずのものを考える。
://
0850うんざり02/05/23 17:49ID:???
(´-`).。oO(>>844 質問の前に >>3 の perl メモぐらい読めよ…)

0851847です02/05/23 18:24ID:ETJF2qc1
>848さん

 すごい!素早い回答ありがとうございます。
 そうか、sort使えば出来ますね。関数ばかりを探していたので、気がつか
なかったです。

 ありがとうございました。
0852nobodyさん02/05/23 19:27ID:9GY0TqYi
PerlはラリーがNSA勤務時代に「大量の文字列処理」をこなすために開発しましたが、ラリーがなぜNSAで「大量の文字列処理」などをしなければならなかったのか、誰か知りませんか?
0853nobodyさん02/05/24 01:20ID:T4wzQrMy
多次元配列のソートで悩んでいます。
教えて下さい。

@array の中は $array[a][b][c][d]...
と言う感じになっていて、
aの部分や、bの部分など条件を変えてソートが出来るようにしたいのですが
どうゆう方法でやるのが一般的なのでしょうか?
sort関数は使えなそうなので、自分で作るしかないんでしょうか。
0854nobodyさん02/05/24 02:25ID:???
掲示板を作ろうと思っていたのですがサーバーエラー500が出て動きません。(パーミッションや転送モード、perlのパス表記は間違っていません)
ソースは下のurlにupしておきました。ご指導お願いします。

http://www68.dns.ne.jp/~bbs2/upload3/helen/OB0008502.lzh
0855nobodyさん02/05/24 02:28ID:???
>854
Error 500
CGI エラー - Content-Type ヘッダが正しくありません。
CGI 出力メッセージ:

Bareword found where operator expected at C:\inetpub\WWWROOT\testbbs.cgi line 33
, near "$myaction ep"
(Missing operator before ep?)
String found where operator expected at C:\inetpub\WWWROOT\testbbs.cgi line 33,
near "ep 'write'"
(Do you need to predeclare ep?)
Bareword found where operator expected at C:\inetpub\WWWROOT\testbbs.cgi line 35
, near "$mytitle ep"
(Missing operator before ep?)
String found where operator expected at C:\inetpub\WWWROOT\testbbs.cgi line 35,
near "ep ''"
(Do you need to predeclare ep?)
syntax error at C:\inetpub\WWWROOT\testbbs.cgi line 33, near "$myaction ep "
Execution of C:\inetpub\WWWROOT\testbbs.cgi aborted due to compilation errors.

ローカルでテストできる環境作れ。
http://tohoho.wakusei.ne.jp/wwwcgi6.htm
0856nobodyさん02/05/24 02:52ID:???
>>853
質問の意味が分からない。具体的に何がしたいのか書いてくれ。
aやbの条件を変えて、とかワケワカラン。
個人的にはあまり多次元にならないようにした方がいいと思う。

二次元配列で値のソートをする場合こんな感じ?
my @array;
for my $one (0..9) {
for my $two (0..9) {
$array[$one][$two] = $one * $two;
}
}
@sorted_by_value = sort { $b <=> $a } map { @{$array[$_]} } 0..$#array;
print join "\t",@sorted_by_value;
0857nobodyさん02/05/24 03:22ID:???
>>854
構文チェックだけ。
>$mytitle ep ''
↑ 4個所ほど  ↓ 3個所くらい(関係無いけど、なんでbmp?)
>$myurl = "<<a href=$myurl><img src="home.bmp"></a>>"
↓ FOOTの後ろにオマケが。
>FOOT
085885402/05/24 04:31ID:???
>>855 >>857
掲示板が表示されるようになりました
が、書き込みのところがおかしいみたいなのでまだ調整が必要なようです。
調整はひとまず寝てからにします。どうもありがとうございました。
0859nobodyさん02/05/24 05:14ID:???
相対パスでかかれたのをhttp://〜 の形に直すにはどうすればよいのでしょうか?
0860nobodyさん02/05/24 07:34ID:???
んっと・・・

&boo( @foo );

sub boo
{
パラメーターとして連想配列が
渡ってくるんだけど、
どうやって参照するのか解らないっ!

 foreach $k ( keys @_ ) {
  print "$k = $_{$k}\n";
 }
なんか、違う・・・気が・・・する・・・
}
0861nobodyさん02/05/24 08:04ID:???
中身のあるディレクトリを削除する関数ってないのでしょうか?
0862nobodyさん02/05/24 09:43ID:???
>>860
貴方は@fooを連想配列だと思っているのか、
それともデリファレンスの方法がわからないのにリファレンスを使おうとしているのか、
どっちですか。

>>861
File::Pathのrmtree

#!perl
use File::Spec;

rmtree [ '/', @other_path ], $is_verbose, $is_safe;
0863nobodyさん02/05/24 10:20ID:???
スタイルシートを切り替えるcgiを cgiの中に組み込みたいのですがどうやったらいいでしょうか
0864nobodyさん02/05/24 10:55ID:???
>>863
print "Content-type: text/css\n\n";
あとはご自由に
0865nobodyさん02/05/24 12:16ID:RsaAAUuO
SSLについて質問です。
SSLサーバー内のCGIからSendmailを使ってメール送信する場合
その内容は暗号化されるのでしょうか?
具体的には、アンケートフォームを、セキュアディレクトリ内で動かして
その内容をメールで送信したいのですが・・・・
0866nobodyさん02/05/24 12:45ID:???
>>865
それは無理。SSLは、クライアントとWebサーバ間の暗号化だけ。
PGPを使えばメール本文は暗号化できるかな!?
0867nobodyさん02/05/24 12:54ID:RsaAAUuO
ということはネット通販とかで「当店はSSLを使ってるから安全です」
とかうたっておきながら注文内容がそのままメールで来るのって、
ぜんぜん意味が無いってこと?
0868nobodyさん02/05/24 13:03ID:???
近くに本屋がなくて本買えません・・・。
インターネット上で勉強していたんですが、=~の意味がイマイチ分かりません。
誰か教えてください・・・。こんな初歩的な質問をしてスミマセン。
0869nobodyさん02/05/24 13:26ID:JeawxLYi
DBMを複数使ってデータベースっぽいものを作ろうと思うのですが、
DBMってロックできないのでしょうか?
0870質問02/05/24 13:49ID:???
。・゚・(ノД`)ノ・゚・。
ActivePerl&Apacheをインストールしってプレーンテキストで文字を表示
する事は出来たんですが、HTMLをCGIスクリプトで表示させようと思ったら
エラーが出ました。
↓↓
#! c:/perl/bin/perl

# CGIヘッダーの出力
print "Content-type: text/html\n\n";

# HTMLの出力
print "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\">\n";
print "<html>\n";
print "<head><title>Hello HTML</title></head>\n";
print "<body><p>これは、HTML文章の例です。</p></body>\n";
print "</html>";
どうしてなんでしょう?
0871nobodyさん02/05/24 13:54ID:???
>870
> いらっしゃーい、Perlの「コーディング」で困ってる人のスレです。
>
> 1:自分はこう言う事がしたい。
> 2:それでこんな風にやってみたが・・・
> 3:それだとこんなエラーが出て上手く行かなかった。
>
> 1と3が無いと誰も答えられないよ、良い回答は良い質問から。
> 一緒に勉強しましょう。

1と2はあるが、3がないな・・・。
Winでやってるなら、
print "Content-type: text/html\r\n\r\n";
にしてみ。
0872質問02/05/24 13:59ID:???
出来ました クスンν(● ´ ε `。●)
>>871
ありがとうございます。
天才ですね
0873nobodyさん02/05/24 14:12ID:kdQeUGzg
1つのソースに複数のcookieを使うとか出来ないですか?
cookie自体に名前付けるとか。
2時間弱ネットさまよってますけど、見つかんないんです…。
0874nobodyさん02/05/24 14:20ID:???
>873
もうちょっとわかりやすく。
多分できる。
0875nobodyさん02/05/24 14:36ID:lhjaJYwp
aspの質問はどこでしたらいいのでしょう…
0876nobodyさん02/05/24 14:38ID:kdQeUGzg
えっと、日付と時間秒数により乱数を発生させ、
日付が今日と同じなら同じものを表示したいんですが、
その日付と時間秒数が、名前やメールを変えると、
一緒に同じ日付でも更新されてしまいます。
0877nobodyさん02/05/24 14:41ID:???
>875
ttp://pc.2ch.net/test/read.cgi/php/984840107/
スレ一覧の検索ぐらいする!

>876
日本語で説明してくれ。
0878nobodyさん02/05/24 14:42ID:kdQeUGzg
うぁい、すいません。
もうちょっと自分でがんばってみます(鬱
0879nobodyさん02/05/24 16:07ID:ftO6wAMU
SSIがうまく行きません。
拡張子は.shtmlで
<!-- #include virtual="./aaa.cgi" -->
と記述しています。
cgiを直接起動させると正しく出力しています。
パーミッションもいろいろと試してみました。
どのような対処が考えられますでしょうか?

ちなみにサーバはGMOのサーバで試してます。
ローカルではうまく動いているのですが・・・。
0880nobodyさん02/05/24 16:33ID:???
>>868
>>1
> いらっしゃーい、Perlの「コーディング」で困ってる人のスレです。
>
> 1:自分はこう言う事がしたい。
> 2:それでこんな風にやってみたが・・・
> 3:それだとこんなエラーが出て上手く行かなかった。

遠くの本屋で本を買え。
0881 02/05/24 16:53ID:???
>>879
virtualで読み込むSSIが直接起動で正しく出力?
Content-type: text/htmlヘッダしか吐かないはずなのに
正しく表示されるほうがおかしくないかい?
0882nobodyさん02/05/24 17:22ID:ftO6wAMU
>>881
shtmlファイル上にCGIで出力されたテキストをのせたいので、
<table>
〜
</table>
までを出力させてます。

ブラウザでCGIを直接起動すると
タグには<table>〜</table>までちゃんと出力されてました。
shtmlから起動すると
<!-- #include virtual="./aaa.cgi" --> これがそのまま書かれているだけです。
なにか根本的に間違ってたりするのでしょうか・・・。
0883nobodyさん02/05/24 17:43ID:???
>>867
クレジットカード番号がメールに書かれていたら問題だけど、
商品名や自分の名前くらいなら別にいいんじゃない?
それすらイヤならそもそもメール使えないし。
0884 02/05/24 17:45ID:???
>>882
ローカルでうまく動いてるって、ローカルサーバではなくその事?
目的のサーバでSSIのvirtualが使えるのならCGIに問題あるとしか
考えられないけど。
いずれにしてもソースを見なければ。
0885nobodyさん02/05/24 18:25ID:???
誰か>>859にも答えてください・・・。お願いします。。。
0886nobodyさん02/05/24 18:33ID:???
>>885
あんたの提示した情報からじゃ、無理としかいえんな。
答えて欲しければ何がしたいのか、どういう状況なのか詳細に書いてくれ。
0887nobodyさん02/05/24 18:42ID:???
>885
環境変数を色々使えばできるとは思うが、情報不足で答えられん。
環境変数も鯖によっては取得できなかったりもするし。
0888nobodyさん02/05/24 18:45ID:???
>885
全自動でやることを考えるよりも、
$local_path = '..';
$full_path = 'http://〜〜/cgi-bin';
$path =~ s/$local_path/$full_path/;
と手入力でやった方が簡単だぞ。
スクリプトを配布するなら別だが、それだと環境変数でのやり方は鯖によって
可不可が変わるから難しいと言っておく。
088988502/05/24 18:57ID:???
そうですね。自分が書いた情報だけじゃ何言ってるかさえわからないですね。。
えっと、Socket使って他サーバーにあるHTML読み込んでそこにあるタグから
アドレスを抜き取ってファイルをダウンロードしてみようとか考えて、
http://〜の形式のアドレスではできたのですが、相対パスはいろいろ考えてみたのですが
よくわからないので相談してみたんです。
0890nobodyさん02/05/24 19:06ID:???
>889
ソケットを使うって事はその基点となるURLはわかってるわけだろ?
だとしたら、そこから「../があったらURLを削る」、「./だったら同じフォルダ」で
URL変換を入れればいいだけじゃないのか?
0891nobodyさん02/05/24 22:19ID:???
>>889
・HTML読む
・<base>, <meta http-equiv="base">があったらそれ、無い場合はリクエストからベースURLをつくる。
・相対パスだったら連結する。.や..はhttpサーバがよきにはからってくれる。
0892nobodyさん02/05/24 22:32ID:ftO6wAMU
>>884
ローカルサーバではうまくいってます。
借りてる鯖の説明にはSSIは使えるとかいてありますが、
普通のhtmlファイルやテキストファイルをインクルードしても全く反応しません。
本当にSSI使えるのかな・・・・。
0893nobodyさん02/05/24 23:01ID:???
>>892
<!-- #include virtual="./aaa.cgi" --> を
<!--#include virtual="./aaa.cgi"--> にしたら動いたりしてな
0894nobodyさん02/05/25 02:03ID:???
>>862何言ってるか解らない
0895nobodyさん02/05/25 02:04ID:???
>>892
もう一度よく鯖の説明見て見たら?

ssi 使えても、そのssiの一部のコマンドをマスクしたりできるからね
0896nobodyさん02/05/25 03:06ID:???
俺には>>894が何を言っていて何に対するレスなのかがわからないが…

もし配列のデリファレンスが判らないのならば、
@{$array[0][0]}のように、@{}の中にリファレンスを書けばいいだろう。

File::Pathのrmtreeがわからないなら実際にドキュメント読んでまず試せ。
0897nobodyさん02/05/25 03:32ID:???
Storable ver2.0 をインストールしようとしたら、Test::Moreが
ネエYOとWarningが出た。CPANへ探しに行ったが見あたらん。
何ですのコレ。make test に問題が出るだけで、そのまま使え
そうな気もしますが。
0898nobodyさん02/05/25 03:41ID:???
これか?
http://search.cpan.org/doc/MSCHWERN/Test-Simple-0.44/lib/Test/More.pm
0899nobodyさん02/05/25 03:59ID:???
おお、こんな夜中に速レスが付くとは。サーチすればヨカッタ
んやね。一生懸命、目で探してますた。ありが�d
0900nobodyさん02/05/25 05:07ID:???
つーか、なんでperl -eshell -MCPANつかってないんやねん。
0901nobodyさん02/05/25 07:46ID:/kHlEeLM
本体スクリプトでuse strictしている場合、requireした
サブルーチン内からmain内でmy宣言した変数を
参照するにはどうすれば良いのでしょう。

引数で参照渡しするしかない・・・?
それとも、これってmy宣言の意味わかってない・・・?
0902nobodyさん02/05/25 09:39ID:???
>>901
>引数で参照渡しするしかない・・・?
>それとも、これってmy宣言の意味わかってない・・・?

その通り。my 宣言されたもんはlocal変数だと思ってください
0903nobodyさん02/05/25 09:45ID:XVu0yEmF
JAVAscriptで新しいウィンドウを開き、そこに本に付いてたCGIの
実行結果を表示させようとしています。
str1 = URL_CGI + "?" + form.namae.toString()+ ...略;
window.open(str1, ...略);

普通にフォームのactionでこのCGIを呼び出すと、
新しいウィンドウのロケーションバーには引数無しのアドレスが
表示されますが、
http://www.abc.jp/abc.cgi
上の方法で呼び出すと引数付きのダラダラと長いアドレスが
入ってしまいます。
http://www.abc.jp/abc.cgi?data:namae=山田太郎&toshi=...略

この無駄に表示される引数の部分を無くしたいのですが、
どうすれば良いでしょうか?
「JAVAscriptで新しいウィンドウを開き..」の部分は変更不可です。
どうか皆さんの知恵をお貸し下さい。
0904nobodyさん02/05/25 09:54ID:???
>903
無理。
0905nobodyさん02/05/25 10:19ID:???
>>903 どうしてそれがperlの質問なんだ?
090690302/05/25 10:33ID:XVu0yEmF
>905
PerlCGI側の操作でもなんとかならないかなと思ったんです。

一旦新しいウィンドウを開いておいてから
移動とかどうとか・・・駄目ですか?
では、アプローチを変えます。
903の挙動が何故問題になるかというと、
cookieが複数になってしまうからなんです。
これを統一しようと思ったらどうすればよいのでしょう? なにとぞ・・・
0907nobodyさん02/05/25 10:51ID:???
>>906
perl以前の問題。
CGIで〜〜な事がしたい。perlではどうするのでしょう? なら話はわかるが。
〜〜のところをはっきりさせてから出直しな。
0908nobodyさん02/05/25 13:31ID:???
use strictした時に、while(<HOGE>)
とかで取り出す変数をそのループの外で使う場合
はどうすれば良いですか?
0909nobodyさん02/05/25 16:20ID:???
ループの外で変数を宣言する。
0910nobodyさん02/05/25 17:24ID:???
HTMLのソースから特定のタグの中にあるパスを取ろうとしているのですが
foreach (@data){
if(/<a href="(.*?\.($ext))">/i){
print $1;
--処理--
}
if(/<img src="(.*?\.($ext))">/i){
print$1;
--処理--
}
}
※@dataはHTMLのソースが入っている。$extは拡張子
とやっていて拡張子をgif、jpgなどですると
<a href="hoge/hoge.html"><img src="hoge.jpg"></a>と言う形式の時に
出力が hoge/hoge.html"><img src="hoge.jpg と出力されてしまいます。
拡張子が(この場合は)htmlで試すと大丈夫なので自分でも解決方法を考えても
わからなかったのでここで質問させてもらいに来ました。
0911アルバムモナ02/05/25 17:31ID:yOCzjbyc
アルバムモナーつくってみますた。通報汁?
http://isweb37.infoseek.co.jp/computer/man_king/
モナー写真いっぱいほしぃモナー

ところでどなたかインフォシーク鯖の詳しい環境を知っておられる方いませんでしょうか?
JSPが使えるかどうかとかしりたいです。
0912nobodyさん02/05/25 17:32ID:???
>>910
拡張子って何?ファイル名の接尾語の事?
091391002/05/25 18:08ID:???
>>912
拡張子ってファイル名がhoge.jpgだったらjpgのことを指すものだと認識してますけど
どこかちがうのでしょうか・・・?
0914 02/05/25 19:20ID:???
>>906
use LWP::Simple;
$page = http://www.abc.jp/abc.cgi?data:namae=山田太郎&toshi=...略";
$doc = get $URL;
print $doc;

とかいうのはダメなのかな?
0915nobodyさん02/05/25 21:57ID:???
>>911
とりあえずスレ違い。DQN逝ってよし!
0916お願いします 02/05/26 02:39ID:WlbJvt44
フォームの改行文字だけを取り除くにはどうすればいいですか?
0917nobodyさん02/05/26 02:45ID:cGfFiopg
>>916
$hoge =~ s/[\r\n]|\r|\n//g;
う〜ん、美しくない。
0918nobodyさん02/05/26 02:58ID:???
>>916
tr/\x0D\x0A//d;

というかPerlメモ
0919教えて君02/05/26 03:10ID:???
CGIをダウンロードしてきてアクセス権など変更したのですが
表示されません。ちなみにniftyです。niftyは少し特殊だと
聞いたのですが、どこのスレで聞けばいいでしょうか?
とりあえず上の方に初心者というのがあるこのスレで
聞いてみました。よろしくお願いします。
初心者ですんません。
0920nobodyさん02/05/26 03:28ID:???
>919
>いらっしゃーい、Perlの「コーディング」で困ってる人のスレです。

ここで聞いてください。
【初級】CGI総合スレッド@Web制作板
http://pc.2ch.net/test/read.cgi/hp/1016938825/l50
092191602/05/26 03:28ID:WlbJvt44
>>917、918
出来た!ありがとー!
0922nobodyさん02/05/26 16:46ID:CiF8CZ1Z
ネプのオールナイトニッポン放送のHP開くと画面が止まって電源切んなきゃなんないんです。
前はそんなことなかったんですけど、どうしたら普通に開けますか?
0923(゚д゚)ウマー&rlo; (゚д゚)ーズマ02/05/26 17:10ID:???
 
0924スレッドストッパー&rlo;止停02/05/26 17:12ID:???
0925仕様書無しさん02/05/26 20:00ID:???
もうかけないの?
0926仕様書無しさん02/05/26 20:02ID:???
と思ったら書けるから偽ストッパーだし…

923と924はいったいなんなんだ〜?
2chがハクされてるの?
0927lo;02/05/26 20:22ID:???
>925-926
ちょっとしたことをするだけでできるよ
0928nobodyさん02/05/26 20:36ID:???
古いネタに今ごろ気付いてやってる恥ずかしい奴。
0929(゚д゚)ウマー&rlo;(゚д゚)ーズマ02/05/27 00:05ID:???
0930&rlo;ぞいなてきで&rle02/05/27 00:07ID:???
>>927
0931&rlo;・・・たっまし&rle;02/05/27 00:08ID:???
 
0932仕様書lo;無しさん02/05/27 00:54ID:???
のほほ
0933lo;・・・たっましle;02/05/27 00:55ID:???
古いネタだったのか・・・
知らなかった
0934nobodyさん02/05/27 08:16ID:???
( ´,_ゝ`)プッ
0935nobodyさん02/05/27 16:05ID:???
iアプリってjaveで出来てんだね。
今日気がついた。
0936nobodyさん02/05/27 16:27ID:???
jave?javaでしょ?(プ

という煽りレスの一つでもつけようとしたが、もしかしたら俺が知らないだけかもしれない、
と思って、ひとまず検索することにした。
するとどうだ、javeは存在するではないか。
http://www.jave.de/
あぶないあぶない。無知を晒す所だった。
俺もこのソフトでいっちょiアプリでも作ってみるか。
0937nobodyさん02/05/27 20:23ID:HK5rJclO
i-mode以外のアクセスを弾こうとして書いたけどうまくいきません。
(自分のdocomoも弾かれてしまう)どこが間違ってるんでしょうか?

if ($ENV{'HTTP_USER_AGENT'} ne~ /DoCoMo/) {
print "Location: http://www.yahoo.co.jp/\n\n";
}else{
0938nobodyさん02/05/27 20:38ID:???
チルダの位置がおかしい。
0939nobodyさん02/05/27 20:58ID:3m1HaKVa
HTML::Templateモジュールについて質問

使用法として、プログラム側で

$template->param(
HOME => $ENV{HOME},
PATH => $ENV{PATH},
);

みたく変数を用意して、HTMLまじりのテンプレート側で

My Home Directory is <TMPL_VAR NAME=HOME><br>
My Path is set to <TMPL_VAR NAME=PATH><br>

なんて使うんだけど、プログラム側で事前に用意した変数を
テンプレート側で使用しないと、何も出力されなくなるんです。

これを防ぐ方法か、もしくは適当な回避策って無いんでしょうか?
実際に使用してる方の意見が聞いてみたいです。

ちなみに現在は、不要な変数名が「BOOL」だとしたらテンプレート側で
<TMPL_IF BOOL><TMPL_ELSE></TMPL_IF>
なんてお茶を濁しています
0940nobodyさん02/05/27 21:46ID:???
>>939
何がしたいのか分からん。
宣言をしていない変数を参照すれば空白であってしかるべきだと思うのだが。
お茶の濁し方も意味不明。それじゃどうやっても空文字列にしかならんだろ。
0941nobodyさん02/05/27 22:17ID:???
Carpなどの出力を文字列して取り込みたいんですけど、
(標準、エラー出力を文字列かしたいって事っす)
「うまい」方法教えてください。

「よろしく、おながいします」
0942nobodyさん02/05/27 22:34ID:???
>「よろしく、おながいします」
悪い。ネタの相手してる暇はねぇんだわ。
094394202/05/27 22:49ID:vs9qORcp
>>942
教える気ねぇ〜なら、すっこんでおつぅ〜の、わかったか?
0944nobodyさん02/05/27 22:53ID:???
>>943
そんな態度のお前が逝ってよし!
0945nobodyさん02/05/27 22:56ID:???
質問です。

悪質な質問->DQN逝ってよし!->スキルねぇやつはすっこんでろ!

この三連コンボはジエンですか?
0946nobodyさん02/05/27 23:00ID:???
>>945
全て941のネタです。
0947nobodyさん02/05/27 23:40ID:???
>>939
> 何も出力されなくなるんです。
STDERR にエラー吐き出されるんで、httpdのエラーログ見なよ。

本題は、ドキュメントを良く読んで、new で die_on_bad_params => 0 しる。
で、エラー無視するハズだがなあ。俺はやったこと無いけど、
デバッグする時なんかは、簡単にコメントにしてるな。
$template->param(
HOME => $ENV{HOME},
PATH => $ENV{PATH},
#BOOL => $fuga
);
094894202/05/28 00:12ID:???
だからさ、教える気の無い奴つぁ〜、すっこんでおろっての、
ひきつづき、「よろしくおながいします。」
094993702/05/28 01:10ID:yZ0xvPBx
色々やってみたけどうまくいかないです。
どうしてもdocomoが弾かれてしまう。どこが間違ってるんでしょうか?
if ($ENV{'HTTP_USER_AGENT'} ne ~ /DoCoMo/) {
print "Location: http://www.yahoo.co.jp/\n\n";
}else{


0950nobodyさん02/05/28 01:12ID:???
うれしいとき〜
正規表現でかわいい顔が出た時〜
0951nobodyさん02/05/28 01:30ID:???
>>949
!~
0952nobodyさん02/05/28 01:32ID:???
>949
まずは正規表現の書き方から覚えよう。
if ($ENV{'HTTP_USER_AGENT'} ne ~ /DoCoMo/) {
だと
if ($ENV{'HTTP_USER_AGENT'} ne ($_ =~ /DoCoMo/) ) {
になるんじゃないかな?
まず一致する事はないね。
0953nobodyさん02/05/28 01:48ID:???
>>952
正規表現の書き方はおかしくねえだろ。おかしいのは、パターン
結合演算子の書き方。つか、キミ自身が正規表現とは何たるかを
勉強した方が良いとちゃう?
0954nobodyさん02/05/28 01:56ID:???
>953
確かに色々間違ってた模様。
ありがとう。

ttp://a414s1.it.nanzan-u.ac.jp/textbook/text082100-2/node81.html
こんなの見つけて色々勉強になった。
漏れには結構基本的な部分が抜けてた模様。
0955nobodyさん02/05/28 02:41ID:???
>>954
そのリンク先のパターン結合演算子の説明おかしくないか?
俺の知らない、Perl得意の省略形かと一瞬思っっちまったが。
なんで=と!の単項やねん?もっと、まともなサイトを探すのが吉。
0956nobodyさん02/05/28 03:16ID:???
>955
鵜呑みにするところだった…
グーグル様で検索して最初にひっかかった物だからつい…
0957!~ 使え!コゾウ02/05/28 03:58ID:???
(´-`).。oO(>>952 プッ…)

if ( $ENV{'HTTP_USER_AGENT'} !~ /DoCoMo/ ) {
 print "DoCoMo 逝ってヨシ!\n";
}
0958nobodyさん02/05/28 08:36ID:???
先生!激しく初心者なのですが、掲示板の入力する項目に
「名前・メルアド・URL・本文」以外に年齢とか趣味とかの
項目を追加したいと思います。どうすればいいのでしょうか?

テスト用のサンプルとしてKENTさんのASKA BBSを使ってます。
http://www.kent-web.com/bbs/sample/aska.cgi
0959nobodyさん02/05/28 08:43ID:???
>958
ttp://pc.2ch.net/test/read.cgi/php/1012839651/
スクリプト改造工房 Part4

ここに行けばいい。
0960nobodyさん02/05/28 09:05ID:5/swSF0d
超初歩的な質問で申し訳ありません。。

READで読んできた文字列データ(50kくらい)に含まれる特定の文字列(複数個)を
検索しようとしているのですが、うまく行きません・・。
if(VALUE =~ /PATTERN/){
だと一度に1つしか検索できないし
while(VALUE =~ /PATTERN/){
だと同じ部分でmatchしつづけてします。。
0961nobodyさん02/05/28 09:17ID:???
>960
検索した後どうしたいかにもよるが。
VALUE =~ /PATTERN/g;
096296002/05/28 09:41ID:???
>961
ありがとうござます。自分の持ってるperl初心者本に詳しく書いて無かった事もあり、
optionについて勉強不足でした。助かりました。
0963nobodyさん02/05/28 09:59ID:???
余談だが、

$str ne ~ /pattern/

これは

$str ne ($_ =~ /pattern/)

じゃなくて

$str ne ~ ($_ =~ /pattern/)

だろ。誰か気付けよ。


0964nobodyさん02/05/28 17:29ID:???
foreach文に関して質問させてください。

配列Aと配列Bがあったとします。
@A = (1,2,3,4)
@B = (a,b,c,d)
これを1-a 2-b 3-c 4-dと表記しようと思います。

foreach $X(@A){ print "$X";
foreach $Y(@B){ print "-$Y";
} }
この書き方だと、
1-a-b-c-d 2-a-b-c-d・・・と言うような結果になりますよね?
二つの配列の内容を同時に一回ずつ表記する方法はないものでしょうか?
0965nobodyさん02/05/28 17:31ID:???
追記:結果的に1-a 2-b 3-c 4-dという形になれば問題ないと思います。
よろしくお願いします。
0966nobodyさん02/05/28 17:39ID:???
for($i=0;$i<@A;$i++){
  print "$A[$i]-$B[$i] ";
}
これじゃダメなの?
0967だめぽ02/05/28 18:04ID:NVFnKI0C
アクセス解析のログから、昨日のアクセス数をもとめるにはどうすればよいでしょう・・?
アクセス解析に今日と昨日のカウンタをつけたいです。

ログのフォーマット
アクセス通し番号<>日付<>IP<> ・・・

日付は 2002/05/28(火) 18:00 という書式です。

別にカウンタ用ファイルを用意すれば可能ですが、ログをひとつにまとめたいのです。
やろうとすると一日のとき前月の日付がいろいろ変わるのですごい大変でした。。
お願いします。m(_ _)m
0968nobodyさん02/05/28 18:10ID:???
>967
前日の日付の求め方を聞きたいのかな?
それならlocaltime(time-24*3600);で出せばいいだけだけど。

でも、そんな事をするくらいなら、ログファイルの中に日付だけのデータを作った方が楽だと思う。
0969だめぽ02/05/28 18:22ID:???
>>968
ありがとうございます。

>localtime(time-24*3600);
これでできそうな感じがするので、やてみます。m(_ _)m
0970nobodyさん02/05/28 21:56ID:???
そろそろ次スレ立てないとやばいぞ。
0971nobodyさん02/05/28 22:53ID:IYnV1U6d
整数かどうかを判定するにはどうすればいいでしょうか?
0972nobodyさん02/05/28 22:57ID:???
>971
if($a == int($a)){
0973(・v・)02/05/29 03:55ID:???
>>968

>>967 は 2002/05/28(火) 18:00 ←こんな書式の日時文字列を
time とかで返される様な値に変換したいのカナ?

at-works の access log のログファイルみたいだ…
俺、これ改造して普通に time 値が返すような値を
カキコするように改造したが…
097481102/05/29 19:35ID:???
parlでwinのAPIって使えるんですか?
ウインドウのタイトルを取得したいんですが。
CGIじゃなくてローカルで使います。
0975nobodyさん02/05/29 21:58ID:???
aaa<>1
bbb<>2
ccc<>3
これを
2番目の数が多い順にソートしたいんですが、
どうすればいいのでしょう?
0976nobodyさん02/05/29 23:44ID:BqVeUZ/K
>>974
Win::API
ここにちょっとだけ使い方が載ってました。
http://member.nifty.ne.jp/hippo2000/perltips/perllha.htm

>>975
Schwartzian Transform
http://www.din.or.jp/~ohzaki/perl.htm#SortST


で、質問なんですが、
tieの使い方がいまいち判らないのですが、
「こういう時に使うと効果的」というサンプルありましたら教えてください。
0977スレッドストッパー&rlo;止停02/05/29 23:51ID:???
>>976
適当に流しすぎ、、、。
097897602/05/29 23:52ID:BqVeUZ/K
補足。
今はDB_File.pmを使う時にだけtieを使ってます。
例えばFETCHメソッドはtieで関連付けた変数から値を取り出す時に自動的に呼ばれる、
というのは判るんですが、それがどういう利点を持つのかが判りません。
097997602/05/29 23:53ID:???
>>977
なんか足りませんでしたか?
0980nobodyさん02/05/30 01:02ID:???
>>978
利点って・・・FETCHとかSTOREがなかったらtieをつかえへんやん

例えばだけど、Tie::Fileってモジュールは配列をtieして、
ファイルの要素を配列の要素としてアクセスできるようにしてる。

my $this_is_the_first_line = $tied_file[ 0 ];
my $this_is_the_last_line = $tied_file[ $#tied_file ];


で、ここでFETCHがどう入ってくるかというと

1) 配列要素にアクセス
2) tieされているオブジェクトにFETCH()が呼ばれる
3) ファイルのn行目を読み込んで返す

という動作を行うわけ。だからインターフェースはあくまでも配列
なのに全然配列とは違う動きをさせられる。そういう時にtieを使う。
DB_Fileも同じ。本当はハッシュじゃないんだけどハッシュをアクセス
する時に裏側でフラットファイルデータベースのレコードにアクセスしてる
わけや。
0981nobodyさん02/05/30 01:04ID:z8tD+2yU
>>974
parlってナニ?
perlなら知ってるけど…

クソレスでスマソ(゚∀゚)!!!!
0982nobodyさん02/05/30 02:14ID:9bTblmUw
1000間近にすみません。

globで返ってくるファイルのリストは、必ず順ソートされているものなのでしょうか?
ズブ初心者で申し訳ないす。
0983976,97802/05/30 03:27ID:???
>>980
詳しい説明ありがとうございます。
なんとなく掴めました。
0984 02/05/30 04:15ID:rYtvxDAS
HTTPのヘッダの

Keep-Alive: timeout=??

の??の部分はタイムアウトまでの秒数を表しているのは分かりますが、このタイム
をカウントし始めるのは何時なのでしょうか。ヘッダーを受け取った瞬間からなの
か、全てのデータを受信し終わった瞬間からなのか…ご教示お願いします。
0985nobodyさん02/05/30 04:19ID:???
>>984
Perl とどう関係あるのか、(略
098698402/05/30 04:32ID:rYtvxDAS
一応、この板はWEBプログラミングということで大丈夫かなあと思いまして…。

「HTTP」でhttp://pc.2ch.net/php/subback.htmlを検索しても余り良さそうな
スレがありませんでした。そうなると、使っている人口が多くてWEBに関わってい
る人が多そうなPerlのスレ…しかも初心者コーナーでありPart12まで続いている
老舗なら…これは行ける!とそう踏んだのですが…。
0987nobodyさん02/05/30 06:09ID:???
>>985
まぁまぁ。単発スレ立てられるよりいいのでは?
どうせ、もう落ちる訳ですし
>>984
Content-lengthを踏まえて推察するに、ヘッダ受信終了時では?
もっとも、C・S共々対応していないと話しになりませんが(w
0988nobodyさん02/05/30 06:36ID:???
>>986

CGIだけど、なんか質問ある? part 6
http://pc.2ch.net/test/read.cgi/php/1019561283/

このスレでいいんじゃない?
0989nobodyさん02/05/30 06:57ID:???
>>988
いや、問題はCGIではなくHTTP1.1かと
0990nobodyさん02/05/30 07:32ID:???
新スレ
http://pc.2ch.net/test/read.cgi/php/1021951436/
0991nobodyさん02/05/30 10:46ID:???
>>984
ドキュメント全部読んでからのはずだが、このくらい自分で実験しろよ。
ヘッダ書き出した後CGIをrefreshまで終了させなきゃ出来るだろ。
0992 02/05/30 10:57ID:???
このスレ、また次を立てるの?
0993nobodyさん02/05/30 13:01ID:???
CGIでj-phoneの絵文字を表示させたいのですが
print "$E$\n";
では、やっぱり表示されませんでした。
何か良い方法ありませんか?
0994nobodyさん02/05/30 13:13ID:???
>>992
立ててみた
【Perl】初心者コーナー Part13
http://pc.2ch.net/test/read.cgi/php/1022731565/

>>993
CGIの質問はこちらへ
CGIだけど、なんか質問ある? part 6
http://pc.2ch.net/test/read.cgi/php/1019561283/
0995nobodyさん02/05/30 16:39ID:???
>>993-994
スマソン 逝ってきます。
099627802/05/30 17:28ID:???
今更だけど、>>278はもうちょい効率良くできた。

$tag_regex_ = q{[^"'<>]*(?:"[^"]*"[^"'<>]*|'[^']*'[^"'<>]*)*(?:>|(?=<)|$(?!\n))};
$str = join '',
    map { /^</ ? map { /["']$/ ? $_ : lc } split /(["'])(.*?\1)/s : $_ }
        split /(<$tag_regex_)/o, $str;
0997nobodyさん02/05/30 23:38ID:???
997
0998nobodyさん02/05/30 23:39ID:???
放置されてるのね・・・。
0999nobodyさん02/05/30 23:41ID:???
もほー
1000nobodyさん02/05/30 23:42ID:???
             / ̄ ̄ ̄ ̄ ̄
       ∧ ∧ <1000です。
       ( ゚Д゚ ) \_____
 ̄ ̄Ψ ̄ (つ_つ_____
 ̄ ̄□∇ ̄\|オツカレサマ...| \
      ̄    =========    \ 
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。