おぼえとけよ。お前らのIPは全部保存してあるからな。 いまさら泣いて許しを請うても遅いからな(w
CGIに依存しない〜は残念だったな(ppp 糞固定どもと成れあっとけや糞虫。
何か言えよ!
386 :
299 :02/08/25 16:49 ID:???
>>322 返信遅くなってすみません
今から試行錯誤してみます。
アリガトゴザマスタ
387 :
nobodyさん :02/08/26 11:06 ID:kuaIpm20
アクセス制限のやり方教えてください。
>>387 if($ENV{REMOTE_USER}){if($ENV{REMOTE_USER} eq $dqn_user){print "Location: $url"}}
elsif($ENV{REMOTE_HOST} eq $dqn_host){print "Location: $url"}
でいいの?
proxyかけてるやつの制限ってどうやるの? 教えてー
>>389 ] あなたは Proxy を利用していますか?
]
] はい、利用しています (→Yahoo! へのリンク)
] いいえ、利用していません (→トップページへのリンク)
こんな感じのページを置いておく。
395 :
391 :02/08/26 14:21 ID:???
396 :
nobodyさん :02/08/26 15:38 ID:IyYWB8TD
kent-webのアップロード式掲示板のやつで 着メロをうpできるようにするにはどうすればいいんですか?
397 :
nobodyさん :02/08/26 17:40 ID:AuEFFmIZ
perlの勉強始めたばかりの超初心者です。
色々な人のソースを参考に本を片手にCGIスクリプトを書いているのだけど、
http://www.kent-web.com/utility/index.htmlのPerl Checkerで
自分の書いたスクリプトをチェックすると、
Missing right bracket at regist.cgi line 270, at end of line
syntax error at regist.cgi line 270, at EOF
regist.cgi had compilation errors.
って、エラーがでます。
実際の270行目って、スクリプトの終わりで何も書いてないし、
直前の269行目にはexit;
どこが悪いのかわからないんですけど、わかる人いますか?
おねがいいします。
>Missing right bracket 右ブラケットが欠けている。
たいがい、エラー行の前に原因がある。
400 :
299 :02/08/26 20:06 ID:???
>>299 ですが
open(LOG,$log);
while(<LOG>){print $table;}
close(LOG);
は
open(LOG,$log);
($date,$no,$sub,$text) = split(/\,/,$_);
$table = join('',@table);
$table =~ s/<text>/$text/g; #$sub等も置き換え
print $table;
close(LOG);
でした
もうだめぽ・・・
負荷状況を調べたくて use Benchmark; を試したいのですが、 Benchmark.pmを同じフォルダーに置いて、コマンドから実行させてみたりしましたが ダメでした。ご教授して頂けないでしょうか?
402 :
299 :02/08/26 22:43 ID:4fIS3YbU
@header; @footer; の中にNEXTがあるので、 print $table; をpush (@txt,$table); にして {ここで置き換え処理} @header; @txt; @footer; にしたのですが、@txtが大きくなると負荷が掛からないかと心配です ログのサイズは大きくても200kくらいです
ファイルのデータを配列にいれるのはどちらの方がいいでしょうか? 他にいい方法はありますか? 1、 @DATA = <DATA>; 2、 while(<DATA>){ push(@DATA, $_); }
>>404 1 短くて簡潔な方がイイ。
2 だと @DATA が空である必要があるし、よけいな while を呼び出さなければならないから。
406 :
757 :02/08/26 23:21 ID:???
>>404 データを加工しない限り1以外の方法は使わなくていいんじゃないか。
757は余計だったな(藁
ファイルサイズが大きいと1はまずいんでないかい?
>>408 ファイルサイズがでかけりゃ、1も2もまずいだろうよ・・・
410 :
404 :02/08/26 23:34 ID:???
ありがとうございます。1のほうを使う事にします
ま、1か2のどちらかしか考えないのじゃなくって 本当にファイルの中身を配列に入れる必要があるのかと
windows上でjperl使ってて、 Runtime Exceptionって出てperl自体がこけるんだけど、 対処方法がわからない。なんとなく正規表現に負担をかける 処理を多用するとまずい感じ(64k制約の話を聞いたことがあるけど、 漏れの場合、扱ってる個々の文字列の長さはせいぜい2k程度) だれか教えてちょ。 こける場所は不定。デバッガかませると動作完了したりする ときもある。
>>299 そのソースどっかで見たことあるなー
引用してるなら、元サイトのスクリプト見てみたら?
299=404?
ここの掲示板みたいに、プロクシ規制の方法を教えてください。
Perlの「コーディング」で困ってる人のスレです。
PNGカウンタを作ってるのですが <img src="pngcount.cgi?4"> <img src="pngcount.cgi?3"> <img src="pngcount.cgi?2"> <img src="pngcount.cgi?1"> とやると4回も起動することになるので1回にまとめたいのですが @listにそれぞれの画像のパスが格納されている場合 例:@list = ("./image/0.png","./image/1.png","./image/0.png"); 上の場合だと010と表示させたいのですが foreach $number(@list) { open(IMG,"$number") || exit; print "content-type: image/x-png\n\n"; binmode(IMG); binmode(STDOUT); print <IMG>; close(IMG); exit; } 上のようにやっても1つしか画像が表示されません。 いくつも画像を表示できないのでしょうか?
猫
419 :
nobodyさん :02/08/27 17:12 ID:dvEqdJRZ
i-mode絵文字対応フォームメールを設置したいのですが、 文字化け対策がうまく行きません。 (文字化けする絵文字としない絵文字がある。) 処理をうまくしてる人はどうやってやってます?
>>419 &#xxx;という形式で送信されるから適切に処理する
>>417 ヘッダーに空白行(\n\nってとこね)を出力した後には、もうContent-typeとかやってもダメです。
つまり出力できる画像は1つだけです。
422 :
419 :02/08/27 18:00 ID:???
>>420 どうもありがとうございます。文字化けするものと、しないものを一部抜粋しました。
***************************************
NO1 F89F 晴れ 文字化け
NO2 F8A0 曇り 文字化け
NO3 F8A1 雨 大丈夫
NO94 F8FC 車椅子 大丈夫
NO95 F940 新月 文字化け
NO135 F9B0 決定 大丈夫
NO136 F991 黒ハート 文字化け
***************************************
if (!open(OUT,"| $SENDMAIL -t")) { &error('送信できません'); }
print OUT "To: $MAIL_TO\n";
print OUT "From: $WEBMAS\n";
&jis("Subject: $SUBJECT"); print OUT "$msg\n";
print OUT "Content-Transfer-Encoding: 7bit\n";
print OUT 'Content-Type: text/plain; charset=iso-2022-jp' . "\n\n";
&jis("$NAME_FROMさんの質問が届きました。"); print OUT "$msg\n";
#絵文字対応
$sjis = '[\x80-\x9F\xE0-\xF7\xFA-\xFC][\x40-\x7E\x80-\xFC]|[\x00-\x7F]|[\xA1-\xDF]';
$emoji = '[\xF8\xF9][\x40-\x7E\x80-\xFC]';
$QUERY{'COM'} =~ s/\G((?:$sjis)*)($emoji)/$1.''.unpack('n',$2).';'/ego;
&jis("--$QUERY{'COM'}"); print OUT "$msg\n";
&jis("▽答えはココから"); print OUT "$msg\n";
&jis("$CGI?M=H&T=$ID_FROM&F=$ID_TO&P=$PASS_TO"); print OUT "$msg\n";
close(OUT);
こんな感じにしたんですけども駄目なんです。
424 :
nobodyさん :02/08/28 02:34 ID:TSMc6GTX
任意の文字列が含まれる1行を抽出し、該当文字列のみを 新しい文字列に置換えるスクリプトを作成したいのですが、わかりません。 下記のメールアドレスで行を取得して、元データ(@old)を 新しいデータ(@new)に置換る(行の置換え)スクリプトを、 上記の様に修正したいのですが・・・。 教えてください。お願い致します。 open(IN,"data/data.csv") or die; while($line=<IN>){ chomp($line); if($line =~ $mail){ push(@old,$line); @tmp1 = "@new"; open(OUT,"+<data/data.csv"); print OUT "@new"; close(OUT); } } close(IN);
>>424 とりあえず元ソースは全放棄したほうがいいと思った
#置き換え対象文字列
$mail="
[email protected] ";
#置き換え文字列
$replace="
[email protected] ";
open(IN,"data/data.csv") or die;
@old=<IN>;
close(IN);
foreach (@old){
s/$mail/$replace/g;
}
open(OUT,">data/data_after.csv") or die;
print OUT @old;
close(OUT);
みたいなのでダメなんすか?って全部書いちゃったよおい。
426 :
425 :02/08/28 04:06 ID:???
どでかい配列作るのが嫌なら(csvファイルが何千行とかなら) 一時ファイル作ったほうがいいね。 open(IN,"data/data.csv") or die; #一時ファイルを開く open(OUT,">temp.csv") or die; while($line=<IN>){ $line=~s/$mail/$replace/g; print OUT $line; } close(OUT); close(IN); #一時ファイルを消して、ファイルを置き換える rename('temp.csv','data/data.csv') or die; はいオナニー終わり!
427 :
nobodyさん :02/08/28 10:57 ID:3EY8gxC5
特定の曜日、日時にコンテンツのhtmlを自動生成したいのですが 来訪者の度にCGIを実行して、時刻をチェックする方法以外ないでしょうか? この方法だと、来訪者が増えるたびに処理が重くなってしまいます。
>>427 crontabが使えなければ、それしかないかな。
430 :
nobodyさん :02/08/28 15:34 ID:z8uBgDDw
正規表現で、配列を変数展開させたいのですがうまくいきません。 m/^hoge$array[0]hoge/; ↑このように書いても、$array[0]はうまく展開されないんです。 どなたかいい知恵貸してください。 おながいします。
>>430 正規表現中のブラケット [] は文字クラスを表します。
foreach などで他の変数に代入してから処理する等の回避方法が考えられます。
432 :
430 :02/08/28 16:48 ID:???
>>431 むう、やはり正規表現中で[]を使わないように回避するしかないのですね。
了解しますた!
ありがd
433 :
431 :02/08/28 17:11 ID:???
>>430 ごめん。
5.003 Build 316
で試したら、それ、多分期待通りに動いた。他の原因があるかも。
@aaa = ("どおして",);
$bbb = "どおしてそんなことすんのー。やめてーなー。ほんとにもー。";
if($bbb =~ /^$aaa[0]/){print "is true$aaa[0]\r\n"}
else{print "is false$aaa[0]\r\n"}
434 :
430 :02/08/28 18:25 ID:???
>>433 すまそ、おっしゃる通りうごきますた。
正規表現を解釈するよりも前に変数展開してるんでしょうね、きっと。
>>430 で「うまく展開されない」と書きましたが、別の原因でした……
…………………吊ってくるっす ゴメ
配列操作に関する質問です readdirで得たファイルリスト「@datafiles」から カレントディレクトリやデータファイル以外のファイル名が収まっている要素をspliceしたいのですが なにかうまい方法は無いでしょうか? データファイルかどうかは命名規則「/^\d+(dat)$/」で判断したいと思っています
436 :
435 :02/08/28 19:06 ID:???
ちなみにファイルリストを「@filelist」にとっておいて @datafiles = grep(/^\d+(dat)$/, @filelist); としてもダメでした grepの使い方間違ってます?
/^\d+.dat$/ だったりはしない?
438 :
結構前スレ888さん :02/08/28 19:38 ID:99E4DmXW
特定のURL以外から飛んできた人を弾きたのだけど 前教えてもらったのは"特定のURLから飛んできた人を弾く" if ($ENV{'HTTP_REFERER'} =~ /aaa/) { print "Location: abab\n\n"; exit; } (aaaから来た人をababに飛ばす) "特定のURL以外から飛んできた人を弾く"を....
439 :
結構前スレ888さん :02/08/28 19:39 ID:99E4DmXW
>弾きたのだけど 弾きたいのだけど
440 :
437 :02/08/28 19:46 ID:???
あー。見えにくいかもしれんけど、 dat が拡張子ならピリオド . が必要ってことで。 あと、ファイルテスト演算子 file test operator ってのもあるから。 それで良ければ調べてみるヨロシ
442 :
結構前スレ888さん :02/08/28 19:56 ID:99E4DmXW
>>441 つまり外部リンクできた人を弾きたいと(.cgiに)
>442 else か not か !
444 :
結構前スレ888さん :02/08/28 20:44 ID:99E4DmXW
notかな
unless
446 :
435 :02/08/28 21:03 ID:???
>437 そうでした・・・穴掘って埋まってきます・・・
>>414 PerlがRuntime exceptionでこける事例は、例えば
NamazuのBBS
WinNTでNamazuが落ちる事例
http://search.namazu.org/ml/namazu-users-ja/msg00011.html 当たりでやりとりがあります。
ただ、あまりはっきりした解決方法はでてきませんでした。
このやりとりの中で触れられている正規表現の処理に関する問題が
>>412 で書いたマッチ64K制限は、確かActivePerlのサイトあたりに
あったことです。
Perlのversionを上げるもしくはUnix系OSの上で処理をするか
いずれかができればいいのですが(普段はそうしてます)、
この件に関してはちょっとそのへんの変更が難しいもんで。
ちなみにperl Runtime exceptionでぐぐるとかなりたくさん
Active Perlのこの問題はでてきます。
448 :
414 :02/08/28 21:38 ID:???
>>447 いや、板違いってゆうのは撤回しますが、結局 ゲイツ が悪いんでしょ?
えーと、現在のところ、どうも原因不明の様ですし、初心者向けの話題でもないようですから。
Active Perl + Win の新スレ立ててみたらどうでしょうか。
>>446 ピリオドをエスケープしないと意図しないファイルも引っ掛かります。
/^\d \.dat$/
↑プラスがスペースに変換されてます。
451 :
nobodyさん :02/08/29 02:33 ID:r6Il9+nb
MySQLでフランス語のデータを管理してるんですが、SELECT文 でのアクセント付き記号の扱いに困っています。 例えば、&egarve;を入力して、&egarve;だけにマッチさせたいんで すが、&egarve;とeが引っかかってきます。 ご存知のお助けください。
452 :
451 :02/08/29 02:36 ID:r6Il9+nb
すんません。訂正します。 >例えば、&egarve;を入力して、&egarve;だけにマッチさせたいんで >すが、&egarve;とeが引っかかってきます。 は 例えば、èを入力して、èだけにマッチさせたいんで すが、èとeが引っかかってきます。 です。
453 :
? :02/08/29 05:06 ID:???
みようみまねでスキンを使った掲示板をいじってるんですが、 スキンから読み込んだのを変換するとき、 $skin =~ s/title<!--s-->/$title/i; $skin =~ s/***/***/g; $skin =~ s/***/***/i; $skin =~ s/***/***/i; ・ ・ ・ って感じなんですが、 $skin =~ s/title<!--s-->/$title/i; と打ったところ、一つだけしか「s/title<!--s-->」が 変換されなかったんですね。 で、なんとなく、 $skin =~ s/title<!--s-->/$title/g; にしてみたら、いけたんでけど・・・ この後ろについてる「i」とか「g」の意味はなんですか? 他にも「s」とかもあったんですが・・・ 検索しても見つからないのでお願いします。
456 :
482 :02/08/29 07:41 ID:8thG1OyK
458 :
? :02/08/29 14:55 ID:???
>>455 有難うございます。
つまり、
iは「大文字小文字を区別しない」で、
gは、「全体から探す」ってことで、
oは、「変数を1度しか展開しない」ってことなんですね
で、もう一つ疑問が・・・
=~ /***/ や
=~ m/***/ は解ったんですが、
=~ s/***/ の説明がないんですよ・・・
「m」が「/」以外のディリミタを使えるようにするためのものですよね?
同じ意味なのでしょうか?
違ったら、この「m」とか「s」入る場所?の名称なんかを教えて頂けないでしょうか?
検索すら出来ない状況なので・・・ホントすいません。
CGI、とくにFormまわりの質問なのでスレ違いかもしれませんが @dataにテキストファイル(S-JIS)から文字列を読み込んで 「print "<TEXTAREA name=\"text\" cols=\"80\" rows=\"16\">@data</TEXTAREA>";」 としたときに、なぜか@dataの2行目以降行頭に半角スペースが入ってしまいます おかしいな、と思って「print @data;」してみても 行頭に半角スペースが入っている事はありませんでした 改行コードの問題かと思いforeachで「$_ =~ s/\r\n/\n/g;」としても状況に変化がありません IE,NN共に同じ症状を確認しているのですが これはHTML、あるいはブラウザの問題なのか、Perl側の問題なのか どうやって回避したらいいんでしょうか?
460 :
292 :02/08/29 15:01 ID:???
$XXX =~ s/Z/A/; $XXXに入ってる「Z」を「A」に書きかえる。(最初に見つかったやつだけ) $XXX =~ s/Z/A/g; $XXXに入ってる「Z」を「A」に書きかえる。(すべて) $XXX =~ s/Z/A/i; $XXXに入ってる「Z,z」を「A」に書きかえる。(大文字小文字を区別しない)
461 :
_ :02/08/29 15:02 ID:???
462 :
292 :02/08/29 15:03 ID:???
>>459 HTMLソースを見ても半角スペース入ってるのか?
463 :
459 :02/08/29 15:06 ID:???
>461 テキストデータには展開される可能性がある文字列はありませんでした ・・・そういう意味じゃないのかな >462 はい、TEXTAREAで挟むと半角スペースが現れますが 「print @data;」だとソースでも半角スペースは現れません
464 :
? :02/08/29 15:08 ID:???
なるほど! sが、置き換えるって意味ですか! ホントおばかでした。 スレ汚しすいませんでした。 皆さん有難うございました!
465 :
_ :02/08/29 15:08 ID:???
>>463 "@array" と @array の違い(変数展開)を調べること
466 :
459 :02/08/29 15:17 ID:???
>465 うーん、直接その答えにはたどり着けませんでしたが 「print "<TEXTAREA name=\"text\" cols=\"80\" rows=\"16\">" . @data . "</TEXTAREA>";」 とすることで解決しました ありがとう
467 :
292 :02/08/29 15:27 ID:???
>>
469 :
nobodyさん :02/08/29 15:28 ID:jYAiqFv3
ユーザーのプロバイダのアドレス?調べるのってどれでしょう? *******.ap.plala.or.jp こんなやつ $ENV{'REMOTE_ADDR'}; だとIPアドレスが表示されるようなのですが
470 :
292 :02/08/29 15:29 ID:???
変なとこで送信してもた。スマソ。
>>466 $" という変数を見てみな。デフォルトでは半角スペース入ってるから。
この変数はprint "@xx";の時に区切りとして使うものを入れてるモノ。
先だって
$" = '';
としておけば半角スペースは無くなる。
>>469 アドレスが知りたいのなら、IPアドレスがいいじゃないかアケチくん。
472 :
292 :02/08/29 15:32 ID:???
$ENV{'REMOTE_HOST'} ただし、最近のプロバイダではここにリモホが入ってる設定にしてるところは少ない(無駄だから) その場合は次のコードで行けるだろう。 $ENV{'REMOTE_HOST'} = &nslook($ENV{'REMOTE_ADDR'}); sub nslook{ local($x)=@_; local($ip,$addr); if($x=~/([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)/){ $ip="$1.$2.$3.$4"; $addr=(gethostbyaddr(pack('C4',$1,$2,$3,$4),2))[0]; if($addr ne ""){ return $addr; } } return $x; }
473 :
469 :02/08/29 15:33 ID:oKWRspRK
>>471 そうなのかしら。
でもぱっと見わかりやすいのもいいわ。
っていうかじゃぁ両方で。
474 :
469 :02/08/29 15:35 ID:oKWRspRK
およよ。 そう、REMOTE_HOSTでやってみたら 何も取得できなかったんですよ。 上のはアドレスから変換してるのでしょうか?
475 :
292 :02/08/29 15:39 ID:???
>>474 nslookというサブルーチンに、IPアドレス$ENV{'REMOTE_ADDR'}を教えて
リモートホストを教えてもらって、空っぽだった$ENV{'REMOTE_HOST'}に代入するコードじゃよ。
>474 何を取得できてるの? foreach(sort(keys(%ENV))){$chk .= "$_ is $ENV{$_}<br>\n"}
478 :
476 :02/08/29 15:57 ID:???
別に他意はないんだけどさ。これでいい? foreach(keys(%ENV)){$chk .= "$_<br>\n"}
479 :
469 :02/08/29 16:03 ID:KExh1vW6
>>472 やってみましたが、それでもIPアドレスになっちゃう。
CGIサーバーはPlalaです
自分のPC上でやるとパソコンの名前が表示されます。
(ActivePerl+httpd)
Plalaはどうだかしらないが、IPアドレスから名前に変換をサポートしていない鯖がある。 あきらめるか、別の鯖で試す。
481 :
nobodyさん :02/08/29 16:32 ID:SCkpIe5L
Perlで http通信を行い特定のHPからhtmlを取得後 パースして、htmlから特定のデータを取得したいのですが 必要なモジュールとか、ソースとか解説のHPがあれば教えてください。
483 :
469 :02/08/29 16:50 ID:1fSV4HtQ
$host = gethostbyaddr(pack("C4", split(/\./, $host)), 2) || $host; こんなのでいけました。
484 :
nobodyさん :02/08/29 17:01 ID:SCkpIe5L
>482 何番目のスレの何番になります? それ読みますから教えてください。
486 :
初心者の依頼者(´∀`; ◆3zTzMwh2 :02/08/29 17:16 ID:w2vhS8x7
えっと、 ↑に答えが出てることはわかっているんですが、理解できません。 fusianasanで表示されるやつはどうやって取得するんですか?
488 :
初心者の依頼者(´∀`; ◆3zTzMwh2 :02/08/29 17:20 ID:w2vhS8x7
>487 別に
489 :
292 :02/08/29 17:27 ID:???
490 :
nobodyさん :02/08/29 17:30 ID:SCkpIe5L
>489 ありがとうございます。
>>482 2chの使い方になると思うんだが、この板から全文検索したいんだが、どうすればいいの?
「全部表示してブラウザで検索」しかないのか? それとも googleに拾ってもらわなければいけないのかな?
494 :
424 :02/08/29 19:47 ID:k9SFERS8
>>425 様
有難うございました。
私の勘いで、作成したいスクリプトの記述が間違っていました。
すみませんでした。
(勉強の為、書いて頂いたソースは保存しました)
以下、教えて頂きたい内容です。
任意の文字列が含まれる1行を抽出し、複数の該当文字列を
新しい文字列に置換えるスクリプトを作成したいのですが、わかりません。
(置換え対象の文字列には、手入力の文字列も含まれます)
495の様に、メールアドレスで行を取得し、
@oldに格納されている全ての文字列を個々の変数に代入して、
ファイルに出力させるスクリプトを作成しましたが、うまく動作しません。
確認出来たエラーは2点です。
1.ファイルの一行目しか$lineに入りません。
その為、該当レコードがあるにも拘らず、「データがありません」と
なってしまいます。
2.レコードの改行が削除され、次のデータが同じ行に出力されてしまいます。
($old1,$old2,$old3,$old4,$old5) = split(/,/,$old);
@oldから抽出する上記以外の方法がわからず、困っています。
ソースは495です。お願い致します。
(改行が多く書き込めなかった為、分けました。)
495 :
424 :02/08/29 19:47 ID:k9SFERS8
494の続きです。 置き換えたい変数です→($new1,$new2,$new3,$new4,$new5) open(IN,"data/data.csv") or die; while($line = <IN>){ chomp($line); if($line =~ $mail){ push(@old,$line); } else { print "該当するデータがありません。\n"; exit(0); } foreach $old (@old){ ($old1,$old2,$old3,$old4,$old5) = split(/,/,$old); } open(OUT,"+<data/data.csv") or die; print OUT "$old1,$new2,$new3,$old4,$new5"; close(OUT); print "書き換えが完了しました。\n"; exit(0); } close(IN); exit(0);
sage
>>494-495 何をやりたいのだか解らないんだけど。
>>425 をこうするって事かしら。
foreach(@old){
if(s/$mail/$replace/g){push(@new,$_)}
}
print OUT "@new";
使用している各関数がどういう働きをするものかよく調べた方が良いと思います。
ラクダ本を買うとか。
498 :
nobodyさん :02/08/29 21:09 ID:mQvrBYqz
すいません、根本的なところで質問です。 何も手を加えてないのに、昨日まで動いてたcgiが動かなくなったんですが、 これは何が原因でどうすれば直るんでしょう。 kentのyybbsを色々いじってたんですけど、文法エラー解消しても動かないので まずは無改造のスクリプトをただ上げたんです。 そしたら動かない。 しかも、それまで使ってたスクリプト(2つあるうち1つだけ)が突然internal server error。 頭抱えてます。 どなたか助けてください。
499 :
nobodyさん :02/08/29 21:12 ID:0ltwZgpC
■10.000円の高額収入
1件につき最大10.000円の高額収入。月収100万円以上も可能。
■画期的なビジネス!
インターネットを利用したこれまでにない斬新で画期的なビジネスです。
■誰でも出来ます!
インターネットができる環境の方なら誰でも参加可能です。
インターネットを利用したビジネスですので、自宅や会社で好きなときにで
きるビジネスです。
■専門的な知識は一切不要!
ビジネスに必要なツールは全て当社で用意いたします。
また、サポートも万全です。
■詳細は今すぐこちらから
http://www.future-web.tv/haru/
>>498 改造してないBBSなんでしょ?
kentのサポート板で聞けよ
>>498 Internal Server Error ならhttpdサーバのログに
エラーが出てるはず。それを確認しる。
>>500 無改造というのはコイツが手を加えてないということだろ
503 :
498 :02/08/29 22:31 ID:mQvrBYqz
やっぱりkentさん所で聞くのが早いですかね。 逝ってきます。
504 :
424 :02/08/29 23:02 ID:zsUv5K1P
>>497 様
レス有難うございました。
書き方が悪くてすみませんでした。
>>425 様にも
>>426 で教えて頂いたのですが・・・。
置換え前の文字は$mail以外、変数では無いので
マッチさせる事が出来ない状態でした。
ファイルから文字を取得し、変数に格納したいと思っていました。
入力フォームを作り直します。
505 :
505 :02/08/29 23:31 ID:kiu2pPYa
sub make_html{ open(HTML, ">hoge.html") || &error("HTMl化に失敗しました。"); print HTML &end; close(HTML); } 開いたファイル(hoge.html)に書き込みたくて上のように記述したのですが、 ファイルを開いて直接サブルーチン(&end)を使うのは無理なのでしょうか。
506 :
_ :02/08/30 00:12 ID:???
,一-、
/ ̄ l | / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
■■-っ <
>>505 んな こたァない
´∀`/ \__________
__/|Y/\.
Ё|__ | / |
| У.. |
>>506 end がどうなってるか一応聞いてやれよ。
508 :
505 :02/08/30 13:07 ID:tuhObyZ6
sub end{ &header; open(IN,"$file") || &error("$file を読み込めません"); @lines = <IN>; close(IN); foreach $line (@lines) { local($name,$url,$mail,$body,$hogehoge) = split(/<>/,$line); &output; } &footer; exit; } こんな感じです。
509 :
_ :02/08/30 13:12 ID:???
>>508 exit; はいらんよ、だって書きこんだ後 close している意味ないじゃん。
510 :
:02/08/30 13:29 ID:UPHK1/CW
フォントサイズの変更や入室後の名前変更ができないチャットで、 フォントサイズを大きくしたり、名前を変更している人がいました。 どうやったらできるのでしょうか?
>>508 戻り値を print 死体なら
return @lines;
だろうけど…。どう説明して良いやら。
>>510 そのチャットの管理人に聞いて下さい。
513 :
:02/08/30 13:45 ID:UPHK1/CW
>>511 ソースを書き換えるのですか?
どうやれば書き換えられますか?
514 :
511 :02/08/30 14:23 ID:???
>>513 ソースを見てスクリプトの脆弱な部分を探すんだよ。
515 :
_ :02/08/31 12:58 ID:???
($_="\xa8\xdc\xa6\xe7\xc9\xbe\xc8\x49")=~s/./\x82$&/g; substr($_, 8, 1)= "\x89"; substr($_, 14, 1)= "\x81"; print;
516 :
>_ :02/08/31 13:40 ID:???
%b5%cf%b4%d3%c5%b0
517 :
517 :02/09/01 03:40 ID:+nm+B08x
二つのリファレンス(一方から一方を辿ることができる)の位置関係を 知りたい場合はどうしたらよいでしょうか? 例えば $a = { 'b' => [ $c = { 'd' => 'e' } ] }; とあった場合に、 &rel($a,$c) = '{b}[0]' みたいな出力を得たいのですが…
>>517 とりあえずヒントだけ。
・関数 ref
・$a = {}; print $a;
以前もあったな。その質問
520 :
_ :02/09/01 11:03 ID:???
そう、以前にもあったけどまだやってたのか・・・ 一応、やってみたけどこんな感じでいいのかな? sub rel{ my( $key, $i, $rel ); GOOD_BYE: for $key ( keys %{$_[0]} ){ for ($i=0; $i<=$#{${$_[0]}{$key}}; $i++){ #if ( ${${$_[0]}{$key}}[$i] == $_[1] ){ print "goo\n"; } $rel= "{$key}[$i]",last GOOD_BYE if ${${$_[0]}{$key}}[$i] == $_[1]; } } $rel; }
521 :
_ :02/09/01 11:05 ID:???
ちょっと見づらいかな、もいちど sub rel{ my( $key, $i, $rel ); GOOD_BYE: for $key ( keys %{$_[0]} ){ for ($i=0; $i<=$#{${$_[0]}{$key}}; $i++){ $rel= "{$key}[$i]",last GOOD_BYE if ${${$_[0]}{$key}}[$i] == $_[1]; } } $rel; }
超絶ハッカー 何でも聞け
聞け
Perl上級車俺がどんな質問二問k0尾たっるぞ!
彼女を逝かせる超絶テクを教えてください。
528 :
517 :02/09/01 15:43 ID:+nm+B08x
>>518 やっぱりbreadth-firstサーチをしないとできないってことっすかね?
>>520 ,521
ありがとうございます。が、より一般的なケース(リファレンスの構造を問わない)が対象なのです…
529 :
517 :02/09/01 15:47 ID:+nm+B08x
内部構造的にはGCのためのリファレンスカウントがあるはずだとおもうので、 それをどうにかして逆に辿れないものかと思うのですが…
530 :
nobodyさん :02/09/01 16:23 ID:oCDCWNWk
◆4XfSMGTg はバッカーですか?
531 :
◆4XfSMGTg :02/09/01 16:27 ID:A6Gp7Ink
会社員で日曜日によく来ます。
ここは初心者コーナーとは思えない
>>529 いい加減だが...。
#!/usr/bin/perl
use strict;
use Data::Dumper;
my $a = { d => "e" };
my $b = { b => [$a] };
my $c = { f => { g => $b } };
print 'rel($b, $a) = ', rel($b, $a), "\n";
print 'rel($c, $a) = ', rel($c, $a), "\n";
print 'rel($c, $b) = ', rel($c, $b), "\n";
sub rel ($$)
{
my $dumper = new Data::Dumper([@_]);
$dumper->Indent(0);
$dumper->Dump() =~ /\$VAR2\s+=\s+\$VAR1->(.+);$/;
return $1;
}
-------------------------------------------
rel($b, $a) = {'b'}[0]
rel($c, $a) = {'f'}{'g'}{'b'}[0]
rel($c, $b) = {'f'}{'g'}
534 :
517 :02/09/01 23:45 ID:???
>>533 そうですよね…、クイックハックならData::Dumperを使うのが一番手っ取り早いんですが、
リファレンス構造を全てtraverseするので実行速度が…
ダイレクトに辿るとしたっら、やっぱり要素ごとにリファレンス元を
保持するようなarrayを持たせるしかないですかね。。
何に使うのか分からないのだが... デバッガでも作ってるの?
WebデザインとWebプログラミングってどう違うんですか? ネット初心者なんで本当に分かりません。誰か教えて下さい。
Webデザイン HTML、CSS,JavaScriptやブラウザーなど Webプログラミング PerlやCGI、PHP,Ruby等
Webデザイン→デザイナーがやる Webプログラミング→プログラマがやる
>>537 ありがとうございます。と言っても、本当はよくわかりません(w
仕事の内容がどう違うか分かり易く教えて頂けるとありがたいんですが。
>>538 ありがとうございます。
540 :
初心者 :02/09/02 02:28 ID:???
Perlを使って掲示板などを作りたいんですが、 最初にエディタやコンパイラーは、何を落とせばよいのでしょうか? 先輩の皆様お薦めのものなどございますでしょうか? 使ってるPCはWinMEなのですが、ご教授お願いします。
>エディタ 自分が使いやすいと想うテキストエディタを使え。 >コンパイラー 落ち着け。 ActivePerlでも落としとけ。
複数のファイルを読み込んでsortさせて表示したいのですが。 sortはできたのですが opendir(DIR, "$logdir") ; @2ch = readdir(DIR); closedir(DIR); ファイル名を読み込んでいる様子で。 検索してやり方を探してみたのですが自分では分かりませんでした。 アドバイスお願いいたします。
543 :
518 :02/09/02 06:08 ID:???
>>532 >>535 禿同。(w
>>528 BFS でなく DFS ですかね。
>>533 とどっちが速いかは
調べてませんが、泥臭く書くとこう。
sub rel {
my ($foo, $bar, $idx) = @_;
my $rv;
if (ref $foo eq 'ARRAY') {
for (my $i = 0; $i < @$foo; $i++) {
$foo->[$i] eq $bar && return $idx . "[$i]";
$rv = rel($foo->[$i], $bar, $idx . "[$i]") and return $rv;
}
}
elsif (ref $foo eq 'HASH') {
foreach my $k (keys %$foo) {
$foo->{$k} eq $bar && return $idx . "{$k}";
$rv = rel($foo->{$k}, $bar, $idx . "{$k}") and return $rv;
}
}
return;
}
つかそこまで速度を求めるほどデカい or 深いんでしょうか?
これ以上はもう perl のソース読んでねとしか。
>542 readdirのリファレンスを穴が空くほど読め それはopendirしたディレクトリのファイルリストを得る関数だ だいたい複数ファイルを読み込んでsortって何だ? そのファイルにはASCIIデータが1行しか入ってない事が保証されてんのか? 要リファクタリングと思われ
>>542 @2ch は無理だよ
変数名は数字で始まってはいけませn
数字から始まっていたら、全部数字で無ければいけないじゃ無いっけ?
548 :
nobodyさん :02/09/02 10:45 ID:Bmg2BPcQ
時間取得で質問があります。 月と日にちを取得したいのですが、 $tm=time; ($sec,$min,$hour,$mday,$mon)=localtime $tm; とやらないといけないのですか? $sec,$min,$hourが余計なんですが...
書き込んだメッセージの中にアドレス(
http:// 〜)が含まれていたら
<a href="" target="_blank"></a>
で囲みたいのですが、どうやってアドレスと判定すればよいのでしょうか?
>>548 (localtime(time))[0..8]
553 :
548 :02/09/02 12:32 ID:???
>>551 仕様ですか。
ありがとうございました。
554 :
548 :02/09/02 12:39 ID:???
>>552 なるほど。
$tm=time;
($mday,$mon)=(localtime $tm)[3,4];
で、できました。
ありがとうございました。
>>548 (undef,undef,undef,$mday,$mon)=localtime;
556 :
548 :02/09/02 12:46 ID:???
>>555 試してみました。それでもできるんですね。
ありがとうございました。
557 :
550 :02/09/02 12:51 ID:???
>>551 さん
できました!ありがとうございます!
558 :
542 :02/09/02 19:45 ID:???
&lock_open(TXT, "a.txt"); @txt = <TXT>; &unlock_close(TXT); open(OUT,"> x.txt"); print OUT "@txt"; close(OUT); &lock_open(TXT, "a2.txt"); @txt = <TXT>; &unlock_close(TXT); open(OUT,">> x.txt"); print OUT "@txt"; close(OUT); &lock_open(TXT, "x.txt"); @txt = <TXT>; &unlock_close(TXT); foreach $m (@txt) { chop($m); } でできました。opendirの意味がいまいちわからなかったので544さんの「それはopendirしたディレクトリのファイルリストを得る関数だ」 の助言で納得できました。おさわがせしてすみませんでした。ありがとうございます。
>>558 @txt = &lock_open("a.txt");
とか
print OUT &lock_open("a.txt");
とか
chop @txt;
とか。どーでもいーけど。
563 :
nobodyさん :02/09/02 21:53 ID:Ldjfc++c
perlでsocketを使用して、外部のサーバの情報を取得したいのですが、 その際にタイムアウトの時間を設定することは出来ませんか? 例えば、10秒以内に取得できなければ、エラーを出して終了するとか出来ませんか? 現在↓みたいにして取得しています。 よろしくお願いします。 #--------------------------- use Socket; my $sock_addr = pack_sockaddr_in(80, inet_aton("2ch.net")); socket(SOCKET, PF_INET, SOCK_STREAM, 0); connect(SOCKET, $sock_addr); select(SOCKET); $|=1; select(STDOUT); print SOCKET "GET / HTTP/1.0\r\n"; print SOCKET "\r\n"; while (<SOCKET>){m/^\r\n$/ and last;} while (<SOCKET>){print;} #--------------------------
fork
>>563 $time=$^T;
if(int($^T-$time)>=10){shutdown(2)}
ヽ(´∀`)ノ ( へ) ヽ
perldoc -q timeout
ここはPerl5なんか未だに使ってるヴォケのすみかですか・
Perl4 なんかよく使っていますが。何か。
571 :
nobodyさん :02/09/03 19:43 ID:bBGpZ26t
名前空間を気にせずに複数ファイルにコードを分割したいのですが、どのようにするとベターでせうか。
自分にとって読みやすい様にするのがベター。
573 :
f :02/09/03 19:51 ID:K/olstAP
-------変態・MTTどこでも-------
---●●●変態痴女を紹介致します。●●●---
例えば>欲求不満オマ●コヌレヌレ女・露出オナニー痴女・
フェラチオおしゃぶり女・ミニスカ・ノーパン娘・巨乳パイズリ娘・
アナルSEXおねだり娘・オマ〇コ弄られマン汁グチョグチョ女・
SM牝豚・緊縛・浣腸・スカトロ・等・・・刺激を求めています。
●●●学生・OL・主婦・モデル・牝豚・女王様・オカマ等・多数!●●●
090-8002-8356番
-----------------------------
http://www.mttdocomo.jp/ -----女性アルバイト随時募集・高収入(日払い)月100万円可能-----
http://www.mttdocomo.jp/ Iモードはこちら→
http://www.mttdocomo.jp/i
574 :
nobodyさん :02/09/03 20:21 ID:OLMxXVpc
575 :
初心者 :02/09/03 23:24 ID:KI0OEEO7
すみません質問です.
perlで、他のurlに変数と値をポスト送信してアクセスする方法はありますか?
print"Location:
http:// 〜";
はうまくいきませんでした。お願いします。
詳しい方、教えてください。
578 :
初心者 :02/09/03 23:34 ID:KI0OEEO7
>>576 ふつう、<a>タグの記述だと、
"〜.cgi" method="post" postdata="name=value&name2=value2"
とかになるのかな?と思うのですが(htmlではなくhdmlで作業して
いるので、そういう記述になっています)、
GETメソッドなら
print"Location:
http:// 〜.cgi?name=value&name2=value2";
みたいなやり方で出来るのかもしれませんが、
postだとどうなのかな?と。
perl自体、初めて触ったという話にならない初心者なので、
正直まいっています。
詳しい方、またそうでない方も、参考程度の意見で構わないので、
聞かせていただけたら幸いです。
579 :
bloom :02/09/03 23:43 ID:L4DD9EQO
ここってCGI厨しかいないの?
掲示板でログファイルのサイズが100KB以上になったら末尾要素を削除するという処理をしたいのですがうまくいきません # 記事の最大保存容量(単位:KB) $maxsize = 100; $maxsize = $maxsize * 1000; $logsize = (stat($logpass))[7]; while($logsize > $maxsize) {pop @data; $logsize = (stat($logpass))[7];} 書き込み処理の直前に↑のようにやってみたんですがうまくいきませんでした。 変数を書き出したりしてみたんですが原因がわからず困っています。 どなたかわかりませんでしょうか?
pop @data; だけじゃ、ファイルに書き込んでないから、 ファイルは変わっていない。
>>586 そのあとログファイルに書き込み処理をしています。
588 :
名無しさん@Meadow :02/09/04 12:03 ID:gOg0cXWU
だってさ、ファイルの大きさを求めて100KB以上かどうか判定しているのは、 書き込む前でしょ。 while($logsize > $maxsize) {pop @data; ↑$logsize = (stat($logpass))[7];} 矢印のところで書き込まないと・・・ それより別の方法を考えたら?
あ、なるほど。納得しました。
配列@dataのバイト数を調べたいんですが foreachでまわして一行ずつlength関数でバイト数を調べるほかに何か方法ありますでしょうか?
配列に入れる前に計っとくとか。
592 :
nobodyさん :02/09/04 15:23 ID:2Otyyhgv
593 :
名無し :02/09/04 15:51 ID:AttOz/Tz
以前、ここで見かけた様な気がするのですが 回答が書かれているのを見つけられないので 以前、質問した人に代わってお聞きします。 CookieをOnにしないと弾き出してしまう ここで使っているものみたいなCGIのスクリプトを 扱っているようなホームページは知りませんか? もちろん、ここにスクリプトを書いて下されば もちろん、なおさら有り難い事ですが…
594 :
b :02/09/04 16:01 ID:07M2lj7H
595 :
nobodyさん :02/09/04 16:12 ID:A3ZRMRKj
>>595 , - - 、 /ヽ
/ O \グヒャッ ! /ヽ、 / ヽ
,, : ,ー, O | / _,;, -'''"~~ ヽ
'' ; ∴_ノゝ ゝ /o O ヽ
ヽ ,;''"~"'';, / ┌─┐ ノ( ヽ
_ノ| ;;'';;'';;'';;'' | / | ⌒ | <スレ違いもはなはだしいわ!
ゝ、ヾ ヾ | ト、 | /
/ ヽ ヾ ヾ ヾ、 \ノ ノ
ノ\_ヾ ヾ /⌒ヽ、 ___/、
ノヾ ヾ_ _/ ノ, ヽ
ヽ、ゝ ノ ノ ハ ヽ
ゝ、 ノ ノ、 ノ ゝ | )
ー─一'´ ゝ、 l'´
) /
CGIだけど、なんか質問ある? Part 6
http://pc.2ch.net/test/read.cgi/php/1025930486/
>>593 どんなスクリプトでも頭に以下のような文を入れれば弾ける。
unless($ENV{'HTTP_COOKIE'}){
print "Set-Cookie: value=check; path=$ENV{'SCRIPT_NAME'} domain=$ENV{'HTTP_HOST'} expires=Fri, 31-Dec-2010 00:00:00 GMT\n";
}
&error_end('くっきーオンにしてちょ') unless($ENV{'HTTP_COOKIE'});
598 :
593 :02/09/04 19:35 ID:rVUPKdSl
>597さん どうも有り難うございました。 まさか、こんなに早く教えて頂けるとは思いませんでした。 ところで expires=Fri, 31-Dec-2010 00:00:00 GMT\n の部分なのですが、ここの記述は 絶対こうでなくても構いませんよね。
600 :
名無しさん@Meadow :02/09/04 21:42 ID:rtiaBVOu
>>590 $ perl -e '@ar=qw(a b c d e f); print length("@ar"), "\n";'
11
ディレクトリーを削除したいのですが、中にファイルが有るので消せません。 一気に消す方法はないでしょうか?ご教授頂けないでしょうか?
602 :
名無しさん@Meadow :02/09/04 22:18 ID:rtiaBVOu
>>601 $ perl -e 'system("rm -rf ./dir");'
./dirってとこは、消すディレクトリのパスを入れてね。
>>602 そう言う方法があるのですがね。
ご教授ありがとうございます!
604 :
601 :02/09/04 22:33 ID:???
CGIで使うのですが、それだと使用できませんですた・・・(´・ω・`)
605 :
名無しさん@Meadow :02/09/04 22:35 ID:rtiaBVOu
>>603 >そう言う方法があるのですがね。
~~
逆説の「が」ですか?
だったら、
$ perl -e 'use File::Path; rmtree ("./dir");'
606 :
601 :02/09/04 22:42 ID:???
>>605 そういう意味じゃないです(;´Д`)
そちらもダメでした・・・
logフォルダーに 1 と言うフォルダーがあり、
その中に、0.log 1.log ・・・ 10.log
と言うファイルが有るので、それをフォルダーごと消したかったんです。
説明が悪かったのかも知れませんが・・・
>>606 >そちらもダメでした・・・
perl5でしょ?
libディレクトリにFileモジュールが入ってないってこと?
考えがたい。
じゃスクリプトミス?
use File::Path;
rmtree("./dir");
ってちゃんと書いた?
じゃファイル属性を確認してちょ。
>>607 書き間違えでした、コピペで逝けました
アリガトン
web用のCGI作ってるんすけど。 \r\nって\nにしちゃダメなんすか? 特に動作に問題は見当たらないしファイルサイズも削れるんで\nでいきたいんすけど。 それとも不都合な環境とかあるんでしょうか。
>>611 改行は、<br>で表すんだから、別に構わんです。
ただ、編集環境がwindows(MS-dos)なら、普通、¥r¥nが自動的に
つくんですが。いちいち変換するの?
613 :
611 :02/09/05 05:48 ID:???
>>612 改行コード自体いまいち理解できてないんですすんまそん。とりあえず
print "Set-Cookie: $cookie\r\n";
とか
print "Content-type: text/html; charset=EUC-JP\r\n\r\n";
とかの\r\nを\nにしちゃまずいんかなと思ただけ、というか
\nでいけるならなんでわざわざ\r\n使ってるんだろうとか思ってみただけれす。
レスどうもっした。
ってゆうことで、613さんのは、htmlファイルの 出力だから、問題は起こらないね。
617 :
T女の竹田 :02/09/05 11:51 ID:sI+RlSZg
>>613 ftp://ftp.nic.ad.jp/rfc/rfc1945.txt The line terminator for HTTP-header fields is the sequence CRLF.
However, we recommend that applications, when parsing such headers,
recognize a single LF as a line terminator and ignore the leading CR.
(訳)HTTPヘッダ領域の行末区切りはCRLFの並びです。しかし、アプリケーションが
そのようなヘッダを読み取るときは、単独のLFを行末区切りとして解釈し、続くCRを
無視することをお勧めします。
というわけで、実際問題LFだけでも問題はまずないだろうけど、正式には
CRLFだよ。
訂正 続くCR→前のCR
619 :
ゆゆ :02/09/05 12:03 ID:FN8hs1rs
CGIチェックする際、サーバで perl -wc やってます。 エラーで 70行目に @Iとあるけど\@Iにするべきというエラーがでるのだけど そんなものどこにも書いてないです。 いままで行数があってないなどありましたが、@Iというもの自体が ない場合のエラー場所がわかりません。 何か特有の字が @Iとなったりしますか?
ソース見せろ、バカ。
全角空白
622 :
613 :02/09/05 13:58 ID:???
>>617 \nを使うって事はアプリケーション側のサービスに甘えるってカンジすか。
とりあえずCGIを公に配布とかしたりしない限りは
こっそり\n使っちゃってもいっか、と解釈。
\r\n だとWindowsサーバーで動かすときとか、おかしくなることがある。
624 :
613 :02/09/05 14:18 ID:???
\x0D\x0A のように16進数でCRLFを表すのがいいらしい。 Windowsでの改行はCRLFだから、\r\nで出力してしまうと\r\r\nになってしまう罠。
626 :
613 :02/09/05 14:29 ID:???
世の中は罠がいっぱいだなや。
627 :
:02/09/05 14:39 ID:???
掲示板の書き込みの中の、半角の数字を全角に変換。 または、その逆の変換を選択できるようにしたいです。
javascriptつかうと半角(全角)しか受け付けないようにできるYO.
629 :
nobodyさん :02/09/05 16:18 ID:FN8hs1rs
CGI内にジャバスクリプトってそのまま使えるの? >>EOF 内にHTMLのほうで使ってるまま持って来たら InternalServerErrorに・・・。 ジャバスクリプト取ったらエラーは起こらないのだけど。
>>630 初心者わらってんじゃねーよ。
初心者をあざ笑うスレでも作ってそこでやってくれ。
解っているのなら教えてやって下さい。
初心者同士で嘗め合うことから先に進めません。
>>629 Java Script はクライアント側で動作しますので、
Perl 文法エラーの可能性が高いと思われます。
>>629 ジャバスクリプト内に半角「@」があるんでしょうね。ほぼ間違いなく。
>634 ◆4XfSMGTg はオープントリップ kusokote 630 と 631 は別人。
636 :
nobodyさん :02/09/05 22:27 ID:CVMgCTHS
textareaに書かれた文字列を.txtに出力するものを 初めてperlでCGIを書いてみたんですが動きません。 どんな原因が考えられますか? #!/usr/local/bin/perl require "./jcode.pl"; $object = $ENV{ 'QUERY_STRING' }; open (FILEOUT, ">./xxx.txt"); print FILEOUT @object; close (FILEOUT); exit;
>>636 $object にデータ入ってても
@object にはなにも入ってないように思うが。
デコード処理が行われていない。 jcode.pl が使われていない。 GETで受け取るため文字制限がある。
掲示板の過去ログをlogというフォルダの中に1.html 2.html〜、というふうに収納してるんすよ。 フォルダ内のファイル数を数えて、その数+1を新規の過去ログのファイル名にしてるんすよ。 でも、そうすると既に存在するファイルを削除した場合、当然やけどファイル数が減ってしもて ファイル名がかぶってしまうんすよ。 何か良いファイル名の付け方知りまへんか。 ご教授よろしくお願いします。
フォルダ内のファイル数を数えるのではなく、別にカウントしとけば。
641 :
639 :02/09/05 22:57 ID:???
>>640 書き込みボタンを押した回数をカウントするとかですか?
もっとスマートなやり方あればよろしこ頼みます。
>641 空きが見つかるまでリピートぶん回して open(OUT, "./log/日付とか$i.html");
ファイル名を日付にするとか。
645 :
639 :02/09/05 23:16 ID:???
なるほどいろいろあるもんですのぉ。
>>627 半角全角は面倒だね。Perlでやると大抵Shift-JISとかで送られてきた
文字列を処理することになるから文字の境界で苦労する。
>>628 さんの言うとおり、JavaScriptでやるのがいいと思う。
ちょっと書いてみた。板違いだけど…
<form OnSubmit="txt=mainForm.messageArea.value;
while (txt.match(/[0123456789]/))txt=txt.replace(/[0123456789]/,
'0123456789'.charAt('0123456789'.indexOf(RegExp.lastMatch)));
mainForm.messageArea.value=txt;">
これで全角→半角が一応IE6ではできた。他は試してない。
mainForm.messageAreaは好きに変えてね。
647 :
636 :02/09/06 00:15 ID:GoSqrpgT
cgi-lib.plを用いてgetではなくpostにして、改行処理らしきものをつけ無事解決しました。 けれどデコードっぽいことをしてませんが、半角カナいれたりしても何も問題がありません。 のちのちまずいことになりますかね?
>>647 >半角カナいれたりしても何も問題がありません。
EUCで書いてるからカシラ
649 :
nobodyさん :02/09/06 00:22 ID:+YKj9Zdt
>>646 俺はJAVAscriptで入力制限てどうも気に入らないんだけどどうよ?
ユーザビリティーを考えてjavascriptの入力チェックを書くことあるけど
クライアントでチェックってどうも設計上よろしくないと思っている俺。
650 :
636 :02/09/06 00:37 ID:GoSqrpgT
>>611 ,617,625
ここはPerlスレだからCGIと仮定するのもおかしいかもしれないけど、
「CGIでParsed headers」なら規格上 LFのみ か、 CRLF のどちらかです。
http://hoohoo.ncsa.uiuc.edu/cgi/out.html もうちょっと詳しく言うと、CGIのヘッダというのは
HTTPサーバが解釈して、HTTPヘッダを生成するためのものなので、
フォーマットは一緒ですがHTTPのヘッダとは別物と考えるべきです。
蛇足で、NPHの場合はそのままクライアントに渡されるので、
当然CRLFにする必要があります。
652 :
651 :02/09/06 00:38 ID:???
なんか変な文だ。ごめん
>>650 EUCで書いてあると半角カナは化けないにょろ。
何故かmacで書きこまれるとたまに化けるけど。そんときはjcodeかな。
654 :
初心者以下 :02/09/06 00:44 ID:DvbQB/jN
教えてください。
自分のHPに素材サイトで手に入れたJavaゲーム(9面パズル)を
置いてみたのですがサーバーにアップしてDLすると
何故か遊べなくなってしまいます。
(2枚目、3枚目の画像が表示されない。タイムカウントが動かない
ゲームが始まらない)
絵を置き換えたからかな、と思い試しに
加工を加えずアップしてみましたがやはりダメでした。
ftpでアップしているのですがコレが原因なのでしょうか?
初心者ですんません。
javaは2日前に知りました。
素材サイトのゲーム
http://www18.big.or.jp/~neon2/bunkatu/usa9.shtml
>>654 板違い
それに、それはJavaではなくJavaScriptだ
2apeとかの掲示板を携帯対応にはできるのでしょうか?
>>658 $ua=$ENV{'HTTP_USER_AGENT'};
if($ua=~/UP.Browser|DoCoMo|J-PHONE|ASTEL|PDXGW|L-mode/i){
あとはお好きに
>>659 すごく初心者なのですがそれをどうしたらいいのでしょうか?
>>649 うん、セキュリティから言うとJavaScriptじゃ何もしてないのと同じだしね。
この場合みたいにおまけみたいな機能ならいいかなと思った。
unkooooooo
>>661 まずは携帯から掲示板にアクセスして、
うまく動作してない箇所があったら
>>659 の方法で処理を振り分ける。
一応うちではそうしてるにょろ。
サブルーチンの事で質問ですけれども。 ぶっちゃけスクリプトのどこに置くのが一番効率いいんでしょうか。 とにかく先頭の方でしょうか はたまた最下部でしょうか それとも呼び出す直前でしょうか どこでもいっしょでしょうか というかなるべく使わないほうがいいんでしょうか 自分では調べられないので教えてくださいまし。
変わらないから気にしなくて良し
669 :
667 :02/09/06 03:51 ID:???
はい
670 :
名無しさん@Meadow :02/09/06 05:32 ID:dZ6p0Gwt
>>646 IE5.5ではできんかった。というよりINPUT TYPEとかも書いてほしい。
>>649 よく理解できんです。
サーバーのデータベースに直接アクセスするとかソースを見られて
はいけないものは、CGIだけど、それ以外は、なるべくサーバーに
負荷がかからないクライアントサイドのJavaScriptで処理した方が
いいのでは。
まあ、JavaScriptをOnにしてくださいと書くのは面倒というのはある。
テキストブラウザとかだとJavaScriptできないし。あとJSのバー
ジョンとかNSとIEの違いによるサポート状況の違いとか面倒。
>>627 もう来ないか。textareaだかで受け取ったデータの中の
全角<->半角変換スクリプト:
$input = "012344567899012";
@zenkaku=('0', '1','2','3','4','5','6','7','8','9');
@hankaku=('0','1','2','3','4','5','6','7','8','9');
$sw = 1;
if ($sw == 1) {
&zen_han(\@zenkaku,\@hankaku);
} else {
&zen_han(\@hankaku, \@zenkaku);
}
sub zen_han {
my ($A, $B) = @_;
for $i (0 .. 9) {
$input =~ s/@$A[$i]/@$B[$i]/g;
}
}
print $input, "\n";
671 :
nobodyさん :02/09/06 06:55 ID:HPly/0Dw
cgiは今回初めてです。アクセス制限の仕方を教えて下さい。
和鳥で、KENTのWebPatioを使ってます。 regist.cgiの中の unlink("$logdir$in{'no'}\.cgi"); unlink("$logdir$in{'no'}\.dat"); なのですが、unlinkでエラーを返してきます。 和鳥だとunlinkは使えないのでしょうか?
掲示板が昨日まで動いていたのに急に動かなくなりました。 早くどうにかしてください。
677 :
627 :02/09/06 14:32 ID:???
PerlでのCGIなのですが、スクリプトの負荷を数値化する方法はないですか?
>>670 文字境界…。
$input = "浮P";
とかにすると化けちゃうよ。
680 :
ぱぴぷぺ :02/09/06 17:41 ID:UnlQ9r36
なんとかPerlで動的に画像をブラウザに表示させたろう と考えてるんだけど、モジュールとか使わない場合、 XBMつーーのがあるのを知ったのですが、 これはモノクロのみカラーは絶対ダメ?
>>680 >動的に画像をブラウザに表示
なら、Location、binmodeで吐く
「動的に作成した画像をブラウザに表示」
なら、GDが無難か?ファイルにもよるか…
xbmは白黒のみ xbm,xpmはIEで表示できたっけ。
>>679 perlによる日本語の扱いはeucにするのが常識。
>>683 ごめん。ついSJISで考えてた。
EUCなら、
$input="横井";
だね。
685 :
:02/09/06 23:30 ID:???
while (!mkdir($hoge, 0705)) { mkdir "$hoge", 0705; } これってどんな意味があるんですか?
$hogeがパーミッション705で製作されるまで繰り返す。
>>685 どうしてもmkdirしたい
{}の中が怪しいがw
688 :
685 :02/09/06 23:38 ID:???
>>686 これはもし、ディレクトリィがあった場合はどうなるんですか?
>>687 どの部分がぁゃしぃですか?
689 :
nobodyさん :02/09/06 23:42 ID:Aw2qBvZ4
ある変数の一番最後の文字を別の変数の頭に置くにはどうすればよいでしょうか。 例えば$aaaが4876で$bbbが124だった場合、$aaaを487、$bbbを6124にしたいのです。 「$bbb = chop($aaa).$bbb」 と書いてみたら、結果は$aaaが空白で$bbbが4876124になってしまいました。 どう書けばよいでしょうか。
690 :
nobodyさん :02/09/06 23:57 ID:1kVQvMrN
■10.000円の高額収入
1件につき最大10.000円の高額収入。月収100万円以上も可能。
■画期的なビジネス!
インターネットを利用したこれまでにない斬新で画期的なビジネスです。
■誰でも出来ます!
インターネットができる環境の方なら誰でも参加可能です。
インターネットを利用したビジネスですので、自宅や会社で好きなときにで
きるビジネスです。
■専門的な知識は一切不要!
ビジネスに必要なツールは全て当社で用意いたします。
また、サポートも万全です。
■詳細は今すぐこちらから
http://www.bea.hi-ho.ne.jp/paisen/
>>689 $aaaを""で1文字ずつsplitしたものを配列に入れて@hairetu[-1]で最後の文字を取り出してみる?
692 :
685 :02/09/07 00:01 ID:???
これは? $ccc=$aaa$bbb; $cco=$ccc =~ s/\d/\d/g; $cco=$cco-1; $ccc=~ s/(\d{1,$cco})([^\n])/$2/g; $ccc=$ccc$bbb;
693 :
685 :02/09/07 00:02 ID:???
一行ミスった。 $ccc=~ s/(\d{1,$cco})([^\n]*)*/$2/g; こふだった。
694 :
685 :02/09/07 00:05 ID:???
全然違うので考え直してきます。
695 :
685 :02/09/07 00:12 ID:???
$aaa='11111'; $bbb='22222'; $cc0="$aaa$bbb"; $cco=$cc0 =~ s/\d/\d/g; $cco=$cco-1; $ccc =~ s/(\d{1,$cco})([^\n]*)/$2/g; $ccc="$ccc$bbb";
$aaa = '4876'; $bbb = '124'; $aaa =~ s/(.)$//;$bbb = $1.$bbb;
>>685 そのスクリプトを理解する必要はないし、そのスクリプトから
何かを学ぼうと思わない方がいいと思うよ。
>>689 そのまま
$bbb = chop($aaa).$bbb;
で動くと思うけど。
700 :
697 :02/09/07 00:23 ID:???
701 :
685 :02/09/07 00:24 ID:???
$aaa='11111'; $bbb='22222'; $cc0=$aaa; $cco=$cc0 =~ s/\d/\d/g; $cco=$cco-1; $cc1=$aaa; $cc1 =~ s/(\d{$cco})([^\n]*)/$2/g; $ccc="$cc1$bbb";
702 :
685 :02/09/07 00:39 ID:???
685[なぜだ?今の答えなら間違いなくあたっていたはずだ。 きさまは以前にも突然現れ消えたことがあった。] 689[オラには聞き逃げができる。] 685[そいつはやっかいな技だ。バシッ!私も聞き逃げは自身があるんだ。]
703 :
685 :02/09/07 00:43 ID:???
1行書き忘れた。 685[689とまではいかないがね。]
704 :
689 :02/09/07 01:15 ID:mL5CsCc5
>>699 わたしもなぜ$bbb = chop($aaa).$bbb; で$bbbの値全部が$aaaの頭にくっついて
しまうのか、わからないんです。
>>685 $aaa $bbb の値は dat.txtを参照しているので、固定値ではありません。
705 :
689 :02/09/07 01:34 ID:mL5CsCc5
すみません。間違えました。頭ぐちゃぐちゃです(;;) わたしもなぜ$bbb = chop($aaa).$bbb; で$aaaの値全部が$bbbの頭にくっついて しまうのか、わからないんです。 ○ わたしもなぜ$bbb = chop($aaa).$bbb; で$bbbの値全部が$aaaの頭にくっついて しまうのか、わからないんです。×
ループの中でやってるとか。 #例 while($aaa){ $bbb = chop($aaa).$bbb; } これなら$aaaが空になって全部$bbbの頭に付く。
708 :
689 :02/09/07 01:55 ID:mL5CsCc5
>>706 きっとその通りです(><)
でも、置換条件があるので、
if($aaa ne $hoge){
$bbb = chop(aaa).$bbb;
}
というように、{}内に書かなきゃいけないかなと思っているのです。
発想自体間違っているのかな...
>>707 文字列扱いにする方法はありますでしょうか。。
>>707 chopの時点で文字列コンテキストに変換されるわけだが。。
>>708 適当なとこ言うな。
>>689 普通にやりたいことやるなら
$bbb = substr($aaa, -1) . $bbb;
だけど、chopでも$bbbの値は希望のものになるはず。
ならないなら他に原因がある。
前後のコード晒してみると吉。
一度だけ通れば良いなら if($flag != 1 && $aaa ne $hoge){ $bbb = chop($aaa).$bbb;$flag=1; } とか。
( ´,_ゝ`) プッ みなさんレベルが低いですね
713 :
689 :02/09/07 02:10 ID:mL5CsCc5
>>710 とりあえずchopはあきらめてsubstrで試してみます。
(やりたい事は同じはずだから)
ありがとうございました。
ちなみにif(){〜}はループじゃないぞ。
その外側にwhile(){〜}とかfor(){〜}とかforeach(){〜}とかの
ループがあるんじゃないのか。
substrじゃ$aaaの値は減らないけど良いの?話違わない?
>>712 スレタイ嫁
……chop、カッコで囲んだら? $bbb = (chop($aaa)).$bbb;
>>684 私は、jperl使ってるので別に文字化けしないけど。
じゃtr使えばいいじゃんという問には答えません。
( ´,_ゝ`) プッ みなさんレベルが低いですね
↑さびしんぼハケーン(・∀・)ニヤニヤ
↑さびしんぼハリケーン(・∀・)ニヤニヤ
721 :
CGIゲームつくりたい人 :02/09/07 18:06 ID:BCsa1yWW
CGIに関してはまったく知識がないのですがこれから勉強するつもりなのですが 目標が自分でCGIゲームを作ることで そのために参考書を買って勉強したいのですが オススメの本ありますか? 本屋いってもゲーム作りの本がどれだかわからなくて・・・ よろしくおねがいします。
>>721 作りたいゲームにもよるけど
Perl は君の求めるものに向いてないと思うよ。
JavaScript とかの方が良いんじゃない?
>>722 C言語薦めた方が…。
>>721 perlでゲーム作るのは空しいかも。
趣味の域は越えられますまい。
>722-723 まてまて、Flash+CGIという素晴らしいコンビネィションがあるだろうが
>>721 が何言語でCGIを作るのかが、大事だろうが。
726 :
nobodyさん :02/09/07 20:02 ID:6TBf75EA
データが入ってるファイルに一行で ヤッタ?マン コーヒー ライター という3つがスペースで区切られてあった時、 aa=ヤッタ?マン bb=コーヒー cc=ライター というふうにするにはどうすればよいのでしょうか?
>>726 ($aa, $bb, $cc) = split / /,"ヤッタ?マン コーヒー ライター";
730 :
CGIゲームつくりたい人 :02/09/07 20:58 ID:BCsa1yWW
>>722-725 >>727 レスありがとうございます。
作りたいゲームは・・・罪と罰++やFFAみたいなゲームです
普通のPerlの本をきちんと読めば作れますか?
それともゲーム作成向けの本とかあるんですか?
だ!か!ら!無理だっつーの。 だいたいゲーム作りたいならCやれ。 Perlは馬鹿でも使える言語だが、ゲームが作りやすい言語でない。 習得期間は Perlは3カ月で Cは1年 C++は3年だ。 Perlの本はオライリーの奴買っとけ。
修得はCよりもPerlの方が時間がかかるとおもうよ。 複雑さがCとは比べものにならないでしょ(^_^;)
>733 両方覚えたけどPerlの方が楽。 Cは基本的な部分を覚えるまでに挫ける人が出そう。 プログラムのいろはを知らない人間ならPerlからの方が断然楽だと思う。 サンプルソースが山のように転がってるし。 なにをもって習得とするかの問題だけど、出力をHTMLでできる分、 PerlでCGIスクリプト作った方が楽だと思うよ。
>>730 perlは「ゲームを作るための言語」ではないので
「ゲームの作り方の本」なるものはないと思われ。
応用すればゲームにもなるというだけの話
736 :
nobodyさん :02/09/08 01:41 ID:GXmEPtQH
for(@xx){〜} と foreach(@xx){〜} の違いを教えてください
perl -MO=Deparse,-x7 -e 'for(qw/a b c/){ print }' perl -MO=Deparse,-x7 -e 'foreach(qw/a b c/){ print }' というわけで、for(@配列)の場合、ただのforeachと同等。
738 :
nobodyさん :02/09/08 01:53 ID:GXmEPtQH
サンクス
739 :
nobodyさん :02/09/08 06:17 ID:nOl8KoRo
結論 perlでゲームは作れるが、perlでゲームを作る本などない perlで掲示板が作れるようになれば、まあゲームも作れるだろう
>>732 Perlでマインスイーパー作りましたが、何か?
741 :
nobodyさん :02/09/08 06:47 ID:gqIGmvuo
>>732 アクション系列のゲームならそうでしょうが、ウェブ上でのゲームならPerlベースで幾らでもありますよ。
表現はHTMLが精々ですけどね(w
で、質問です。
AnyDBMで1000人前後のデータ(名前、成績、等大小50パラメータぐらい)を管理しようと考えています。
それでファイルロックをどうしようか悩んでいるのですが、
sub LOCK {open (LOCK, "lockfile.lock");flock(LOCK,2);}
sub UNLOCK {flock(LOCK,8);close(LOCK);}
こんなのってありなんでしょうか?
それともやはりrename等で制御したほうが良いですか?
742 :
名無し二丁拳銃 ◆0s6WDHa6 :02/09/08 11:30 ID:HukZlCsp
最近Perlを始めて,今,カウンタを作っているところなんですが, 以下のソースだと,カウンタの値が永遠に1のままなんです。 #!/usr/local/bin/perl #値を保存するファイル名 $file = "count.dat"; #−−処理開始−− #ファイルを読み込み open FH,$file; $count= <FH>; #カウントアップ処理 $count++; #書き出し処理 print "Content-Type: text/html\n\n"; print "Total : <a href=cgi-bin/acces/replist.cgi>$count</a>"; #値を保存 open FH,>$file; close FH; exit;
sendmailでメールを送りたいです。 html形式で送ろうと思うんですが、 ヘッダーの部分の Content-Type: text/plain; charset=ISO-20220JP ここのtext/plainを text/html に変えればいいだけですか? ローカルだと実行できないので教えてください。
>>744 ローカルでテストするときはsendmailに渡すんじゃなく、ファイルに書き出してみればいいんじゃない。
746 :
nobodyさん :02/09/08 12:14 ID:Y8OpaJeI
はじめまして。 掲示板のプログラムを作成しています。 『投稿確認』をしたいのですが、そこでどうにもこうにも困ってるキングオブDQNなんです。 まず、htmlファイルからsubmitで送られたデータを表示することはできるのですが そこから先、どうすればいいのか分かりません。 どうすれば [投稿確認画面表示]⇒[logファイルへの書き込み]の二段構えにすることができるのでしょう?
>746 <input type="hidden" name="***" value="*********">
748 :
:02/09/08 12:24 ID:???
749 :
746 :02/09/08 12:31 ID:Y8OpaJeI
>>745 どもっす。
とりあえず、上手くいきました。
whileとかループをぬけるのはlastですが、ifをそっこーで抜ける方法はありますか?
752 :
746 :02/09/08 13:16 ID:Y8OpaJeI
うう、うまくいかなかった。やっぱりキングオブDQNだよ。w 確認画面でsubmitで送られた文字を表示して <form action = "./data.cgi" mehtod = post> <input type = "hidden" name = "confirm" value = "OK"> <input type= "submit" value = "投稿する"> で最初にsubmitで送られた文字を表示するのと同じCGIを呼び出して if ($confirm eq 'OK' ) { …… } で分岐させたのだけれど、うまくいかない。 確認画面が表示されるだけです。しかも、nameとかemailとかのデータが全部消えてる。
754 :
747 :02/09/08 13:21 ID:???
>752 1から勉強しなおせ。 >751 gotoなどと言ってみるテスト。
>>752 確認画面を表示の時に一度送られてきたデータも
hiddenで書き出してる?
756 :
746 :02/09/08 13:26 ID:???
>>755 いえ、していません。必要なのでしょうか?
757 :
747 :02/09/08 13:30 ID:???
>756 nameなどのデータを入力 ↓ 入力されたデータを受け取る 確認画面表示 ↓ 入力されたデータを送っていない データが空っぽ
>>754 >gotoなどと言ってみるテスト。
( ´,_ゝ`) プッ
759 :
746 :02/09/08 14:01 ID:???
hiddenで書き出しても、うまく送信できません。 なには他に注意点はあるのでしょうか? 荒らしてゴメン。
>759 ソースをtxtにしてアプれ。 多分一斉につっこんでくれる。
>>759 HTMLを覚えてこい
データの送受信を覚えてこい
日本語覚えてこい
htmlファイルへの書き込みのときに現在は下のようにしているのですが これだとhtmlファイルを見ると\nが効いて改行されているのですが cgiファイルでは改行されていないので見にくいです。 ヒアドキュメントを使って print HTML <<HEADER ではだめでした。 どうしたらよいでしょうか? open(HTML, ">hoge.html") || &error("ファイルが開けません"); print HTML "<HTML>\n<HEAD>ここにタイトルやスタイルシートなどをごちゃごちゃと</HEAD>\n<BODY>\n"; close(HTML);
説明する能力って大事だよね
764 :
746 :02/09/08 14:25 ID:???
もういいです。さいなら。
print pack('C*', map{$_+180}(1,27,0,35,23,27,12,42,17));
いらっしゃーい、Perlの「コーディング」で困ってる人のスレです。 1:自分はこう言う事がしたい。 2:それでこんな風にやってみたが・・・ 3:それだとこんなエラーが出て上手く行かなかった。 1と3が無いと誰も答えられないよ。 良い回答は良い質問から。一緒に勉強しましょう。
767 :
nobodyさん :02/09/08 14:45 ID:971QY8yx
a.sh(sh)で定義した変数をperlで書いたスクリプトで参照したいのですが どのように書いたらよいですか? a.sh #!/bin/sh STR=testtxt ↑ (このSTRという変数をperlのスクリプト内で使いたい)
-- test.sh ------------------------------ #!/bin/sh export STR=mona /usr/bin/perl test.pl -- test.pl ---------------------------- #!/usr/bin/perl print "STR = $ENV{STR}\n";
769 :
nobodyさん :02/09/08 16:11 ID:QxRWekvC
他人がWindowsで作成したiモード用のcgiを直すことになったのですが、 iモード用作成は初めてで、 しかもMacなので、どうやってテストすればいいか分かりません。 iモードツールみたいなもののMac版ってないですかね? 教えて下さい。
マルチ氏ね
771 :
nobodyさん :02/09/08 16:30 ID:fnlZSMGR
GoogleのクロールにCGIの実行結果を反映させるには、どのような点に注意すればいいですか?
>>771 どうやらGoogieは、「〜.cgi」で終わってるリンクは無視するけど、
「〜.cgi?***」となってるリンクは拾う模様。
***の部分はテキトーで構わないので、Googleに拾って欲しければ
そのCGIへリンクを張る時に、「<a href=〜.cgi?hoge>」とでもしておけばよし。
まぁ俺調べに過ぎないのでダメだったらすまそ。
つってもスレ違いぽいけど。
>>762 open(HTML, ">hoge.html") || &error("ファイルが開けません");
print HTML "<HTML>\n";
print HTML "<HEAD>ここにタイトルやスタイルシートなどをごちゃごちゃと</HEAD>\n";
print HTML "<BODY>\n";
close(HTML);
774 :
nobodyさん :02/09/08 22:08 ID:wn4ctmfO
Proxyをはじくものを作りたいんですが、どうやったら判別できますか?
775 :
適当 :02/09/08 22:12 ID:???
>>774 if(!$ENV{'HTTP_HOST'}){
print"カエレ";
exit;
}
>744 漏れ串くらいしか無理。 A串は無理。 診断君でも見てな。
既存のものを見習え。
778 :
775 :02/09/08 22:18 ID:???
HTTP_HOST>REMOTE_HOST
779 :
741 :02/09/08 22:19 ID:gqIGmvuo
鬱。
780 :
nobodyさん :02/09/09 00:56 ID:ocbC3C/Q
copal2の構文チェックってどうやるの?
781 :
nobodyさん :02/09/09 01:41 ID:ewVE42mB
はじめまして 初心者なのでよろしくお願い致します CGIを単独で実行できるEXEにするようなツールはありませんか? postやgetで受信した変数を判断し、ローカルでそれっきりで動くもの そういうものはありませんか?
CGIってのが、PerlならPL2EXEとか。
783 :
Rikuta :02/09/09 01:50 ID:4uRhXRlu
掲示板を作成しています。 長くなったタイトルや、URL表記を途中まで取得し、 残りを「....」としたいのですが、正規表現ではどうするのでしょうか。 @subject = split(//,$subject); @subject = splice @subject,0,40; undef $subject; foreach (@subject){ $subject = $subject.$_; } print $subject; としたのですが、当然というか・・・日本語では化けてしまいます。 Jperlを使用しないでどうすればよいでしょうか。
784 :
nobodyさん :02/09/09 01:52 ID:ewVE42mB
782>> ありがとうございます 試して見ます
785 :
741 :02/09/09 02:12 ID:2XJWXXjE
鬱。ダレモコタエテクレナイヨー
786 :
741 :02/09/09 02:49 ID:2XJWXXjE
チョトIDガカコイイカモ
>>783 $subject =~ s/([\W])/sprintf("%%%02X",unpack("C",$1))/ge;
788 :
787 :02/09/09 03:07 ID:???
↑URLエンコードしてしまう
789 :
nobodyさん :02/09/09 03:08 ID:EyAemdpt
>>783 $n = 40;
$subject = substr($subject,0,$n+1);
$tmp = chop($subject)."\0".$tmp while($subject);
$tmp =~ s/(?<=[\x81-\x9f\xe0-\xfc])\0(.)\0/$1\0\0/g;
$subject = substr($tmp,0,$n*2).'....';
$subject =~ tr/\0//d;
print $subject;
>>741 読み込みオープンのロックは1。それも他の書き込みに対するロックなので
読み込みには無力。
書き込みで開いてロックしときな。
790 :
783 :02/09/09 03:18 ID:???
>>787 表示上で使用しますので、エンコードはちょっと・・・
>>789 ありがとうございます。
うまくいきました。
>>790 エンコードして切ってデコードって言いたいんじゃないの?こんなふうに。
$n = 40;
$subject = substr($subject,0,$n+1);
$subject =~ s/([\W])/sprintf("%%%02X",unpack("C",$1))/ge;
$subject = substr($subject,0,$n);
$subject =~ s/(%[a-f\d]|%)$//i;
$subject =~ s/%([a-f\d]{2})/pack("H2",$1)/egi;
print $subject;
792 :
791 :02/09/09 03:42 ID:???
あ、これじゃエンコードしてる意味無いね(;´Д`)
793 :
nobodyさん :02/09/09 03:43 ID:PULoisdM
空行は/^$/にマッチするのは分かるんだけど 空行を削除するにはどうしたらいいんですか? あたりまえだと思うけど while(<STDIN>){ s/^$//; } としても駄目なんです。。
>>793 @line = <IN>;
$n = @line;
for($i=0; $i<$n; $i++){
if($line[$i] eq "\n"){
$line[$i] = '';
}
}
かな…?
>>793 print unless /^$/;
で逝けますYO
>>783 Shift-JIS
$subject = ($subject =~ /([\x0-\x7e\xa0-\xdf]|[\x81-\xbf\xe0-\xfc][\x40-\xfc]){40}/s) ? $& : $subject;
EUC-JP
$subject = ($subject =~ /([\x0-\x7e]|[\x8E\xA1-\xFE][\xA1-\xFE]){40}/s) ? $& : $subject;
これでどうかな?
797 :
nobodyさん :02/09/09 09:52 ID:OPX6Zz9+
ド初心者なんですがスマソ パスワードが違ったらはじくのを作りたいんですが正しく動作しません どこをどう直せばいいでしょうか? if ($pass != xxxx){ print "aho"; exit; }
799 :
nobodyさん :02/09/09 10:16 ID:OPX6Zz9+
>>798 パスワードが違ったらahoと表示させたいんですよ
eqだと合ってたらahoですよね?
>>799 そこまでわかってて何故neにたどりつけないのか謎
ちなみにパスワードは暗号化したほうが良いよ
801 :
nobodyさん :02/09/09 10:41 ID:OPX6Zz9+
>>800 neでやっても500Internal...がでてきちゃうんですよ
802 :
nobodyさん :02/09/09 10:54 ID:OPX6Zz9+
言い方がまずかったですね passが違う場合にif内を実行したらcgiを終了させるものを作りたいんですよ (passが合ってるならifより後を実行)
803 :
◆TpctYDQ6 :02/09/09 10:56 ID:YALFpbWA
if ($pass ne "xxxx"){ print "aho"; exit; } で、エラーなら問題は別のところでしょ。
804 :
nobodyさん :02/09/09 11:04 ID:OPX6Zz9+
>>798-803 print "Content-type: text/html; charset=EUC-JP\n";
を加えたら正しく動きました。スマンコ
首釣って逝ってきます。
>>794 ,795
その方法でいけました。
ただ、
while(<STDIN>){
s/hoge/hage/;
s/omeko/sasete/;
print;
}
みたいな置換と一緒に空行を削除したい
場合はどうすればいいの?
ifをネストすればいけると思うんだけど
書けないので教えてください。
>>806 while(<STDIN>){
if($_ ne"\n"){
s/hoge/hage/;
s/omeko/sasete/;
print;
}
}
質問があります。 今日が、その年その月の第何週何日目か? を求める方法を教えて下さい。 例えば今日の場合、第2週の3日目なので 出力結果を23と得たいです。 お願いします。
>>806 while(<STDIN>){
next if /^$/;
s/omae/bakaka/;
s/omae/ahoka/;
print;
}
でもええよ。
>808 ($sec , $min , $hour , $mday , $mon , $year , $week) = localhost(time); print (int($mday/7)+1)*10 + $week ;
>810 =~ s/localhost/localtime/; ∧‖∧
>810 それだと2-6日は必ず第1週になるよ…
814 :
∧‖∧ :02/09/10 13:46 ID:???
>812 仕様書の意味取り違えてました。 ($sec , $min , $hour , $mday , $mon , $year , $week) = localtime(time); print (int(($mday+8-$week)/7))*10 + $week; かな?
カレンダーとかかな?
>>808 を読むと日曜が始まりみたいだけど、それなら
($sec , $min , $hour , $mday , $mon , $year , $wday) = localtime(time);
として、
第何週かは
int(($mday + 12 - $wday) / 7)
何日目かは
$wday + 1
だと思う。たぶん…
>>810 >>815 ランダムに日付を変えて何度かテストしてみても
期待通りの結果が得られて大丈夫でした。
ちなみに、利用するのは
いつも巡回する複数サイトの一部記事を
引っこ抜いて表示させるものです。
新しく追加するサイトのファイル名が
今回質問させていただいたフォーマットでした。
ありがとうございました。
817 :
nobodyさん :02/09/10 21:40 ID:ApnEpI8H
Perl 5.6.1、Vine2.5で勉強してます。プログラミングはPerlが初めてです。 リャマ本第2版、P172の問題2が分かりません。 題意は、Unixのmvコマンドと同じ働きをするプログラムを書け、 という内容で、ヒントとして、第2引数がディレクトリの場合も考慮せよと。 で、漏れの解答はこんな感じです。変数の名前、正規表現の 区切り文字は末尾の解答例に合わせてます。 ($old, $new) = @ARGV; if (-d $new){ $basename = $old; $basename =~ s#^/.*/##g; $new = $new . "/$basename"; } rename($old, $new) or die "Cannot rename $old to $new: $!"; 一応は思った通りの動きをします。メデタシ。 ところが、解答例は、4行目が以下のようになってる。 ($basename = $old) =~ s#.*/##s; 勿論、こちらも思った通りの動作をしますです。 かっこは、漏れの解答での3行目と4行目を合体させてだけなので 無視するとして、よく分からないのは、右辺です。 1) s/ は置換だけど、後の/sは一体何? 2) .*/ だと、頭の/が残るような気がするんだけど。。。 なんでだろう。。。?
818 :
nobodyさん :02/09/10 21:44 ID:Lqs0IC/U
819 :
817 :02/09/10 21:45 ID:ApnEpI8H
自己レスですが、(2)は、たった今、自分の書いたのをみて分かりました! ルートディレクトリの「/」も 「.*/」で、「.」にマッチするやん! ってゆーか、これだと、 # test.pl aaa ~/bbb の場合、エラーになるよね? ニョロがマッチしないから。。。 で、1)の方は、おながいします。
821 :
817 :02/09/10 21:59 ID:ApnEpI8H
>>820 サン、ありがとうございます。
ははぁ、なるほど!
文字列を単一行として扱う、ということですね。
だけど、この問題の場合、こんなオプションが必要なのでしょうか?
勘違いしているかもしれないけど、漏れの理解では、深いディレクトリ
を処理すると、引数が複数行になってしまうことがあるかもしれないので
sをつける、と思ってるのですが、この考えによると、普通mvするとき
引数に改行なんか入れないですよね?
そもそも、んな深いディレクトリを掘ることってあまりないので、
今まで思いもよらなかったし、そもそもmvコマンドで引数に改行
入れてもいいのかどうかも分からん。。。
いくら長くても一行だと思うが。
823 :
nobody :02/09/11 02:17 ID:Zh9eBVFz
”どこが間違っているのかわかりません”的なものじゃないんだけど crypt関数の使い方で聞きたいことがあります。 (例) print "文字列を暗号化します。適当に文字をいれて下さい\n"; $get = <STDIN> $key ="sp"; $pass = crypt($get,$key); print "暗号化された文字列は$passです\n"; この$keyの部分は任意の二文字を入れるんだけど それってどういう意味があるんでしょうか? これによって暗号化される結果などが違ってくるのでしょうか??。 特に意識することではないんでしょうか?
>>823 >結果などが違ってくるのでしょうか
全然変わる。
>>823 そんなの、それを実行してみればすぐに解りそうなもんだが?
(`Д´)
PERLでURLを指定してそこのソースを取得する方法を知っている方、 どうかおしえてつかーさい。
>828 「LWP」で検索。
830 :
nobodyさん :02/09/11 13:13 ID:l0g0P0Oz
ライブラリを読み込む際、いちいちrequire **.plってかかなきゃダメでつか? 7枚くらい読みこまなきゃいけないんですけど長ったらしくて。
>>830 >ダメでつか?
>7枚くらい
( ´,_ゝ`) プッ
馬 鹿 ば っ か し だ な(藁 おれをふくめてな。
「オ・・・ッ オクッ・・ オクレ兄さあああああああああああああああんッッッ
>>830 別ファイル(仮にloading.plとする)に
require "a.pl";
require "b.pl";
.
.
.
って書いといて、本ファイルでは
require "loading.pl";
だけで逝けるよ。
さすがに、require "a.pl", "b.pl" ...;はだめでしょ。
>>834 ナルホド。
>require "a.pl", "b.pl" ...;
はい。ダメですたw
ありがとござました。
改行だとわかってるときはchompよりchopのほうがいいの?
\r\nも\nしか削らない<chop byとほほパパ
838 :
nobodyさん :02/09/11 20:31 ID:ofaOgNiv
初心者なんですが、変数から特定の文字列を探す方法ってないですか? すまそ。教えてください。
>838 index 後は検索しる。
840 :
nobodyさん :02/09/11 20:39 ID:ofaOgNiv
>>839 indexって何番目にあるかを検索するだけですよね?
どうやって使うのかが分からないです。
>840 特定の文字列を探したかったんでしょ? 使い方は検索しる。 文字列を探して抜き出してどうこうしたいってなら、 substrを使うとか、indexを使わず正規表現に頼るとか。 後は検索しる。
842 :
839 :02/09/11 20:48 ID:ofaOgNiv
>>840 使い方何となく分かりました。ありがとう!
ユーザー関数を定義する事ってできますか?
ユーザー関数を定義しる: ユーザーが作ったサブルーティン、ライブラリ、モジュール。 (反対語:)組み込み関数 ユーザー定義を関数にするんじゃないか?
845 :
nobodyさん :02/09/11 21:49 ID:wdtzvpz4
できます。
>>837 >\r\nも\nしか削らない<chop
\n について勉強したほうがいいよ
847 :
847 :02/09/12 14:36 ID:???
$syu =~ s/<br>/\r\n/g; $value =~ s/<br>/\r/g; $value =~ s/<br>/\n/g; このようにフォームデータを変換するのと逆に、 すべてのOSの改行文字に対応して、改行を<br>に変換することはできますか? フォームのtextareaのvalue=""にログを入れたいのですが。
848 :
847 :02/09/12 14:37 ID:???
一行目の$syuは$valueの間違いです。
出来ない。 つーか、\nで十分。
850 :
847 :02/09/12 14:45 ID:???
for($NUM = 0; -e "$NUM.jpg" == 1; $NUM++){ print "<a href=\"$NUM.jpg\">$NUM</a>"; } としたのですが、上手く動きませんでした。 For文は for(NUM =0; ここの条件が成り立ってるとき動作する; NUM++) こういう事ではないのでしょうか? while文で while(-e "$FileAddress$NUM.jpg" eq "1") こうしたらできたのですが・・・
852 :
851 :02/09/12 17:34 ID:???
ファイルが連番で[1-20].jpgである場合、 -e でファイルが存在を調べるか、 readdir で一覧を取得するか どちらかを考えたのですが どちらの方が効率が良いと思うでしょうか? ご教授頂けないでしょうか、お願いいたします
Benchmark.pm で調べれ
$syu =~ s/\x0D\x0A/<BR>/g;
$syu =~ s/\x0D/<BR>/g;
$syu =~ s/\x0A/<BR>/g;
>>847 この産業で出来るぞ。
>>854 <BR> を改行に変換したかったんじゃないのか?
856 :
nobodyさん :02/09/12 18:22 ID:V0oL4dfD
なんかファイル処理でDBM使わされることになったんですが、ファイルロックがイマイチ分かりません。 sub Filerock { my $now = time(); my $lockfile = "lock"; my $locking = "lock.now"; for($_=5; $_>=0; $_--){ if(rename($lockfile, $locking)){ utime($now, $now, $locking); $SIG{'INT'} = $SIG{'HUP'} = $SIG{'QUIT'} = $SIG{'TERM'} = "intProc"; # 割り込みで中断するときの処理を定義 &Dbmopen; return; } sleep 1 if $_; } &Header("フォームエラー"); print "<h2>ロックちう</h2>\n<hr>\n"; &Footer; exit; } こんなんで良いんでしょうか。 もっと効率の良いコードがあればアドヴァイス願います。
ダミーファイルでも開いてflockしとけ
858 :
nobodyさん :02/09/12 18:31 ID:NNUPZyEk
>>851 $NUM.jpg
と
$FileAddress$NUM.jpg
違うよ
861 :
初心者厨房 :02/09/12 19:24 ID:jvK2X5HW
Perlの勉強を始めたばかりの初心者です。ちゃんと書いたつもりなんですがうごきません。 どうしてなんでしょうか。教えてください。お願いします。 #!/usr/local/bin/perl print "Content-type: text/html\n\n"; print 10+5 # 足し算 print " / "; # 区切り print 10-5; # 引き算 print " / "; # 区切り print 10*5; # 掛け算 print " / "; # 区切り print 10/5; # 割り算 print " / "; # 区切り print 10%5; # 剰余算 _END_
print 10+5 # 足し算
print 10+5 # 足し算 ↓ print 10+5; # 足し算 エラーメッセージぐらい読め
>>864 ハァッ!!!!!!!!!!!!!!!!!!!!!?
( ● ` ∇ ´ ● )ガオー
870 :
初心者厨房 :02/09/12 19:54 ID:ODncwTzE
ありがとうございます。わかりました。ところでエラーメッセージのどこをみればわかるのですか?
873 :
初心者厨房 :02/09/12 20:08 ID:ODncwTzE
ほんとに始めたばっかでなにがなんだかわかんねーんだからしょうがねーだろ。
< ● ` ∀ ´ ● > <
>>873 一緒に祖国に帰るニダ
1 :ぼぶ ◆EMrmvKLI :02/09/10 19:18 ID:G4zqfa38 これはいろんなとこにコピペしてください。 みんなで台風を起こしましょう。 東京駅を中心に右回りです。 9月22日夜9時にみんなでいっせいに「フゥー」と吹くのです。 注意 周りに障害物のないところでやりましょう(なるべく高いところ) 「フゥー」以外に扇風機やうちわを使ってもかまいません。 !東京を壊しましょう!
876 :
初心者厨房 :02/09/12 20:15 ID:ODncwTzE
#!/usr/local/bin/perl print "Content-type: text/html\n\n; $atai='値'; print '「$atai」(シングルクォート文字列では展開されない)/'; print "「$atai」(ダブルクォート文字列では展開される)"; _END_ 何がまちがってんの?
いらっしゃーい、Perlの「コーディング」で困ってる人のスレです。 1:自分はこう言う事がしたい。 2:それでこんな風にやってみたが・・・ 3:それだとこんなエラーが出て上手く行かなかった。 1と3が無いと誰も答えられないよ。 良い回答は良い質問から。一緒に勉強しましょう。
糞な質問ばっかりだな
てゆーか最近カマッテ君が住みつきだしたのはなんで?こんなとこに。 上級者ぶってツッコミ入れてるのも知ったかぶりだからとんちんかんだし とりあえず初心者嘲笑いたいなら的確に回答してやってからにするのが筋ってもんじゃないの
何でもかんでも答えるのは如何なものかと。
◆4XfSMGTgの発言禁止依頼しました
答えないでいるならいいが、質問馬鹿にするだけしといて そいつ自身答えられないパターン多すぎなのも見ててうざ
下手に答えて自分がバカにされるのが嫌なんだろ、きっと。
>>887 いや今まで無視してたよ リアクションしてあげないのが一番だから。
ここに来て立て続けで軽く荒れてきたから
ちょうどいいかと思ってつっこんでみただけ。
で、結局釣られたのは>888というオチか
890 :
888 :02/09/13 00:03 ID:???
はいはいごめんよ 俺が悪かった。許してね。
>>889 −−−−−−−−−−−−−−−−−−−−−−−−−−−
以下、普通のスレに戻って下さいませ。
場を乱すだけ乱しといて何を今更…
>>891 これ以上乱れないように882で釘さした形だと思うが。887とかが俺を煽ってきただけだし
申し訳ないがもうレスらないんでよろ
いらっしゃーい、Perlの「コーディング」で困ってる人のスレです。 1:自分はこう言う事がしたい。 2:それでこんな風にやってみたが・・・ 3:それだとこんなエラーが出て上手く行かなかった。 1と3が無いと誰も答えられないよ。 良い回答は良い質問から。一緒に勉強しましょう。 ~~~~~~~~~~~~~~~~~~~~~~~~~~
894 :
nobodyさん :02/09/13 03:15 ID:R5wD3hCH
mbx形式のメールをmh形式にばらす スクリプトを書こうと思ってます。 mbxは複数のメールが1つのファイルになっていて ピリオドだけが書かれた行がメールの区切りになっ てます。そのmbxファイルを1つ1つのメールに ばらして連番で出力したいのです。 #書いたプログラム-mbx.pl open(OUT,">$n"); while(<STDIN>){ unless(/^\.$/){ print OUT; } else{ ++$n; } #ここまで で、実際にperl mbx.pl < hoge.mbx とすると1に全て出力されてしまいます。 なにがいけないんでしょう?
>>894 追記
最初に$n = 1;で初期化してます。
>894 改行文字忘れてるよ
>>896 ごめん意味わからない。どこにつけ忘れてるの?
>897 unless(/^\.\n$/){ かな?
>>898 指摘サンクス。
あとはどうすれば連番で出力できるのか
教えてくらはい。
>894 てか unless( $_ eq ".\n" ) でいいんじゃ...
メール本文に.\nがあったらまずいかな と思ったんだけど。。。
>>899 open(OUT,">$n");
をwhileの中に入れてないからでわ?
何がしたいのかイマイチわからないけど
こういう事か?
$n = 0;
while(<STDIN>){
next if($_ eq ".\n");
++$n;
open(OUT,">$n".'.mh');
print OUT;
close(OUT);
}
>>901 区切りに使われてるものが本文中に無変換で置かれてることは
ないだろう。もしあったらシステムが破綻する。
>899 こんな感じでどう? $n = 0; loop: { $n++; open( OUT, ">$n" ); while ( <> ) { if ( $_ eq ".\n" ) { close OUT; redo loop; } print OUT; } }
>>904 書き込みで開いたら何も出てこないぞ…(;´Д`)
>905 ?
907 :
905 :02/09/13 04:29 ID:???
ごめん、勘違い。
>区切りに使われてるものが本文中に無変換で置かれてることは
>ないだろう。もしあったらシステムが破綻する。
よく考えたらそうですよね。
>>903 >>904 両方試したけど各行ばらばらになって出力されてしまいます。
.mbxの改行コードはlfなんですが。
なんでだろう。。
>908 ばらばらって?
910 :
894 :02/09/13 04:35 ID:???
$n = 1; open(OUT,">$n"); while(<STDIN>){ unless(/^\.\n/){ print OUT; } else{ ++$n; open(OUT,">$n"); } } で自己解決しました。 説明が下手でちゃんと伝わらなかったみたいでスマソ。
911 :
894 :02/09/13 04:37 ID:???
>>909 hoge.mbxの内容が1行ずつ連番で出力されて、
7000.mhとかまでできた。
>911 そんなはずは......ちゃんとコピペしてくれた?
913 :
894 :02/09/13 04:48 ID:???
>913 あ 904 なんだけどね...... うちではちゃんと動いたんだけどなぁ まぁいいんだけど
915 :
894 :02/09/13 05:05 ID:???
>>914 はじめてのperlって本を一通り終えただけの
初心者だからredoとかloopが分からないのレス。
動かない理由がよく分からないけどサンクス!
$xxが"aa"でも"bb"でもないとき"cc"と表示するのを作りたいんですが if ($xx ne "aa"|"bb"){ print "cc"; } これじゃいつでも"cc"と表示します。何でですか?
if ($xx ne "aa" && $xx ne "bb"){ print "cc"; }
918 :
905 :02/09/13 16:15 ID:???
>>894 このくらいの説明は最初にしようよ
| > MBXファイルのフォーマットを公開して頂けないでしょうか?
|
|次の通りです。
|
|ヘッダ
|(ブランク行) --- CRLF1個だけの行
|本文
| --- 行頭に1個のピリオド(メール間の区切り文字)
|ヘッダ
|(ブランク行) --- CRLF1個だけの行
|本文
| --- 行頭に1個のピリオド(メール間の区切り文字)
|
|
| (注意)本文の行頭に「.」がある場合は、「..」というように「.」を1
| 個余分につけて保存されます。
919 :
nobodyさん :02/09/13 16:48 ID:+7b38iG7
dataディレクトリ内のディレクトリ一覧を取得しようと思って↓の コード書いてみたんですが、いくつかディレクトリが存在するにも関わらず 「.」(ルート)と「..」(上)のディレクトリしか拾えないんですが、何かおかしな 点などありますでしょうか・・・ opendir(DIR, "data"); while($dir = readdir(DIR)){ if(-d $dir){ #処理・・・ } } closedir(DIR);
920 :
919 :02/09/13 16:51 ID:+7b38iG7
すんません、分かりました if(-d $dir){ は if(-d "data/$dir"){ としないとダメですね。
ひとつのcgiファイルの容量はどれくらいまでOKなんでしょう? 特に気にする必要はない?
ワラた
>>921 10MBとか書いてみればどうでしょう?w
アクセスする人数にもよるけど
重たいものを書いたらすぐビジー出ますよ
重たいものと大きいものは全く違うんじゃない?
数十行でも重い処理は書けるからね。
>>921 まず気にするほどのことは無いと思う。多分1MBくらなら問題ないでしょう。
プログラムが重いと感じたら処理の流れを見直すべし。
それと、「CGIファイル」じゃ意味が通じないんで「Perlスクリプト」や「スクリプトファイル」と表現するように。
上記の回答もそのような意図と解釈して書いてます。
925 :
名無しさん :02/09/13 20:11 ID:dJSmRC1R
926 :
nobodyさん :02/09/13 20:56 ID:MTIQ7Fw0
変数の表記で変数名も変数である場合 $xx_(ここも変数) ()の変数は$yy どう表記したらいいでしょうか?
${xx_}$yy
{ my $xx_1 = "foo"; my $yy = 1; no strict 'refs'; # シンボリックリファレンスを許可する(デフォルト) print ${"xx_$yy"}; }
>>927 ,
>>929 Can't use an undefined value as a symbol reference at test.3.pl line 8.
>>928 fooが出力されるべきところ何もでてこない
結局、どれでやってもだめレスが・・・
931 :
930 :02/09/14 08:21 ID:???
ゴメソ
>>928 は、myを取ったら出力されました
わしの考えたのは
$var = "xx_" . $yy;
print $$var;
分かりやすくていいでしょ
あ、そりゃmyがあればダメだよね。つい癖で…。 ごめん。
933 :
929 :02/09/14 14:29 ID:???
934 :
nobodyさん :02/09/14 14:58 ID:bLV5ATcL
AnyDBM使って多数のパラメータを扱うのですが、 データ数が多い場合はやはり幾つかのDBMに分けた方が良いのでしょうか。 それとも全部一括りにして1つのファイルにまとめた方が効率が良いのでしょうか。 ちと分からないので質問です。
>>934 ファイル1枚
・壊れやすそう
・壊れたら致命的そう
・サイズがでかそう
ファイル複数
・壊れにくそう
・壊れても被害は少なそう
・余計なデータは読まずに済むから軽そう
936 :
nobodyさん :02/09/15 05:43 ID:sdGpPtiV
特定の日付からgmtime?(1018470831みたいな数値)を逆算するには どうしたらよかとでしょうか?
937 :
nobodyさん :02/09/15 07:30 ID:iaBuYHci
>>936 1900年からの経過秒数が知りたいの?
だったら、
use Time::Local;
print timelocal(0,0,0,15,8,102);
で9月15日0時0分0秒のそれが出てくる
短くて済む、という理由でrequireじゃなくてdoを使いたがっています。 ライブラリルーチンのインクルードは、requireを使った方が良いといわれていますが、 その理由がよくわからないので言う事を聞く気になりません。 うまい具合に違いを説明して僕を説得してください。
939 :
あ ◆4WVJTVm. :02/09/15 11:47 ID:7pMxPAY1
whileで配列の処理をしていて、 途中である条件が一致した場合、現在処理している変数が何番目の変数なのかを知り、変数に数値を格納したいのです。 どなたかご回答よろしくお願いします
940 :
あ ◆4WVJTVm. :02/09/15 11:51 ID:7pMxPAY1
ミス >現在処理している変数が何番目の変数なのかを知り、 ↓ >現在処理している配列が何番目なのかを知り、 すみません
>>938 わたしは初心者なのですが、ライブラリをインクルードするのはdoではできな
いと思うのですが、具体例を示していただけませんでしょうか。
>>939 配列の番号は$array[$i]の$iです
for $i (0 .. $#array) {
if ($array[$i] == 0) {
$array[$i] = $num;
print "$i番目の配列要素の値に$numを代入しますた\n";
}
}
>>941 require "hoge.pl";
となっているところを
do "hoge.pl";
と置き替えるだけです。
一応平気で動作しています。
>>942 if ($array[$i] == 0) { って??
$array[$i] = $num; って$numはどこからでてきたの?
それにそんなことしたら配列の内容書き換えてるんじゃ?
「聞く気になりません」って…何の理由もなしにrequireを使え、なんて事はないよ。 doは%INCをチェックしない。つまり、同じライブラリを何度も読んでしまう。 そうなると、サブルーチンの再定義など、いろいろ不都合が生じると。
>>943 さん、回答ありがとうございます。
やってみたらできました。私も識者の回答を待っています。
どなたかお願いします。
947 :
944 :02/09/15 12:17 ID:???
っつわけで、
for $i (0 .. $#array) {
if($array[$i] eq $arujouken){
$hensuu = $i
last;
}
}
かな?
>>939
949 :
944 :02/09/15 12:23 ID:???
950 :
942 :02/09/15 12:25 ID:???
>>947 じゃ、同じ質問を返そう
$arujoukenって??
$array[$i] = $i; って?
>>939 は数値を格納したいっていってるのよ
配列の番号を格納していなんて言ってないよ
951 :
944 :02/09/15 12:27 ID:???
>>950 わかりやすくしたつもりだが…<$arujouken
もちろんマッチングだとは思うので仮にこうしたまでだが。
$array[$i] = $i;
なんて書いてません。
952 :
942 :02/09/15 12:28 ID:???
>>949 こちらの回答がいちいち後手に回ってしまいスマソ
ここのところ質問者が質問しっぱなしが続いてるね
まさかネタじゃないだろうね
953 :
944 :02/09/15 12:31 ID:???
>>952 まだ質問されてから1時間も経ってないYO
住人でもなきゃすぐにレスなんてこないかと
954 :
938 :02/09/15 12:36 ID:???
>>945 そうなのですか。一応検索はかけていたのですが
そこまで説明しているとこは見つけられなかったもので。
説得されました。require使います。
>>946 だそうです。
955 :
あ@939 ◆4WVJTVm. :02/09/15 12:48 ID:s9DZ7/nK
あ です。
>>939 の質問に答えてくださったかたがた、ありがとうございました。
陰様で、いろんなかたがたの意見を参考に服用していって、さらに素晴らしいものが出来上がりました。
本当にありがとうございますた。
956 :
944 :02/09/15 12:57 ID:???
957 :
nobodyさん :02/09/15 13:48 ID:kinL8j5T
「aaaかbbb」が出てきたら順目を返す物をつくりたいんですが、 正しく動きません。何で? $xxx = index($yyy, "aaa"|"bbb");
>>957 質問に答える前に一つ聞きたいんだけど、どこでそういう構文を学んだの?
正直、凄く興味がある。
indexって位置を返すんじゃなかたっけ?
>>959 いや、それ以前にビットOR演算子が…。
論理OR演算子なら百歩譲ってああ誤解するのも頷けるけど、なぜビットOR演算子が…。
答えられないのか?
どっちか先に出現するほうの位置を晒せってことだろ?
>960 正規表現とごっちゃになってるとか。
965 :
nobodyさん :02/09/15 14:49 ID:kinL8j5T
>>965 ちがうんじゃない?
aaaかbbbが出てくるindexを全部出してちょってことじゃ?
こんなのどうかにゃ:
$yyy = "bbbabcdaaaefghbbbcdefaaa";
&search_index($yyy, "aaa");
&search_index($yyy, "bbb");
sub search_index {
my ($string, $substring) = @_;
my $index = $start = 0;
while($index = index($string, $substring, $start) + 1) {
last if $index < 0;
print $index - 1, "\n";
$start = $index + length($substring);
}
}
順目って用語あるの?
GyRCJSolXiUoJGkySyRAJEohKhsoQg
>>966 本人が言ってるのに「ちがうんじゃない?」とは、これ如何に!
誰か〜 次スレ立てて〜
970 :
3日目 :02/09/15 14:57 ID:AwUTEWn/
フォームを設けて、そこへあらかじめ文字を入れておきたい場合、 $temp="ここに<br>入力" print <<"HTML"; <textarea >$temp</textarea> とすると、 フォームのテキストエリアに ”ここに<br>入力”と表示され<br>が入ってしまう。 ”ここに 入力” とちゃんと改行させるにはどうすればいいの?
>>970 お前はHTMLからやり直せ
お前はHTMLからやり直せ
お前はHTMLからやり直せ
お前はHTMLからやり直せ
お前はHTMLからやり直せ
お前はHTMLからやり直せ
>>971 その為にID晒してんだろが! 注意力散漫さんはプログラミングやるには不向き
>>973 おまえにはネチケットに何もあったもんじゃないな
>>970 $temp =~ s/<br>/\n/ig;
977 :
3日目 :02/09/15 15:13 ID:AwUTEWn/
>>957 /aaa|bbb/;
$xxx=length $`;
オマエラミンナ ムダニアオリスギ
GyRCRnk5fEo0JEMkRiRJJCY7VyQmISkbKEI
981ゲト
982 :
nobodyさん :02/09/16 21:35 ID:PzkShHDm
あんま調子乗んなよ・・・ __ /_、_\ ( _ノ` ) ズキューン /⌒ /_ \ , :, ( ;y=ー( _ノ` )・∵: ; / と ̄ ̄_) / /\  ̄ / ̄\ ←◆3pIoOHKo _| ̄ ̄ \ / ヽ \_ \ ̄ ̄ ̄ ̄ ̄ ̄ \__) ||\ \ ||\|| ̄ ̄ ̄ ̄ ̄ ̄ ̄|| ̄ || || ̄ ̄ ̄ ̄ ̄ ̄ ̄|| .|| ||
983 :
perl初心者 :02/09/17 00:56 ID:i0fZtbTD
申し訳ありません。前スレに同じような質問があったらしいのですが、dat落ちしてまして……(T_T) TMPL_LOOPのネストって出来るのでしょうか? もし出来るとしたら、その方法は? テンプレではTMPL_LOOPをネスとさせておいて、単純に配列に配列を格納すればいいのでしょうか?
985 :
nobodyさん :02/09/17 01:23 ID:jlRQ/iYc
cookieについてです。 他のブラウザは大丈夫なのにMAC版のIEでのみcookieが書き込めないと言う 現象がおきて困っています。考えられる原因はなんでしょう? 手法としては通常通りHTMLヘッダの前にprint文でSet-Cooki:を出力しています。
1000!
987 :
nobodyさん :02/09/17 06:28 ID:yAKo74Fa
>>985 > 他のブラウザは大丈夫なのにMAC版のIEでのみcookieが書き込めないと言う
日本語の値をMacOSX用IE5.2のcookieに書き込む場合には、
Jcode.pmを利用して、UTF-16形式にエンコードする必要が
あるかもしれません。
988 :
nobodyさん :02/09/17 07:57 ID:PJt6wEZh
988ゲト
1000
コテハンは死ね! 1000
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。