Perl 初心者コーナー Part22
レス数が1000を超えています。これ以上書き込みはできません。
0001nobodyさん
03/04/15 10:15ID:???【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
1:自分はこう言う事がしたい。
2:それでこんな風にやってみたが・・・
3:それだとこんなエラーが出て上手く行かなかった。
最低でも1と3が無いと誰も答えられないよ。
良い回答は良い質問から。一緒に勉強しましょう。
CGIだけど、なんか質問ある? Part 10
http://pc2.2ch.net/test/read.cgi/php/1048686475/
参考書籍の話題は、【Perl,CGI】参考書籍 第三版
http://pc.2ch.net/test/read.cgi/php/1030209573/
その他の雑多な話題は、【CGIに依存しないPerlの話題一般/Part2】
http://pc.2ch.net/test/read.cgi/php/1030548610/
スクリプトの改造依頼は、【 スクリプト改造工房 PART 6 】
http://pc2.2ch.net/test/read.cgi/php/1047806915/
過去ログやお勧めサイトは >>2-10
0002nobodyさん
03/04/15 10:15ID:???Part1 http://tako.2ch.net/test/read.cgi?bbs=perl&key=957208980 参照不能
DAT: http://tako.2ch.net/perl/dat/957208980.dat
Part2 http://tako.2ch.net/test/read.cgi?bbs=perl&key=971817087 参照不能
DAT: http://tako.2ch.net/perl/dat/971817087.dat
Part3 http://tako.2ch.net/test/read.cgi?bbs=perl&key=979894521 参照不能
DAT: http://tako.2ch.net/perl/dat/979894521.dat
Part4 http://tako.2ch.net/test/read.cgi?bbs=perl&key=984430156 参照不能
DAT: http://tako.2ch.net/perl/dat/979894521.dat
Part5 http://pc.2ch.net/php/kako/988/988728069.html
Part6 http://pc.2ch.net/php/kako/996/996075607.html
Part7 http://pc.2ch.net/php/kako/1000/10002/1000267444.html
Part8 http://pc.2ch.net/php/kako/1003/10039/1003900311.html
Part9 http://pc.2ch.net/php/kako/1009/10095/1009549309.html
Part10 http://pc.2ch.net/php/kako/1014/10145/1014556702.html
Part11 http://pc.2ch.net/php/kako/1017/10172/1017201229.html
Part12 http://pc.2ch.net/php/kako/1019/10199/1019917048.html
Part13 http://pc.2ch.net/php/kako/1022/10227/1022731565.html
Part14 http://pc.2ch.net/php/kako/1026/10269/1026977659.html
Part15 http://pc.2ch.net/php/kako/1028/10288/1028816385.html
Part16 http://pc.2ch.net/php/kako/1032/10320/1032070299.html
part17 http://pc.2ch.net/php/kako/1034/10345/1034583844.html
part18 http://pc.2ch.net/php/kako/1037/10377/1037797479.html
part19 http://pc.2ch.net/php/kako/1042/10422/1042260745.html
part20 http://pc2.2ch.net/test/read.cgi/php/1044717887/ (タイトルに19と誤記)
[ひまぢん氏のミラー]
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さん
03/04/15 10:16ID:???・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メモ: http://www.din.or.jp/~ohzaki/perl.htm ★読んどけ
・Perl Recipes: http://www.effectiveperl.com/recipes/
・Randal's WebTechniques columns: http://www.stonehenge.com/merlyn/WebTechniques/
・Perlの部屋: http://www.cc.rim.or.jp/~midorin/mad-p/perl/index.html
・Perl初心者の部屋:http://www.harukaze.net/~mishima/perl/
・Perlリファレンス:http://www.big.or.jp/~mio/ga/pl/plref/pl_ref.htm
・Perlのページ:http://homepage1.nifty.com/nomenclator/perl/
0004nobodyさん
03/04/15 10:16ID:???・Perl News: http://www.news.perl.org/
・Perl Monks: http://www.perlmonks.org/
・use Perl; : http://use.perl.org/
・Learn Perl - Perl Education: http://www.devdaily.com/perl/edu/index.shtml
・Perldoc.com: http://www.perldoc.com/
・Using Perl5 in Web: http://docs.rinet.ru/Using_Perl5_in_Web/
・Rex Swain's Home Page: http://www.rexswain.com/
・Robert's Perl Tutorial: http://www.netcat.co.uk/rob/perl/win32perltut.html
・Perl Tuts: http://savage.net.au/Perl-tutorials.html
・Beginning Perl Tutorials: http://www.pageresource.com/cgirec/index2.htm
・jcode.pl の私的な解説書: http://www.mikeneko.ne.jp/~lab/kcode/jcode.html
・Logical Choice Software, Home Page: http://www.logsoft.com/perltips/
・Perlfect Solutions: http://perlfect.com/
・The Perl Archive : http://www.perlarchive.com/
・Perl6 & Parrot VM についての情報: http://dev.perl.org/perl6/
・use Object; : http://perl.infoware.ne.jp/
0005nobodyさん
03/04/15 10:36ID:???Perl 初心者コーナー Part21
http://pc2.2ch.net/test/read.cgi/php/1047980851/
0007nobodyさん
03/04/15 15:12ID:wdeZFKcAあの環境変数のスクリプト動きました。
どうやら仕様(?)変わったらしく、以前はcgi-binに入れなくてよかったんですが、
入れないといけなくなったらしいです。
それで、また質問なんですが、指定した環境変数だけ表示するにはどうすればいいんですか?
よろしくお願いします。
0008nobodyさん
03/04/15 15:18ID:???表示したい環境変数を指定する。
0009nobodyさん
03/04/15 16:02ID:F/iCEAMk私はサーバを借りてて、(Kagoyaのスタンダード40です)
サイトにPerlでランダムに文面を表示するスクリプトを設置してました。
20個くらいページがあって1ページにつき4つほどそのスクリプトを
設置してたところ、サーバに負荷がかかりすぎだと
サポートの人から注意されてしまいました。
Perlで書いたCGIを使うとそんなに負荷ってかかるもんなんでしょうか?
まあ1ページに4つも設置した私が一番馬鹿だとは思うのですが。
0010nobodyさん
03/04/15 16:10ID:???まーどんなスクリプトかしらんから答えようが無い。
一般的にはそれなりに負荷はかけるものだと思ったほうがいいよ。
# というかランダム文字列とかはサーバーサイドでやるよりクライアントサイドでやったほうがいいんじゃ?
0012nobodyさん
03/04/15 16:36ID:F/iCEAMkそうですか。私が設置してたのは携帯用サイトのランダムテキスト広告です。
長いので引用はやめときますが、こういう広告ってやっぱり
スクリプトの文章の長さによって負荷の大きさって違うんでしょうか?
今度から以下のようなランダム表示スクリプトを使おうかと思うんですが。
#!/usr/local/bin/perl5
$txtfile = "ranod,.txt";
open(FILE, "$txtfile");
chop(@lines = <FILE>);
close(FILE);
srand(time + $$);
$aaa = int(rand($#lines + 1));
print $lines[$aaa];
exit;
あと、クライアントサイドっていうのもあるんですね。
今の私にはさっぱりわかりませんが勉強しようっと。
0013nobodyさん
03/04/15 16:38ID:???0014nobodyさん
03/04/15 16:40ID:???吐き出すように、なおかつメモリを食い過ぎないようにするしかない。
0015nobodyさん
03/04/15 17:34ID:???Perlの話じゃなくなってるが、
そのスクリプトがSSIで埋め込まれてるとして…。
今時のサーバだとスクリプト自体の処理内容より、
プロセス立ち上げが大きな負荷になる。
だから1ページ表示する度に4つのプロセスが
立ち上がるような事をするより、ページ丸々CGIで
吐くようにした方がサーバには優しいと思う。
http://pc2.2ch.net/test/read.cgi/php/1048686475/
0016nobodyさん
03/04/15 17:41ID:???1つで4つ分の広告をまとめて吐くようにすればいいのに。
0017nobodyさん
03/04/15 17:50ID:???そっちのほうが負荷が大きいものだと思ってました。
調べてやってみたいと思います。ありがとうございましたー。
0018nobodyさん
03/04/15 18:25ID:0B+FeJbY・やりたいこと
24bitsカラーコードを、無作為に選んで並び替えたい。
・やってみたこと。
24bits分の配列を用意して、無作為に選び、別の配列へ代入させてみた。
my @src_colors=(0..16777215);
my @dist_colors;
foreach(0..16777215){
push(@dist_colors,splice(@src_colors,int(rand($#src_colors+1)),1));
}
・結果
Out of memoryとなる。
そもそも64MBytesもある配列を用意している時点でアウトなんだと思うのですが、ほかに良い方法が思い浮かびませんでした。
(外部ファイルを使って同じ方法を。と思ってみたのですが、こちらも「重複するカラーコードを排除する」という点で同じような配列を使ったためにOut of memoryとなってしまいました。)
そこで、別の方法論がありましたらご教授いただけるとありがたいです。
それではよろしくおねがいいたします。
0019Perl3級
03/04/15 18:40ID:bx4RfdeG最後の望みを託してエキスパートのみなさんにすがります。宜しくお願い
致します。
#/usr/local/bin/perl
@i = ( "AAA 100 80",
"BBB 500 500",
"AAA 400 420");
foreach $line (@i) {
split(/\s/, $line);
$key = $_[0];
$hash{$key} = $line;
print "$key $hash{$key}\n";
}
これを実行すると、
AAA => AAA 100 80
BBB => BBB 500 500
AAA => AAA 400 420
となります。あとは、AAA,BBBごとに右の数字を足していきたいのです。
簡単に言えば集計プログラムです。最終的に
AAA => AAA 500 500
BBB => BBB 500 500
となれば成功です。どんなにやってもわかりません。頭も痛くなって
きました。ぼくに秘伝を伝授して下さい。どうか、お願いします。
0020nobodyさん
03/04/15 18:43ID:???並べ替えできたとして何に利用するの?
九九の範囲内で足りるものを、それ以上の桁数で答を
用意しておいても無駄なだけでしょ
用途に対する根本的な設計がうまくないのでは?
0021通行人さん@無名タレント
03/04/15 19:14ID:???"BBB 500 500",
"AAA 400 420",
"AAA 120 150",
"BBB 30 420"
);
my %hash = ();
foreach my $line (@i) {
my @temp = split(/\s/, $line);
my $key = shift @temp;
if( exists $hash{ $key }){
$hash{ $key }->[ 0 ] += $temp[ 0 ];
$hash{ $key }->[ 1 ] += $temp[ 1 ];
} else {
$hash{$key} = [ @temp ];
}
}
foreach my $key(keys %hash){
print $key, $hash{$key}->[ 0 ],$hash{$key}->[ 1 ], "\n";
}
0022nobodyさん
03/04/15 19:23ID:???それから、my @tempで新しいメモリに置いてるのに、[ @temp ]は勿体ない。
0023nobodyさん
03/04/15 19:26ID:???0025nobodyさん
03/04/15 19:44ID:???この場合は暗黙の内に生成しちまっても問題ないと思うんだけど
駄目なんでしょうか。
@record = ("AAA 100 80", "BBB 500 500", "AAA 400 420");
my %sum;
foreach (@record) {
my($key, @value) = split /\s/;
for (my $i = 0; $i <= $#value; $i++) {
$sum{$key}->[$i] += $value[$i];
}
}
foreach my $key (sort keys %sum) {
print"$key => $key @{$sum{$key}}\n";
}
つか >>19 のコードは興味深いな。一つ勉強になったよ。
0026nobodyさん
03/04/15 21:17ID:???002725
03/04/15 22:13ID:???上のコードに use strict つけて @record を my 宣言して
走らせたけど、エラーになりませんでしたよ。
5.005_03 と 5.8.0 で確認。
リストリファレンスでないものを無理矢理リストとして
デリファレンスしたらエラーになるけど、代入時は
勝手にやってくれますよね?
use strict;
my $foo;
print @{$foo}; # ランタイムエラー
$foo->[2]{'bar'}[10] = 'baz';
print join '/', ($foo, $foo->[3], $foo->[2]{'bar'}, $foo->[2]{'bar'}[10]); # OK
0028nobodyさん
03/04/15 22:31ID:???0029nobodyさん
03/04/15 23:20ID:???例えば、あいうえおかきくけこ という文章の時、5文字目までを残して、
あいうえお までを表示させて最後に・・・を付けるというような形です。
あいうえおかきくけこ
↓
あいうえお・・・
みたいにする方法を教えてください。
0030nobodyさん
03/04/15 23:26ID:???どのような文字が入っているかによって変わる。
全て2バイト文字だと断言できるならsubstrでもできる。
1バイト文字と2バイト文字が混ざるなら、文字コードを読んで判断させなければならない。
0031nobodyさん
03/04/15 23:38ID:???早速お返事をありがとうございます。
ホームページの名前なので英語だったり日本語だったりしますので
下のにあたりますでしょうか?できればその方法を教えてください。
0032nobodyさん
03/04/15 23:43ID:???この辺参考にしる。
http://www.din.or.jp/~ohzaki/perl.htm#JP_Split
0033nobodyさん
03/04/16 00:01ID:???ありがとうございます。
URLのホームページを拝見したのですが難解でどこの事なのか分かりませんでした。
リンク集のログデータをトップページに表示させるためのデータをまとめるスクリプトを書いています。
どなたか方法を教えてください。お願いします。
0034nobodyさん
03/04/16 00:13ID:???クリックせずにコピペしてみろ。
ちゃんとどこを見るかまで教えてくれている。
それ以上は自分で考えれ。
0035nobodyさん
03/04/16 00:16ID:???「最初から全部教えてもらおうとしている」人には冷たい。
Perlのサポートセンターじゃないんだから。
回答側もボランティアだ。
よぉく>>1を読んでくれ。
>一緒に勉強しましょう。
勉強するのは教わる事じゃない。
考える事だ。
0036はしのえみ好きー
03/04/16 00:26ID:???>「最初から全部教えてもらおうとしている」人には冷たい。
このスレに限ったことじゃないよね。
後者に優しいのは宿題任せろスレぐらいだ。
0037nobodyさん
03/04/16 00:27ID:???substrの方法はわかりましたが、
1バイト文字と2バイト文字が混ざると駄目なようで。
この方法をどうか教えてください。
0039nobodyさん
03/04/16 00:28ID:g3p2EJXOウソだけど、はしのえみのヌード持ってるぞ
0041nobodyさん
03/04/16 00:35ID:???>32のリンク先になにがあった?
文字単位に分割できれば、そこで文字数を数える事はできるよな?
そうしたら、最初5文字だけ残して、その後ろを消して置き換え。
あとは自分でやってくれ。
0042nobodyさん
03/04/16 00:51ID:???その部分は既にsubstrを教えて頂いたのできてます。
004339
03/04/16 00:54ID:g3p2EJXO最初にウソだけどって書いたのに・・・・・・
ウンコーーーーーー
0044Perl3級
03/04/16 00:55ID:Zmk9zNa+みなさん。ありがとうございました。
お陰さまで無事プログラムか完成しました(涙
ありがとう、ほんとうにありがとう(涙
0045nobodyさん
03/04/16 00:56ID:???0046nobodyさん
03/04/16 01:09ID:???$title = mb_strimwidth("$title",0,10,"...");
0048nobodyさん
03/04/16 01:44ID:???これは何でしょうか?試してみましたが動きませんでした。
現状はsubstrで・・・に変換する事が出来ましたが、
substrが、1バイトづつで指定していますので、
1バイト文字と2バイト文字の組合せでは場合によって、
文字化けが発生しまいます。先ほどホームページを教えて頂いたのですが、
今の私の力では読み取る力がありませんでした。
思考錯誤してみます。お騒がせして申し訳ありませんでした。
0050nobodyさん
03/04/16 02:26ID:+e/kztES>>20
例えが良く判りませんでした。すみません。
005150=18
03/04/16 02:27ID:???0052chuu
03/04/16 11:42ID:???$username = "hoge";
if (-e "~$username") {・・・
とやっても、hogeというユーザが存在するにもかかわらずfalseになります。
チルダを使わずフルパスで指定すれば当然うまくいくわけですが、
ユーザ名からホームへのフルパスを得るようなことはできますか?
/etc/passwdを開いて検索しなければならないのでしょうか・・・
よろしくお願いいたします。
0053はしのえみ好きー
03/04/16 11:45ID:???/home/$username でイーンジャネーノ?
0054はしのえみ好きー
03/04/16 11:48ID:???0055chuu
03/04/16 12:04ID:???変な環境でして、/home/*で統一されているわけではないんです。
passwdファイル検索の方向で試してみます。
ありがとうございました。
/etc/passwd用組み込み関数があるよ。
perldoc -f getpwent
perldoc User::pwent
およびgetpwent(3) man pageを参照のこと。
0058nobodyさん
03/04/16 13:20ID:fv/dMt9bppm>install HTTP-Lite と打ち込んだのですが、
Error installing package 'HTTP-Lite': Could not locate a PPM binary of 'HTTP-Lit
e' for this platform
となってエラーになってしまいます。
検索はしてみましたが、さっぱり見当違いなものしか検索できませんでした。
どうかどうすればインストールできるか、ご教授お願いします。
0059nobodyさん
03/04/16 16:28ID:???Packages available from http://ppm.ActiveState.com/cgibin/PPM/ppmserver.pl?urn:/
PPMServer:
HTTP-Lite [2.1.1] Lightweight HTTP implementation
PPM>
あるけど
setでパス通ってるか見てみ
0060nobodyさん
03/04/16 17:56ID:???レンタルサーバーに置いて2ch書き込むのに使ってる人いる?
0061nobodyさん
03/04/16 19:20ID:???006258
03/04/16 19:20ID:???0063nobodyさん
03/04/16 22:53ID:NR7Y4aEIそういういじめか・・・
でもまじでヌードは見たいがな、俺も。
あいつは何かむらっとくるもんがあるあいつはもう30なのに・・・・・
写真集出せ
0064nobodyさん
03/04/17 00:24ID:qoz0Pxr2それとも何かコンパイラみたいので.cgiに変えるとかなんですか?
お願いします教えてください。
あとそのうち作ったcgiを配布してみたいと考えているのですが、そのときも拡張子が.cgiのほうが良いのですか?
0065nobodyさん
03/04/17 00:33ID:???.plで動けば.plでいいじゃない?
0066はしのえみ好きー
03/04/17 00:34ID:???漏れ年上でかつ可愛い人が好き。はしのえみは理想だな。
>>64
スレ違い。ここははしのえみについて語るスレです。
Webサーバの設定で、拡張子".cgi"というファイルのリクエストを受けるとそれ用に処理するようになってる。
だから、設定によっては".pl"でもOKな時もある。
どっちにしろ".cgi"にしておけば安心。ファイル名を変えるだけでOKよ。
0067nobodyさん
03/04/17 00:36ID:???0068nobodyさん
03/04/17 00:38ID:???0069nobodyさん
03/04/17 00:55ID:???型グロ部ってイマイチ何かよくわかりません。
とあるCGIをDLして、それを解読中なのだが、
たとえば、
*option_pnt = $_[0];
*config_pnt = $_[1];
$ctl_sock = $config_pnt{"ctl_sock"};
$before = $option_pnt{"before"};
$after = $option_pnt{"after" };
$path = $option_pnt{"path" };
&jcode'convert(*before,"sjis");
&jcode'convert(*after ,"sjis");
&jcode'convert(*path ,"sjis");
のような部分があるのですが、
漏れ敵には、文脈に応じて柔軟に型を識別してくれるもの
くらいの認識なのですが、いまいちシックリきません。
どんなときに型グロ部使うと激ウマーなのか、どなたかご教授ください。
0070nobodyさん
03/04/17 00:59ID:qoz0Pxr2いやてっきりPerlプログラムをコンパイルしているのかと思っていたから。
サンクスみんな
ついでにいうと63=64=俺や。
どうでもいいがな。
オマエがすれ違いやで。
0071nobodyさん
03/04/17 01:02ID:???圧縮しないときはtxtにしてるところが多いね。
cgiだと多くの場合、実行されちゃうから。
0072nobodyさん
03/04/17 01:07ID:???CGIの話はCGIスレに。
0073nobodyさん
03/04/17 01:07ID:qoz0Pxr2そうなんすか。ありがとう
助かった。俺の勘違いだったらしいすべてがね。
まじありがとうさようなら
0075nobodyさん
03/04/17 03:15ID:???型グロブを理解したかったらシンボルテーブルの勉強。
http://www.kt.rim.or.jp/~kbk/perl5.doc/perlmod.html
標準モジュールの Symbol.pm や、IO::なんちゃらってのも
参考になるよ。
まぁ Perl4 と違い、リファレンスが使える Perl5 では
型グロブを使っておいしい場面って減った。強いて挙げるなら
サブルーチンにデカいデータを渡す時ぐらいかな。
my %orig_hash = qw(...); # デカいハッシュ
my @orig_array = qw(...); # デカいリスト
hoge(\%orig_hash, \@orig_array);
sub hoge {
no strict 'vars';
local(*hash, *array) = @_;
# %orig_hash を直接書き換える
# デリファレンスしなくて済むので高速
$hash{$_} = uc $hash{$_} for @array;
}
0076nobodyさん
03/04/17 06:45ID:???print "Content-type: text/html\n\n" if(select == *STDOUT);
0077nobodyさん
03/04/17 07:29ID:???*PI = \3.14159265358979;
最適化出来ないらしいんだけどね
0078山崎渉
03/04/17 11:58ID:???0080nobodyさん
03/04/17 18:22ID:???.plファイルで中身をpackage abc;として、&abc::abc; と呼び込むのと
.cgiにして require'./aaa.cgi';して &abc; と呼び込むのでは
どちらがよいのでしょうか?
何か違いがあるのでしょうか?
0081nobodyさん
03/04/17 18:43ID:???requireするなら、拡張子は関係ないが……
.plファイルだって、packageせずmainパッケージに読み込めば後者のように使えるし。
0082nobodyさん
03/04/18 00:39ID:fDlmNlyHありがとう。勉強してみます。
008329
03/04/18 00:58ID:???動かない動かないと色々試行錯誤してやっと意味がわかりました。
PHPで書いたらあっさり出来ました。
他にも色々便利なコマンドが山ほどあるので使って行こうと思います。
0084nobodyさん
03/04/18 11:25ID:5L+C97mW$x ~= s/abc(.*)xyz/`hoge $1`/g
の`hoge $1` って動的に展開してくれるんですか?
それとも、はじめに展開してそれっきりですか?
誰か教えて!!!
008684
03/04/18 12:07ID:???分かりずらくて御免なさい。
つまり、マッチした時点で、`hoge $1` を展開してくれるのか、
命令文を解釈するときに、`hoge $1` を展開しちゃうのか、どっちかなぁ?
と思って。
008784
03/04/18 12:10ID:???~= は、=~ の間違いです。
008984
03/04/18 12:28ID:???あ、そうか。
すいません、色々やってみたら、そもそも置換文字列は、コマンド展開されない
んですね。
はぁ〜。面倒になる予感。
0092nobodyさん
03/04/18 15:15ID:???PHPのnl2br(改行を<br>に置換)を自作しようとして、
sub nl2br{
my ($letter) = $_[0];
$letter =~ s/\r\n/<br>/g;
$letter =~ s/\r/<br>/g;
$letter =~ s/\n/<br>/g;
return $letter;
}
を作ったのですが、
これだと、
print nl2br($sentence); としても動かず、
$sentence = &nl2br($sentence);
print $sentence;
としないと動きません。これを、前者のようにするには、関数をどうつくればいいのでしょう?
0096nobodyさん
03/04/18 17:54ID:???0097nobodyさん
03/04/18 19:57ID:???jcode::convert(\$buffer, 'euc'); とするのと
&jcode'convert(\$buffer, 'euc'); とするのでは
どう違うのでしょうか?
0098nobodyさん
03/04/18 20:42ID:???grep( /^$hoge$/, @hage );
@hageの中に'+1'つー文字列があったとして
$hogeが'+1'つー文字列だと、マッチしません。
$hogeを'1'にしてやればマッチします。
これを変な小細工しないで、文字列としてマッチさせる方法はないでしょうか?
0099nobodyさん
03/04/18 21:00ID:???で駄目か?
0100nobodyさん
03/04/18 21:17ID:???Perl4の頃はリファレンスが無かったので型グロブで代用してた。
また、パッケージデリミタには ' が使われていた。サブルーチン
を呼び出す際には & が必ず必要だった。なので
&jcode'convert(*buffer, 'euc');
という書き方をしていた。
Perl5では互換性の為に上記の文法を許容するけど、推奨される
今風の書き方は
jcode::convert(\$buffer, 'euc');
になる。更に言うなら jcode.pl よりは Jcode.pm を、Jcode.pm
よりは Perl 5.8.0 から標準になった Encode モジュールを
使った方がいい。
0102nobodyさん
03/04/19 01:55ID:???どこかで記憶が変わってしまってました。
激しく鬱だ。。
0103102
03/04/19 02:00ID:???すみませんでした。
0104102
03/04/19 02:07ID:???http://pc.2ch.net/php/kako/1019/10195/1019561283.html
↑の551番さんが550番さんに書いた事でした。
お騒がせしました。
0106nobodyさん
03/04/19 05:26ID:uaYurtrRにアクセスすると、
http://www.foo.com/cgi-bin/index.cgi
にアクセスした場合と全く同じ表示になるようにしたいのですが、
どうするのが得策なのでしょうか?
(要は、PHPでいうところの fopen("http://www.foo.com/cgi-bin/index.cgi") がやりたい)
0108106
03/04/19 12:37ID:EJZQKwDzあれ、Perlの話のつもりだったんだけど、そーでなかった?
とりあえず他スレ逝ってきます
0110nobodyさん
03/04/19 13:16ID:eaFpa2kJhttp://www.google.com/search?q=2%E3%83%81%E3%83%A3%E3%83%B3%E3%83%8D%E3%83%AB&ie=UTF-8&oe=UTF-8
なら、
=〜 tr/+/ /;
=〜 s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
でデコードできるですが、Googleで
http://search.yahoo.co.jp/bin/search?p=2%A5%C1%A5%E3%A5%F3%A5%CD%A5%EB
の場合は、どうすればよいのでしょうか?
どなたかご教授下さいm(_ _)m。
0111nobodyさん
03/04/19 13:17ID:???Perl的に言うなら、index.cgiの中身をhoge.plに移して、各index.cgiから
hoge.plをrequireするとか。
0112110
03/04/19 13:17ID:eaFpa2kJ0114nobodyさん
03/04/19 13:18ID:???【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
1:自分はこう言う事がしたい。
2:それでこんな風にやってみたが・・・
3:それだとこんなエラーが出て上手く行かなかった。
最低でも1と3が無いと誰も答えられないよ。
良い回答は良い質問から。一緒に勉強しましょう。
0115110
03/04/19 13:31ID:eaFpa2kJ早速のレス、ありがとうございます。
Unicodeの文字列をデコードするために参考になる
ページ等ありますでしょうか?
よろしくお願いします。
0116nobodyさん
03/04/19 14:16ID:???教えてもらったんだろ、
後はてめえで探せよノータリン!
0117117?
03/04/19 14:31ID:W+zt+CQTここに書いてあるとおりにcgiを設定しても動かないんですが
記述とか間違ってませんか? 詳しい人おしえて下さい。
0118nobodyさん
03/04/19 14:32ID:???ノータリンとノーリターン
http://www.google.com/search?num=100&hl=ja&ie=UTF-8&oe=UTF-8&c2coff=1&as_qdr=all&q=perl+Unicode%E3%81%AE%E6%96%87%E5%AD%97%E5%88%97+%E3%83%87%E3%82%B3%E3%83%BC%E3%83%89&lr=
0119115
03/04/19 15:04ID:JU0nnBeKどうもご親切にありがとうございました!
あちこち辿ってみます。
0121117
03/04/19 15:45ID:W+zt+CQT<FORM ACTION="http://hoge.ne.jp/jump.cgi">
<SELECT NAME="jumpto">
<OPTION VALUE="-" SELECTED>移動先を選択</OPTION>
<OPTION VALUE="http://www.yahoo.co.jp">yahoo</OPTION>
<OPTION VALUE="http://www.google.co.jp/">google</OPTION>
<OPTION VALUE="http://www.2ch.net/">2ch</OPTION>
</SELECT>
<INPUT TYPE="submit" VALUE="移動">
</FORM>
このように書いても動作してくれないのですが
何がいけないのでしょうか?cgi自体は問題なく
動いてるようです
0122nobodyさん
03/04/19 15:50ID:???そのCGIは一行目から間違ってるぞ
0124117
03/04/19 15:57ID:DRRtSmLAとくに問題はないと思うのですが
プルダウンメニューを携帯で使いたくて
cgiを探してやっとで見つけたのがこれなのですが
動作しないんです(>_<)
0125117
03/04/19 16:11ID:DRRtSmLA0126nobodyさん
03/04/19 16:11ID:???($name, $value) = split(/=/, $pair);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack('H2',$1)/eg;
if( $name eq "jumpto" ) {
$jumpto = $value;# 移動先
}
}
0127nobodyさん
03/04/19 16:12ID:???0128nobodyさん
03/04/19 16:15ID:SET3u/9L0129117
03/04/19 16:23ID:DRRtSmLAhttp://www.pp.iij4u.or.jp/~re-com6/0419/062-1.zip
http://www.rr.iij4u.or.jp/~co-com3/0419/062-2.zip
http://www.rr.iij4u.or.jp/~co-com3/0419/062-3.zip
http://www.rr.iij4u.or.jp/~co-com3/0419/062-4.zip
http://www.rr.iij4u.or.jp/~co-com3/0419/062-5.zip
田丸愛
http://www.hh.iij4u.or.jp/~re-com3/0418/061-1.zip
>>126さん
出来ないよ。。。
0130nobodyさん
03/04/19 16:24ID:???foreachの中に2行追加するんだぞ?
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack('H2',$1)/eg;
0131nobodyさん
03/04/19 16:29ID:???MPEGにしる!
0132117
03/04/19 16:32ID:???http://www.hh.iij4u.or.jp/~re-com3/0418/061-1.zip
http://www.hh.iij4u.or.jp/~re-com3/0418/061-2.zip
http://www.hh.iij4u.or.jp/~re-com3/0418/061-3.zip
上原里香
http://www.dd.iij4u.or.jp/~co-com4/0416/059-1.zip
http://www.hh.iij4u.or.jp/~co-com5/0416/059-2.zip
http://www.rr.iij4u.or.jp/~co-com6/0416/059-3.zip
もうダメぽ・・・ 意味不明、俺の就業時間もあとわずか、、、
今日は何もしてないや・・
0133nobodyさん
03/04/19 16:36ID:???いいなあ就職できて。
0134nobodyさん
03/04/19 17:05ID:???0137nobodyさん
03/04/19 21:51ID:???0138nobodyさん
03/04/19 23:43ID:???0139nobodyさん
03/04/20 00:07ID:???どう答えればいいんだ?
どこかのスクリプト落としてきてソースを見てください
ってとこか
0140nobodyさん
03/04/20 01:04ID:RhiZ2LD4>どう答えればいいんだ?
136参照
0142nobodyさん
03/04/20 01:14ID:???0143nobodyさん
03/04/20 01:21ID:???0144nobodyさん
03/04/20 01:30ID:???Perl初心者を大切にしようよ。
0145nobodyさん
03/04/20 01:34ID:???0146nobodyさん
03/04/20 01:39ID:???0147nobodyさん
03/04/20 01:42ID:???0148nobodyさん
03/04/20 01:51ID:???Perl初心者を大切にしようよ。
0149nobodyさん
03/04/20 01:58ID:???0151nobodyさん
03/04/20 02:33ID:???まず掲示板のフォームからCGIに画像ファイルを送るね。
そしたらCGIに画像ファイルが到着するとその画像を扱う処理をします、
(その処理はCGI_Lite.pm等を介して画像ファイルの名前やら大きさやら保存場所やら・・・ね。)
それで保存できてるから画像を表示するのであれば
保存したルート指定すれば表示されるわけですよ。
簡単な説明だけど理解してよ。もう来ないから。
やっぱPHPのほうが楽だな。
0152nobodyさん
03/04/20 02:41ID:???【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
1:自分はこう言う事がしたい。
2:それでこんな風にやってみたが・・・
3:それだとこんなエラーが出て上手く行かなかった。
最低でも1と3が無いと誰も答えられないよ。
良い回答は良い質問から。一緒に勉強しましょう。
0153nobodyさん
03/04/20 02:41ID:???ここはコーディングの初心者を相手にするスレだ。
0154nobodyさん
03/04/20 02:42ID:???0156nobodyさん
03/04/20 03:13ID:???0157nobodyさん
03/04/20 03:30ID:???ニヤニヤ(・∀・)
0158nobodyさん
03/04/20 03:34ID:???>まず掲示板のフォームからCGIに画像ファイルを送るね。
それをどうやってPerlで実現するんですか?初心者なので分かりません。
>そしたらCGIに画像ファイルが到着するとその画像を扱う処理をします、
>(その処理はCGI_Lite.pm等を介して画像ファイルの名前やら大きさやら保存場所やら・・・ね。)
CGI_Lite.pmって何ですか?
保存場所とは?マイドキュメントでいいんですか?
>>151
すみませんがもっと簡単に説明してもらえませんか?初心者なので・・・
>>142,>>144,>>148さんでもいいです。
0160nobodyさん
03/04/20 03:47ID:???そろそろ放置して寝るか。
0163nobodyさん
03/04/20 04:46ID:???放置プレーべ
0164山崎渉
03/04/20 05:57ID:???( ^^ )< ぬるぽ(^^)
0165nobodyさん
03/04/20 06:47ID:???詳細表示で10項目全部表示することとし、概略表示で行の始めから5項目ずつを表示したいと考えてます。
詳細表示と概略表示ではそれぞれ別のスクリプトで実行します。
この概略表示でデータを読み込む際、30項目全部を配列にセットするのではなく、始めから5項目ずつだけを配列にセットするほうが負荷がかからないのかな?って思ったんですが、始めから5項目ずつだけを配列にセットする方法が思いつきません。
正規表現かな?と思うのですが、それよりも前に進むことが出来ません。
何卒こんな私に良い知恵を御授けくださいませ。
それと、こういうことは負荷軽減に意味があるのかないのかもあわせてお答え願えれば幸いです。
ちなみに現状は以下で読み込んでます。
open(IN,"$Datafile")
while (<IN>){
chomp;
if(!$_){next;}
@data = split(/,/);
}
close(IN);
0166nobodyさん
03/04/20 07:07ID:???split の第3引数。
(@data, undef) = split /,/, $_, 6;
余計な分割をしない分 CPU 負荷は減るし、
配列に余計なデータを入れない分、使用メモリも減る。
行数によっては微々たる差だけど、こういう細かい
節約に気を使うのはいい事だよ。
0167165
03/04/20 07:07ID:???2行目:
誤 詳細表示で10項目
正 詳細表示で30項目
5,6行目:
誤 始めから5項目
正 各行の始めから5項目
寝てないから苦しい。
0168はしのえみ好きー
03/04/20 07:08ID:???なら @data = (split(/,/))[0..4]; とか。
0171nobodyさん
03/04/20 07:13ID:???>>165
http://flex.ee.uec.ac.jp/texi/perl/perl_56.html
0174nobodyさん
03/04/20 13:56ID:jyoFgOQ4と、
while($count < 1000000){ $dat[$count] = $count++; }
後者の方が目盛り消費量が倍ほど違うのはなぜ?
0178nobodyさん
03/04/20 15:08ID:???0179nobodyさん
03/04/20 15:21ID:???タスクマネージャーとかじゃね?
0180nobodyさん
03/04/20 18:39ID:???ってどういうエラー?
0181nobodyさん
03/04/20 18:41ID:???辞書(英和辞典)をひけばわかりそうなものだが。
0183nobodyさん
03/04/20 20:14ID:Nmb8JQyi123 → 0000123
のように、
ある数字を、7桁の文字にするにはどうすればいいのでしょうか?
0184nobodyさん
03/04/20 20:21ID:???0185nobodyさん
03/04/20 20:22ID:???sprintf
0188nobodyさん
03/04/20 21:38ID:???x_acdef.cgi にはマッチしない
abcdef.cgi にはマッチする
aacdef.csv にはマッチしない
x_aaad.csv にはマッチしない
xabcdef.cgi にはマッチする
0189nobodyさん
03/04/20 21:42ID:???0190金正日
03/04/20 21:44ID:???,rn
r「l l h. / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| 、. !j |
ゝ .f _ |
| | ,r'⌒ ⌒ヽ、. │ http://www.freeweb2.kakiko.com/saitama/
,」 L_ f ,,r' ̄ ̄ヾ. ヽ. │ こんなのあったニダ
ヾー‐' | ゞ‐=H:=‐fー)r、) |
| じ、 ゙iー'・・ー' i.トソ |
\ \. l ; r==i; ,; |' .人_
\ ノリ^ー->==__,..-‐ヘ___
\ ノ ハヽ |_/oヽ__/ /\
\ / / / |.
y' /o O ,l |
0192nobodyさん
03/04/20 22:02ID:???0193nobodyさん
03/04/20 22:04ID:???$a = 'xabcde.cgi';
if($a =~ /^[^x_].*\.cgi$/){
print 'マッチしました';
}else{
print 'だめ';
}
これで「だめ」と表示されたので、失敗。
0194184==189
03/04/20 22:06ID:???0195nobodyさん
03/04/20 22:07ID:???0196nobodyさん
03/04/20 22:09ID:???if($a =~ /^[^x][^_].*\.cgi$/){
print 'マッチしました';
}else{
print 'だめ';
}
だめと表示された。やっぱ無理なのか。
すまんかった。
0197192=195
03/04/20 22:14ID:???調子に乗って答えてしまいますた。
ムズイネ・・・
0198nobodyさん
03/04/20 22:47ID:???0199nobodyさん
03/04/20 23:00ID:???0201nobodyさん
03/04/20 23:03ID:???0202nobodyさん
03/04/20 23:04ID:???5.2以降、基本的な構造とか変わりまつたか?
ライブラリ周りとか、参照とかハッシュ(連想配列だっけか?)とか・・・
0203nobodyさん
03/04/20 23:08ID:???0207nobodyさん
03/04/21 00:53ID:dkK8VA+7何処に行けば無料レンタルできますか?
0209_
03/04/21 01:37ID:???http://www.freeweb2.kakiko.com/tama/moe/hankaku06.html
http://freeweb2.kakiko.com/tama/moe/hankaku05.html
http://www.freeweb2.kakiko.com/tama/moe/hankaku04.html
http://freeweb2.kakiko.com/tama/moe/hankaku03.html
http://www.freeweb2.kakiko.com/tama/moe/hankaku08.html
http://freeweb2.kakiko.com/tama/moe/hankaku07.html
http://www.freeweb2.kakiko.com/tama/moe/hankaku01.html
http://freeweb2.kakiko.com/tama/moe/hankaku02.html
http://www.freeweb2.kakiko.com/tama/moe/hankaku10.html
http://freeweb2.kakiko.com/tama/moe/hankaku09.html
0210nobodyさん
03/04/21 01:59ID:qjNDcweN説明が間抜けでスマソ 再度朝鮮。
@dat = ();
foreach $count (0..1000000) { $dat[$count] = $count; }
と、
$count = 0;
@dat = ();
while($count < 1000000){ $dat[$count] = $count++; }
前者では、配列が 32bits整数 * 約1MB = 4MB となるのでその分のメモリを使用しているということをモニタで納得できたのですが、
後者の方では、2 倍の 8MB 程使用しているようなのです。
この場合なぜ後者は 2 倍のメモリを使用するのでしょうか?
環境はVineLinux2.6(kernel 2.4.20-0vl29.1)
Perl 5.6.1 です。
0211nobodyさん
03/04/21 17:48ID:kls4aijiabが存在するかつcdが存在するかつefが存在しないかつghが存在しない
という条件を書きたいとき
論理積などを使わず正規表現一発で現すにはどうしたらいいでしょう。
というかperlっぽい書き方はどんな感じなんでしょう。教えてください。
0216nobodyさん
03/04/21 18:25ID:???ここは初心者に慣習さえ教えるのも嫌な
臭いスレなのでこっちに行け
http://pc2.2ch.net/test/read.cgi/tech/1048519394/l50
0218nobodyさん
03/04/21 19:08ID:???0221nobodyさん
03/04/21 20:59ID:???0222221
03/04/21 21:08ID:???0223nobodyさん
03/04/21 21:47ID:???スレ違いでもないんじゃないの?
少なくともコーディングに関する質問だし。
CGIのエラーの原因を聞いてくる馬鹿よりはマシだよ。
0224nobodyさん
03/04/21 21:57ID:???0226nobodyさん
03/04/21 23:20ID:VRXCXV3jもうまくいきません。例題は以下のとおり。
【例題】
<DT><A HREF="http://www.yahoo.co.jp/">Yahoo! JAPAN</A>
<DT><A HREF="http://mailcity.lycos.co.jp/">MailCity へようこそ!</A>
<DT><A HREF="http://www.google.com/">Google</A>
<DT><A HREF="http://www.infoseek.co.jp/">インフォシーク</A>
以上のHTMLタグからURLとタイトルのみ抜き出しなさい。
【答え】
if (/<DT><a href=\"(.*?)\">(.*?)</a>/) {
$i = join (",", ($1, $2));
$i .= "\n";
push (@i, $i);
}
<DT>の一行が</A>で改行されていればこれでうまく行きますが、まったく改行されて
いない場合はそうも行きません。
if (/(<DT><a href=\"(.*?)\">(.*?)</a>)+/)
や
if (/(<DT><a href=\"(.*?)\">(.*?)</a>){0,}/)
など、いろいろ試しているのですが、どうもうまく行きません。
一行の中のパターン化された文字列のなかから、特定の文字列を複数抜き出す場合はどうすればいいので
しょうか?
よろしくお願いします。
0227226
03/04/21 23:22ID:VRXCXV3jperl内のHTMLは全て大文字にして読みかえて下さい。
0228nobodyさん
03/04/21 23:34ID:FAJq1ej9/<a href=\"(.*?)\">(.*?)</a>/i
難しくしなくてもこれでいいんじゃないの?
大文字小文字どちらもokだし。
0229226
03/04/21 23:54ID:UkhLM6bFいえ、そうではないのです。
私が訊きたかったのは、
>>226で示したとおり、<DT>から</A>までを一行として改行されているのではなく、
まったく改行されていない場合のURLとタイトルの抜き出し方を知りたかった
のです。
0230nobodyさん
03/04/21 23:55ID:mc4GwSLKwhile (/<a href=\"(.*?)\">(.*?)<\/a>/ig) {push (@i,"$1,$2\n")}
0232226
03/04/22 00:11ID:yfHpFKfLできました!
うわーい!うわーい!
ありがとうございます!
「もし<DT>...</A>に当てはまるなら」という具合で、ずっとif文に縛られて
いました・・・。すみません。でも勉強になりました!
ああ、我知らず、熱い涙が押し出されてきよる・・・(滂沱の涙)。
>>231
最初はブラウザのブックマークからURLとタイトルを抜き出すという課題を自
分に課したのです。それがうまくいって一息ついたときに、「こうするとど
うなるんだろう?」と思い付いてしまったのでした。
ゆるせよ(遠山の金さん)。
0233nobodyさん
03/04/22 01:59ID:8UmhU43Lどうすれば良いですか?
0235nobodyさん
03/04/22 04:41ID:Jj2tlT0c$rootdir = "\\newfolder";
$workdir = "\\newfolder";
if ($rootdir == $workdir) {
print "OK\n"; # 表示されます
}
if ($workdir !~ m#$rootdir#i) {
print "NG\n"; # 表示されます・・・
}
これはなぜ NG が表示されるのでしょうか?
環境は、PERL 5.6.1 を Win2000 のコマンドプロンプトで動かしています。
よろしくおねがいします。
0236nobodyさん
03/04/22 06:26ID:???# 「\newfolder」という文字列
$rootdir = "\\newfolder";
$workdir = "\\newfolder";
# 正規表現は /\newfolder/ =「[改行]ewfolder」
# 「\newfolder」という文字列は「[改行]ewfolder」にマッチしない。
if ($workdir !~ /$rootdir/) { print "NG\n" }
# 本当に改行になってしまっているか確認
$workdir = "\n" . 'ewfolder';
if ($workdir =~ /$rootdir/) { print "OK\n" }
# 対策1
$workdir = "\\newfolder";
if ($workdir =~ /\Q$rootdir\E/) { print "OK\n" }
# 対策2
$rootdir = quotemeta($rootdir);
if ($workdir =~ /$rootdir/) { print "OK\n" }
0237nobodyさん
03/04/22 07:25ID:???$rootdir = "\\newfolder";
print ">$rootdir<\n";
結果
>\newfolder<(改行)
なぜここでは $rootdir の先頭の \n が改行に展開されないのでしょうか?
と、もう一つ質問を書いたら多分分かりました。正規表現じゃないからですね
どうもありがとうございました
うーんややこしい・・・
0239nobodyさん
03/04/22 12:15ID:???ある書式にフォーマットして出力したいんですけど
なぜかエラー500がでます。
何か一般的な原因があれば教えて
0245nobodyさん
03/04/23 00:26ID:???作成しようと思ったのだが、全くの初心者のため
paerl自体の実行が失敗している。
誰かなんとかしてくれ。
0246nobodyさん
03/04/23 00:27ID:???qq/ / => 変数展開とエスケープされた文字の復活を同時に行う
正規表現担当の部分は、エスケープされた文字を元に戻してから処理する。
$pattern = '\\n_hoge';
($pattern は \n_hoge)
print "$pattern\n";
print "match!\n" if $pattern =~ /^$pattern$/;
正規表現中と、ダブルクオートの中身は、展開の仕方が違うということ。
0247nobodyさん
03/04/23 00:33ID:???cgiのパスワードの逆変換って、できるんですかー?
スクリプトはあります。変換後のワードもあります。
おねがいします。
0248nobodyさん
03/04/23 00:35ID:???0250nobodyさん
03/04/23 00:39ID:???crypt関数のdecrypt基本的に無理
仕様的には、Desはdecrypt出来るんだがperlでは出来な威実装をしてある。
あと、MD5は絶対できないといった感じ
0254nobodyさん
03/04/23 00:49ID:???元に戻す方法ある?
0257247
03/04/23 00:51ID:???まともに答えてくれたからサンクス。
13金・・・古!!!
0258nobodyさん
03/04/23 00:57ID:???0262nobodyさん
03/04/23 07:06ID:???方法がさっぱりわかりません。
ヒントでいいんでわかりやすく教えてください。
お願いいたします。
0263nobodyさん
03/04/23 07:40ID:???ttp://member.nifty.ne.jp/hippo2000/perltips/LWP.html#An_Example
0264nobodyさん
03/04/23 08:58ID:???0268nobodyさん
03/04/23 16:32ID:???今、Perlのコメント部分を削除するスクリプトを組んでるんですが、
#から始まる文字を削る事はできるのですが、
$#演算子まで削られてしまいます。
$len =~ s/((\$#)*.*)#.*$/$1/g;
・・・と、こんな事もしてみたのですが、ダメでした・・・
どんな風に表現すれば、$#を削らずに行けるでしょうか?
よろしくお願いします。
0269nobodyさん
03/04/23 17:12ID:???while(<PERLFILE>){
if($_ =~ /^#/){ $_ = ''; }
#出力処理
}
じゃ駄目ですか?
0270nobodyさん
03/04/23 17:14ID:???$len = <<'EOL';
my @array = ('a' ,'b', 'c'); # コメント1
print STDOUT @array if $#array > 1; # コメント2
# push(@array, 'ぬるぽ');
EOL
$len =~ s/(?<!\$)#.*//gm;
print STDOUT $len;
# ----出力結果----
my @array = ('a' ,'b', 'c');
print STDOUT @array if $#array > 1;
# ----出力結果----
0272nobodyさん
03/04/23 17:43ID:???>>270
>>271
お答えいただきありがとうございます。
正常に動くようになりました・・・が、
(?<・・・)←これってなんですか???
(?=・・・) とか (?!・・・) とかなら分かるのですが・・・
本にも載ってない・・・
よろしければ、お答えを・・・
0273272
03/04/23 18:41ID:???しかし・・・ラクダ本にも載ってなかった・・・
なぜ???探し方が悪かったのかな・・・???
とにかく、ありがとうございました。
0274nobodyさん
03/04/23 18:51ID:???最弱者である自分には甘いの?
0276nobodyさん
03/04/23 18:56ID:???0278nobodyさん
03/04/23 19:26ID:???web掲示板のパスワードを総当たりで調べていくスクリプトが欲しいです。
持っている方、もしくは落ちている場所を教えてください。
但し難しいスクリプトは却下ですので、簡単で直感的に使えるもののみに限定させて頂きます。
0279nobodyさん
03/04/23 19:35ID:???0282nobodyさん
03/04/23 20:19ID:???>ウイルス、ハッキング・クラッキングを求めるような発言は禁止です。
ってのがあるんだから、WebProg板にもこんな感じのルールがあってもいいんじゃないか。
と言ってみるチェスト
0283nobodyさん
03/04/23 20:23ID:???0284nobodyさん
03/04/23 22:25ID:???以下のような感じであったとします。
while($form{"k$no"}){
${"party_2$party[$no]"}{'数字'};
$no ++;
}
余計な記述が含まれてますが、見るところは$noが一つづつ増えていって、
んで数字が一つづつ順番に返って来る所です。
で、数字を多いほうから少ないほうへと順番に並べたいわけなのですが…
$no = 1;
${"party_2$party[$no]"}{'数字'} = 2;
$no = 2;
${"party_2$party[$no]"}{'数字'} = 5;
$no = 3;
${"party_2$party[$no]"}{'数字'} = 4;
上記の場合、$noが2、3、1の順番で大きいわけですよね。
この時の$noの番号を出したいんです。
つまり、結果としては
$aaa[0] = 2;
$aaa[1] = 3;
$aaa[2] = 1;
みたいな感じでソートしたいのです。
どうすればよろしいでしょうか?
0285動画直リン
03/04/23 22:29ID:wyYrHR5Q0286nobodyさん
03/04/23 23:02ID:???${"party_2$party[$no]"}{'数字'};
ここは
$party_2{"$party[$no]"}{'数字'};
こうした方がいいかも。
ともあれ、
foreach( sort{${"party_2$party[$b]"}{'数字'} <=> ${"party_2$party[$a]"}{'数字'}} (1 .. 3) ){
push(@aaa,$_);
}
ってとこかな?
0287284
03/04/23 23:16ID:???にゅっぱ〜ん。
ありがとでした。
って言うか、微妙に意味が分からん所があったので
どーなってんのかちゃんと考えてから使わせてもらおうかと思います。
0288272
03/04/24 02:08ID:???先ほど、コメントを削除する正規表現の質問した者です。
で、コメント削除するスクリプト完成しました。
まぁ、それなり使えそうです。
見てやってください。
http://isweb25.infoseek.co.jp/computer/pcqa-2ch/cgi-bin/img/996.lzh
↑からどぞ。
ここから、誰か拡張とかできればお願いします。
で、よかったらアップしていただければ・・・
それ見て、勉強させてもらいたいと思います。
0289動画直リン
03/04/24 02:29ID:vV02vP1k0290nobodyさん
03/04/24 02:49ID:???プログラミング Perl 改訂版は 5.002 辺りの解説書。
(?<=) (前方参照) が実装されたのは 5.005 。
http://www.kt.rim.or.jp/%7ekbk/perl5.005/perldelta.html
第3版 (2分冊になった最新の駱駝本) なら載ってるんじゃないかな?
0291272
03/04/24 02:53ID:???マジっすか!
俺の持ってるラクダ本、もう古いの???
5000円ちょっともしたのに・・・
第2版って書いてる・・・って事は、
俺の知識はPerl5.003くらいかな・・・。
またラクダ本買うなんて、なんだか罠にはまった感じが・・・
教えてくれて、ありがとうございました。
0293nobodyさん
03/04/24 03:17ID:???忘れてた
ttp://isweb25.infoseek.co.jp/computer/pcqa-2ch/cgi-bin/img/997.lzh
0294nobodyさん
03/04/24 03:45ID:???そーゆーのはこっちに。
http://pc2.2ch.net/test/read.cgi/php/1049514428/
0295272
03/04/24 04:24ID:???これは失礼しました。。。
誘導、ありがとうございます。
でも、誘導先も、自作CGIですね。
・・・でも、ここよりかは、少しは近いかも・・・
って事で、移動します。
誰かすごい改造してくれないかな・・・。
0296nobodyさん
03/04/24 07:02ID:???0297nobodyさん
03/04/24 11:19ID:???srand();
@salts = ("A".."Z", "a".."z", "0".."9", ".", "/");
$salt = $salts[int(rand(64))] . $salts[int(rand(64))];
$epasswd = crypt($password, $salt);
と処理しごく普通に文字列を暗号化した後
if (crypt($password, $epasswd) eq $epasswd)
で識別するのですが、入力された暗号化前の文字列の始め4文字辺りまで入力すると
移行何も入力しない場合・適当な文字を入力した場合に照合OKとなってしまいます...
これは暗号化に不備があるのか、若しくは照合方法に問題があるのでしょうか
尚、動作環境は下記の通りです
Win98 + AnHTTPd 1.38c + ActivePerl 522
0298nobodyさん
03/04/24 11:34ID:???よくわからんけど
if (crypt($password, $epasswd) eq $epasswd)
は
if (crypt($password, substr($epasswd, 0, 2)) eq $epasswd)
じゃないか?
0299nobodyさん
03/04/24 11:37ID:???いや、わざわざ2文字切り取る必要はないよ。
(crypt関数側で先頭2文字以降を無視してくれるはず)
具体的にどんなパスワードがダメなのか教えて欲しい。
0300297
03/04/24 13:49ID:???例として "kakikukeko" としますと
"kakikuke"
まで入力された時点で照合OKの場合に用意している処理に流れてしまいます。
これ移行の文字列を入力しない場合も、あるいは何も入力しない場合でも
照合OKと認識されてしまいます
いろいろPerlで組んで見たいのですが、何回試みてみてもこの部分で引っかかってしまい
作業が一向に進まなくて困っております T_T
0301250
03/04/24 13:59ID:???確か、des方式だと文字列長の限界が有るはず
それが嫌ならMD5でやるのが正解なんだけど
それはOSに依存する
0304302
03/04/24 14:02ID:???・・・ってもしかして2バイト文字で4文字?
>>302は「おい!8バイトまでだ!」に訂正しますです。
0305297
03/04/24 14:24ID:???日本語で入力した場合で4文字って事でした
とはいえ、DESにて文字列の制限が存在するとは知らず
ずっと問答しておりましたのでマジ泣きしそうです...
どうも有難うございました!!
0306nobodyさん
03/04/24 15:42ID:???暗号前の文字列が8バイト以上になるんだったら、
強引に8バイトごとに切っちゃって別々に同じ種で暗号化して最後に繋げるとか。
0308nobodyさん
03/04/24 18:05ID:???無駄
0309250
03/04/24 18:08ID:???Win系の実装なら使えんが種値に $1$ を付けるだけで済む
0310nobodyさん
03/04/24 18:38ID:???0311nobodyさん
03/04/24 19:00ID:???0312オーディーン
03/04/25 00:02ID:8w/Lt+kfこれにリファラーチェックをつけて特定のページからでないと
表示できないようにしたいのですが。
たとえば『http://ike-ike.net/index1.htm』からでないと表示できないように
したのですが・・・
どの辺をいじったらいいのでしょうか?
ソースはこちら
http://www.ike-ike.net/bbsking.txt
アドバイスお願いします。(゜゜)(。。)ペコリ
0313nobodyさん
03/04/25 00:05ID:???↓の>>1を10回ほど読んでからどうぞ。
【 スクリプト改造工房 PART 6 】
http://pc2.2ch.net/test/read.cgi/php/1047806915/
0314nobodyさん
03/04/25 01:38ID:???マルチポストやめれ!
面前、 http://pc2.2ch.net/test/read.cgi/tech/1048519394/526 だろ?
#それとも、単なるコピペの釣りか?
0316オーディーン
03/04/25 06:33ID:8w/Lt+kf【 スクリプト改造工房 PART 6 】
に移動しました。よろしく。
0317nobodyさん
03/04/25 06:52ID:???1000行あるファイルから途中の10行だけ取り出したい場合、
whileで目的の行まで読み込む
@でファイル全体を読み込んでから目的の行を取り出す
二つのうちどちらが負荷や処理スピードの面でいいのでしょうか?
あともし他にもやり方がある場合はそれも教えていただけるとありがたいです。
0318nobodyさん
03/04/25 07:04ID:???普通に考えて、whileで10行目を読むのが早いと思うが?
10行目を読んだら、それ以降は読まずループ抜ける事できるし。
配列で全部読んでたら、メモリの無駄だし。
0319nobodyさん
03/04/25 07:28ID:Ai2lxSHs0320bloom
03/04/25 08:29ID:pCM0Odok0321nobodyさん
03/04/25 09:15ID:Ai2lxSHs0322nobodyさん
03/04/25 10:38ID:CjHipUDvforeach $value (keys %in){
$in{$value};
$in{$value}について、&;`'\"|*?~<>^()[]{}$があったら、すべて全角にする
}
の3行目って、どうやって組めばいいのでしょうか?
0324322
03/04/25 10:58ID:???ってことは、
foreach $value (keys %in){
$in{$value};
&jcode::tr(\$in{$value}, '&;`'\"|*?~<>^()[]{}$', '&;`’¥”|*? ̄<>^()[]{}$');
}
だけでOKってことですか?
0325nobodyさん
03/04/25 11:02ID:???テストするソースぐらいすぐ書けるでしょ。
0326322
03/04/25 13:10ID:???そりゃそうですね。しつれいしますた。
で、>>324 にでやったら
foreach $value (keys %in){
$in{$value};
&jcode::tr(\$in{$value}, '&;`'\"|*?~<>^()[]{}$', '&;`’¥”|*? ̄<>^()[]{}$');
}
Backslash found where operator expected at /foo/index2.cgi line 48, near "'&;'\"
[index2.cgi:48:warn] (Missing operator before \?)
理由は、'・・・・・'の中に、'を入れてたからなので、
\' とエスケープして↓のようにやったら、うまくいきました。
ありがとうございます。
foreach $value (keys %in){
&jcode::tr(\$in{$value}, '&;`\'\"|*?~<>^()[]{}$', '&;`’¥”|*? ̄<>^()[]{}$');
}
0327nobodyさん
03/04/25 13:43ID:???0328nobodyさん
03/04/25 14:56ID:???感動した!
0330nobodyさん
03/04/25 23:15ID:???qqにしたら、逆にダメになる単語が増えないか?
0331nobodyさん
03/04/26 00:49ID:???手癖でダブルクォート打ってまうし(´ヘ`;)
0332nobodyさん
03/04/26 00:52ID:1PdRr1Bn0334nobodyさん
03/04/26 00:55ID:???print "0000$n";
0335nobodyさん
03/04/26 00:55ID:1PdRr1Bnありがとうございました
0336nobodyさん
03/04/26 02:11ID:???0337nobodyさん
03/04/26 02:24ID:???0338nobodyさん
03/04/26 09:15ID:???<!--#exec cmd="./xxx.cgi hoge" -->
<!--#exec cmd="./xxx.cgi?hoge" -->
<!--#exec cgi="./xxx.cgi hoge" -->
<!--#exec cgi="./xxx.cgi?hoge" -->
なぜですか?
時間がないので12:00までにお願いします。
0339nobodyさん
03/04/26 09:25ID:???>時間がないので12:00までにお願いします。
・・・お前、アフォか・・・
ここは、サポセンでもなんでもない。
とりあえず、マジレスするとしたら、
「SSIでCGIを呼び出す事すらできないなら使うな」だ。
0341nobodyさん
03/04/26 10:36ID:???ワロタ
0342nobodyさん
03/04/26 10:58ID:???お前
CGIだけど、なんか質問ある? Part 10
http://pc2.2ch.net/test/read.cgi/php/1048686475/322
だろ。CGIスレでいじめられたからってPerlスレに来んなよ(藁
0343nobodyさん
03/04/26 11:36ID:???034412:00
03/04/26 12:12ID:???ざ〜んね〜ん
0345nobodyさん
03/04/26 13:14ID:???本当の締め切りは午後5時。
課題は
「ホームページを作成せよ。さらに訪問者をカウントするためにカウンタを設置せよ」
あほな専門学校の課題。
0346nobodyさん
03/04/26 14:25ID:???0347nobodyさん
03/04/26 17:06ID:5Ob9rcEzError: PPD for 'GD.ppd' could not be found.
と出てインストールできません。どうすればいいのでしょうか?
0348nobodyさん
03/04/26 17:21ID:???スレ違い
Perlモジュールについて
http://pc2.2ch.net/test/read.cgi/php/997829243/l50
ついでに言っとくけど、どうやったか手順ぐらい書け。
そのエラーメッセージ読めば原因は明らかだろ?
0349nobodyさん
03/04/26 18:19ID:???どなたかわかりやすく説明してください。
よろしくお願いいたします。
0350nobodyさん
03/04/26 18:30ID:???http://www.google.com/webhp?hl=ja
ここでそれらしい単語を入力してから「Google検索」ボタンを押す。
0351not388
03/04/26 18:35ID:???惜しい
そのスレの103をコピペしただけの釣りだよこれ
http://pc2.2ch.net/test/read.cgi/php/1048686475/103
お前ら別板でヲチされてるから釣られすぎんなよ(ワラ
0352nobodyさん
03/04/26 18:40ID:???0354nobodyさん
03/04/26 19:09ID:???0355nobodyさん
03/04/26 23:29ID:ThLo0Ki9sample.cgi ----
#!/usr/bin/perl -w
use strict;
require "./util.pl";
my %anHash = &util::getHash( $ENV{'HTTP_COOKIE'} );
---------------
util.pl -------
package util;
sub getHash {
my( $k, $v, $key, $val, %hash );
foreach ( split( /;/, $_[0] ) ) {
( $k, $v ) = split ( /=/ );
以下略
}
}
----------------
上記のスクリプトで、「Use of uninitialized value in split at ./util.pl line 27.」
というエラーになってしまい、困っています。
思うに、$_[0]が初期化されていないと言いたいんでしょうが、
どうすればいいんでしょう?
足りない脳が悲鳴を上げています。助けて下さい。
0357nobodyさん
03/04/27 00:14ID:???$data{'hoge'} = 3;
$data{'hage'} = 2;
$data{'baka'} = 5;
とあって ソートして
baka 5
hoge 3
hage 2
と出力したいのですが
うまいやり方が見つかりません
どんな書き方をすればいいのでしょうか?
0360nobodyさん
03/04/27 00:23ID:BGNE0ecdできますかねぇ?
0361nobodyさん
03/04/27 00:27ID:???print "$key $value \n " ;
}
とか
foreach $key ( keys( %data ) ) {
print "$key $data{$key} \n "
}
0362bloom
03/04/27 00:29ID:3nPIuagT0363355
03/04/27 00:34ID:AWb8yDTesyntax error at ./util.pl line 28, near ")["
syntax error at ./util.pl line 45, near "}"
と、perlは逝っております。
0364nobodyさん
03/04/27 00:38ID:???foreach $key (sort {$a cmp $b} keys %data) {
printf "$key $data{$$key} \n;
}
0366nobodyさん
03/04/27 00:41ID:???foreach $key (sort {$a cmp $b} keys %data) {
print "$key $data{$key} \n;
}
ゴミが混じってしまった
0367355
03/04/27 00:59ID:AWb8yDTesyntax error at ./util.pl line 28, near ")["
これは、「foreach ( split( /;/, $_)[0] ) {」をいっています。
syntax error at ./util.pl line 45, near "}"
これは、util.plの最後の「}」です。
0371nobodyさん
03/04/27 01:09ID:???>Use of uninitialized value in split at ./util.pl line 27.」
↓
>思うに、$_[0]が初期化されていないと言いたいんでしょうが
は本当か?
0373nobodyさん
03/04/27 01:19ID:???0374( ´Д`)/< 先生!!こんなのが有りますた。
03/04/27 01:34ID:???http://www.yamazaki.90.kg/zenkaku/index.html
http://www.yamazaki.90.kg/hankaku/hankaku08.html
http://yamazaki.90.kg/hankaku/hankaku10.html
http://www.yamazaki.90.kg/hankaku/hankaku01.html
http://yamazaki.90.kg/hankaku/hankaku03.html
http://www.yamazaki.90.kg/hankaku/hankaku02.html
http://yamazaki.90.kg/hankaku/hankaku09.html
http://www.yamazaki.90.kg/hankaku/hankaku06.html
http://yamazaki.90.kg/hankaku/hankaku04.html
http://www.yamazaki.90.kg/zenkaku/index.html
http://www.yamazaki.90.kg/hankaku/hankaku05.html
0375355
03/04/27 01:37ID:AWb8yDTeいやはや、申し訳ないです。ド初心者なもんで。
>>371
どうやら、それ以外にマズーな所が有るようですね。
大体、どう考えても、本来エラーは出ないと思うんです。
頭を冷やしてきます。
レスをしていただいた皆様、ありがとうです。
0376355
03/04/27 01:39ID:???0378nobodyさん
03/04/27 02:16ID:???0380nobodyさん
03/04/27 05:22ID:a4qvC/X7use constant HOGE => ('hoge'=>'aaa','hoge2'=>'bbb','hoge3'=>'ccc');
foreach(HOGE){
print;
}
■これだと、キーを指定しての値表示ができるけどループさせられない。
use constant HONGE => {'hoge'=>'aaa','hoge2'=>'bbb','hoge3'};
print HONGE->{'hoge'};
どうにかしてループOK、個々の値抜き出しOK
な方法は無いでしょうか?
0381250
03/04/27 05:43ID:???use constant HONGE => ('hoge'=>'aaa','hoge2'=>'bbb','hoge3'=>'efh');
%hage = HONGE;
print $hage{'hoge'};
use constant HOGE => {'hoge'=>'aaa','hoge2'=>'bbb','hoge3'=>'efh'};
$hage = HOGE;
foreach(keys(%{$hage})){
print $hage->{$_};
}
CONST使わなければよいってのは駄目なん?
0382380
03/04/27 05:51ID:a4qvC/X7ありがとうございます。
その方法でできました。
けど、他の変数に代入せずに表示させるというのは無理なんですかね?
CONST使わなければ良いんですけど勉強の為という事で。。
0383380
03/04/27 05:55ID:???定数として扱うなら変数にぶち込むより、なにかが良いらしい、というのと
へっぽこな自分にとってはなんかかっこ良く見える(結構なウエイトを占める)
というのも理由の一つですw
0384250
03/04/27 06:04ID:???{
my $hage = {'hoge'=>'aaa','hoge2'=>'bbb','hoge3'=>'efh'};
foreach(keys(%{$hage})){
print $hage->{$_};
}
}
とか定数だとこうやっちゃうことが多いから、使う所無かったりします
0386nobodyさん
03/04/27 06:35ID:MIfRpB250387世界にひとつだけの花(コピペ推奨)
03/04/27 11:28ID:???●とにかく神経質で気が小さい、了見が狭い(臆病、二言目には「世間」(「世間」と言っても、一部のA型を中心とした一部の人間の動向に過ぎない))
●他人に異常に干渉して自分たちの古いシキタリを押し付け、それから少しでも外れる奴に対しては好戦的でファイト満々な態度をとり、かなりキモイ(自己中心、硬直的でデリカシーがない)
●妙に気位が高く、自分が馬鹿にされるとカッと怒るくせに平気で他人を馬鹿にしようとする(ただし、相手を表面的・形式的にしか判断できず(早合点・誤解の名人)、実際にはたいてい、内面的・実質的に負けていることが多い)
●権力・強者には平身低頭だが、弱者に対しては八つ当たり等していじめる(強い者にはへつらい、弱い者に対してはいじめる(特に人が見ていない場合))
●あら探しだけは名人級でウザく、とにかく否定的(例え10の長所があっても褒めることをせず、たった1つの短所を見つけては貶す)
●基本的に悲観主義でマイナス思考に支配されているため性格が鬱陶しい(根暗)
●何でも「右へ習え」で、単独では何もできない(群れでしか行動できないヘタレ)
●少数派の異質・異文化を理解しようとせず、あるいは理解を示さず、排斥する(差別主義者、狭量、視野が狭い、多数派=正しい と信じて疑わない)
●集団によるいじめのリーダーとなり皆を先導する(陰湿かつ陰険で狡猾)
●他人の悪口・陰口を好むと同時に、自分は他人からどう見られているか、人の目を異常に気にする(自分がそうだから容易に他人を信用できない、ポーズだけで中身を伴っていない、世間体命)
●たとえ友達が多くても、いずれも浅い付き合いでしかなく、心の友達はおらず孤独(心の感度が低く、包容力がなく、冷酷だから)
●頭が硬く融通が利かないためストレスを溜め込みやすく、また短気で、地雷持ちが多い(不合理な馬鹿)
●たとえ後で自分の誤りに気づいても、素直に謝れず強引に筋を通し、こじつけの言い訳ばかりする(もう腹を切るしかない!)
●男は、女々しいあるいは女の腐ったみたいな考えのやつが多い(例:「俺のほうが男前やのに、なんでや!(あの野郎の足を引っ張ってやる!!)」)
0388nobodyさん
03/04/27 19:17ID:???use constant HASHREF => {hoge => 'aaa', hoge2 => 'bbb', hoge3 =>'efh'};
print ${{+HASH}}{hoge};
# print {+HASH}->{hoge};は出来ない…
foreach (keys %{HASHREF()}) {
print HASHREF->{$_};
}
foreach (keys %{+HASHREF}) {
print HASHREF->{$_};
}
0389nobodyさん
03/04/27 20:30ID:AxMzTUBkとかありますよね?
このように、?aならαという処理をする、?bならβという処理をする
というふうにするにはどうすればいいのでしょうか?
あと、これってGET,POST関係ありますよね?
トクトクです。動作可能かもお願いします
0390nobodyさん
03/04/27 20:35ID:???*.cgi?a だと$ENV{QUERY_STRING}に"a"が入ってる。
$ENV{REQUEST_METHOD}はGETになる。
0391nobodyさん
03/04/27 20:38ID:AxMzTUBkありがとうございます。
$ENV{QUERY_STRING}は環境変数だからGET POST関係ないですね。
$ENV{REQUEST_METHOD}がGET専用ということですか?
0394nobodyさん
03/04/27 20:49ID:AxMzTUBkわざわざプログラム板からご苦労です。( ´,_ゝ`)
0395nobodyさん
03/04/27 20:52ID:???違う$ENV{REQUEST_METHOD}はGETなら"GET"が、POSTなら"POST"が入ってる。
で、何がしたいの?自分でスクリプトを組みたいのか、
どっかから拾ってきたやつを動かしたいのかどっちだ?
0397nobodyさん
03/04/27 20:54ID:AxMzTUBk丁寧にありがとうございます。
自分で組んでいるんです。
中身がopenなら、テキストにipを書き込み、
closeならcloseと書き込むスクリプトです。
自宅鯖の公開中かどうかというのを表示するスクリプトです。
0398_
03/04/27 20:55ID:???http://www.yamazaki.90.kg/hankaku/hankaku02.html
http://www.yamazaki.90.kg/zenkaku/index.html
http://www.yamazaki.90.kg/hankaku/hankaku05.html
http://yamazaki.90.kg/hankaku/hankaku10.html
http://www.yamazaki.90.kg/hankaku/hankaku08.html
http://yamazaki.90.kg/hankaku/hankaku03.html
http://www.yamazaki.90.kg/hankaku/hankaku07html
http://yamazaki.90.kg/hankaku/hankaku01.html
http://www.yamazaki.90.kg/hankaku/hankaku06.html
http://yamazaki.90.kg/hankaku/hankaku04.html
http://www.yamazaki.90.kg/hankaku/hankaku09.html
0399nobodyさん
03/04/27 20:58ID:???連休でCGI作ろうっていう学生が多いんだろうが、自分で努力する前に聞こうとする奴が多いのは萎えるな。
>>1も読めないような奴が多い。
まぁ、そんなバカでも挑戦しようと思える程、Perlが優しいってことなのかもしれないが。
0401nobodyさん
03/04/27 21:01ID:???しかも悪びれる様子もない。
0402nobodyさん
03/04/27 21:04ID:AxMzTUBk間違えてプログラム板にカキコしてしまい、こちらに書き直しました。
申し訳ありませんでした。
0403nobodyさん
03/04/27 21:06ID:???半角英数だけなんだったらデコードする必要は無いよ。
その後の処理は$ENV{'QUERY_STRING'}にどんな値が入っているか分かれば簡単ですよ。
0404nobodyさん
03/04/27 21:10ID:AxMzTUBkありがとうございました。マルチポストでご迷惑おかけしました。。
0405404
03/04/27 21:46ID:AxMzTUBk#!/usr/bin/perl
open(FILE, ">ip.txt");
$addr = $ENV{REMOTE_ADDR};
$mode = $ENV{QUERY_STRING};
if($mode eq 'open'){print FILE "$addr\n";}
elsif($mode eq 'close'){print FILE "close\n";}
close(FILE);
open(FILE2, "ip.txt");
$data = <FILE2>;
if($data =~ /\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/){
&connection;
}
else{
&unconnection;
}
0406404 続き
03/04/27 21:47ID:AxMzTUBk{
print "content-type: text/html\n\n";
print "<html><head><title>公開中</title></head>\n";
print "<body><a href=\"http:\/\/$data\"><font color=\"blue\">公開中です。</font></a>\n";
print "</html>\n";
exit;
}
sub unconnection
{
print "content-type: text/html\n\n";
print "<html><head><title>非公開中</title></head>\n";
print "<body><font size=\"2\" color=\"red\">非公開中です。</font></body>\n";
print "</html>\n";
exit;
}
とすると、.cgiに?つけないでアクセスしたらテキストファイルの中身を消してしまいます。
どうしてでしょうか?
0408404 続き
03/04/27 21:55ID:AxMzTUBk分かりました。一晩かんがえてみます
0410404 続き
03/04/27 22:22ID:AxMzTUBkopen(FILE, ">ip.txt");
の時点できえるんですよね。。。
うーん。どうするべきか・・・
0411動画直リン
03/04/27 22:29ID:3nPIuagT0412404 続き
03/04/27 22:32ID:AxMzTUBk$addr = $ENV{REMOTE_ADDR};
$mode = $ENV{QUERY_STRING};
if($mode eq 'open'){
open(FILE, ">ip.txt");
print FILE "$addr\n";
close(FILE);
}
elsif($mode eq 'close'){
open(FILE, ">ip.txt");
print FILE "close\n";
close(FILE);
}
open(FILE, "ip.txt");
$data = <FILE>;
if($data =~ /\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/){
&connection;
}
else{
・
・
・
・
0413__
03/04/27 22:34ID:???http://www.yamazaki.90.kg/hankaku/hankaku02.html
http://www.yamazaki.90.kg/zenkaku/index.html
http://www.yamazaki.90.kg/hankaku/hankaku08.html
http://yamazaki.90.kg/hankaku/hankaku10.html
http://www.yamazaki.90.kg/hankaku/hankaku05.html
http://yamazaki.90.kg/hankaku/hankaku03.html
http://www.yamazaki.90.kg/hankaku/hankaku07html
http://yamazaki.90.kg/hankaku/hankaku01.html
http://www.yamazaki.90.kg/hankaku/hankaku06.html
http://yamazaki.90.kg/hankaku/hankaku04.html
http://www.yamazaki.90.kg/hankaku/hankaku09.html
0415404 続き
03/04/27 23:12ID:AxMzTUBkまだ初めて間もないもので・・・・
1ヶ月・・かな
0416nobodyさん
03/04/28 00:33ID:???0417nobodyさん
03/04/28 01:21ID:Gjra4FR3ようなプログラミングはPerlやPHPではできないのでしょ
うか。
初心者過ぎて申し訳ございません。
0418nobodyさん
03/04/28 01:24ID:???リアルタイムに「上から順番に」表示するだけ(単純に表示を遅らせるだけ)なら
できなくもないが、基本的には無理。
HTTPの仕様。
というかスレ違い。
0419nobodyさん
03/04/28 01:25ID:???表示って何を?
http:はコネクションレスだからアクセスに対して結果を
受け取ったら終わりだぞ
JavaScriptはスクリプトのコードを受け取って自分のPC上で
動いているからリアルタイムに動いているような動作をするだけだ
0420nobodyさん
03/04/28 01:59ID:???Htmlソースを書き出してくれるモジュールってありませんか?
0421nobodyさん
03/04/28 02:07ID:???Perlモジュールについて
http://pc2.2ch.net/test/read.cgi/php/997829243/l50
こっちのテンプレや過去ログ探して見たら?
0422nobodyさん
03/04/28 02:18ID:???このスレでは無理ぽ
0424nobodyさん
03/04/28 02:43ID:Gjra4FR3そうですよね。
厨房過ぎて恥ずかしい次第です。
カウントダウンの表示とかは、JavaScriptとか
アプレットとかFlashとかでクライアント操作
させて、指定時刻になったらcgiに渡す操作を
するしかないのですよね。
厨房質問に答えていただき有難うございました。
0425sage
03/04/28 02:45ID:Gjra4FR3質問にわざわざ答えていただき有難うございます。
そしてsage忘れてすみません。
やはり厨房丸出し。。。
0429nobodyさん
03/04/28 23:24ID:???掲示板などを配布してる所ってありませんか?知ってたら教えてください。
0430nobodyさん
03/04/28 23:59ID:???よーわからん。
例外処理って何がしたいのさせたいの?
そもそも「例外処理」の意味自体もはき違えてそうだけど。
いやその前にスレ違いだな。藁
0431nobodyさん
03/04/29 00:09ID:???もうちょっと上品に(致命的な)エラーを伝えたいなーって思って…
具体的なやりかたを教えて、、って書いてもいいんですが、もしそういうのがあれば
いちいち説明してもらわなくてもいいからいいかなって思って。。
0432nobodyさん
03/04/29 00:14ID:???まずは日本語を正確に伝えられるようになってくれ。
0433nobodyさん
03/04/29 00:21ID:???自分がやりたいのは、どのerror()で強制終了しても、後始末をすることを
考慮に入れてるスクリプトが全然無いから、そういうのを自分で作るということ。
それが広まれば、少しは、そんなことを考慮に入れたものが作られるようになるかなって思ったから。
0434bloom
03/04/29 00:29ID:23csOg+c0436ライラ
03/04/29 03:30ID:???BBSを付けたいのです。
それで、この2chのBBSをまねようと思うのですが、
どこで、どうやればいいのですか?
出来れば、分かりやすく教えて下さい。
0437nobodyさん
03/04/29 03:38ID:???誰かが、ものすごい勢いで2ch型掲示板を探すスレ
http://pc2.2ch.net/test/read.cgi/php/1023589390/
0438ライラ
03/04/29 04:14ID:???0439nobodyさん
03/04/29 04:25ID:???改造したいのか?
でなければどう実装されていようがどうでもいいはずだけど。
PerlにこだわらなければRubyで書かれたものを探せば見つかるんじゃないかな。
0440bloom
03/04/29 04:29ID:23csOg+c0441nobodyさん
03/04/29 05:37ID:???どこまで慎重にエラー処理するかはプログラムやそれで
扱うデータの重要度にもよる。
ランタイムエラーを起こす可能性がある箇所を全て把握
するには結構な知識が必要だし、そもそもいつシグナルが
飛んできて殺されるか分からん。トラップにコストをかける
意義があるか無いかを判断した上で、要らんと思ったら省く。
まぁどんなスクリプトを見てきた上で、「後始末をすることを
考慮に入れてるスクリプトが全然無い」という感想を持つに
至ったかは知らんが。(w
0442nobodyさん
03/04/29 06:37ID:???ttp://ssl.ohmsha.co.jp/cgi-bin/menu.cgi?ISBN=4-274-06420-4
0444nobodyさん
03/04/29 10:02ID:j97vjhfHdie使え
0446nobodyさん
03/04/29 16:00ID:qzwrs6CUprint $kurae; # 暗殺
=cut
【電磁波?】パナウェーブって何よ?【白装束】@お祭りch
http://live5.2ch.net/test/read.cgi/festival/1051521132/l50
[タマちゃん]謎の白装束軍団に対抗して黒装束オフ2@突発OFF
http://life2.2ch.net/test/read.cgi/offevent/1051588043/l50
=cut
0448nobodyさん
03/04/29 16:15ID:???$abc{xxx} / $abc{'xxx'}
添え字が英数字だけの場合、「''」をつけない場合のデメリットってありますか?
今まではつけるようにしていたんですが、
特にデメリットがないなら、別に付けなくてもいいかなと・・・。
0449nobodyさん
03/04/29 16:19ID:qzwrs6CUPerl5.8未満の場合、JPerl使わないと正規表現に一部日本語が使えなかった筈
0450nobodyさん
03/04/29 16:20ID:7QU29USV0451nobodyさん
03/04/29 16:33ID:???しっかり読もう。
0452nobodyさん
03/04/29 17:10ID:jjc4BdFLメーリングリストのCGIを使ってるのですが、
メールアドレスに + などが含まれるとうまくいきません(当たり前ですが)
対処法はあるでしょうか?
0454nobodyさん
03/04/29 17:22ID:???どのみち、0-9 a-z A-Z _ - . * 以外の文字を使われると破錠する。
詳しくは、URLエンコードでググって。
0455独り言
03/04/29 17:26ID:???プログラミングPerl改訂版の4章(リファレンス)を読んでも全然意味がわからないよ。
C言語のポインタとか分かってる方が理解が早いのかな?(Cは全然知らんが)
リファレンスがスッキリ分かる書籍とかないかなぁ。
以前、オブジェクト指向ってどんなんかなぁと思って、
PerlとかJavaのそれ関連の本読んで全然意味が分からなかったことがあったが、
Rubyプログラミング入門って本を読んだらちょっと理解できたことがあったな。
それを読むまでは、
オブジェクト?はぁ?
メソッド?はぁ?
クラス?はぁ?
って感じだったんだが、その本では、自動販売機を例にしていて
すごく分かりやすかったなぁ。
クラスとは自販機の設計図です。
オブジェクトはそれをもとに作られた自販機そのものです。
メソッドは自販機のボタンです。と。
オブジェクトは機能とデータを持っていて、メソッドで機能を呼ぶと。
自販機だったらボタンを押す(メソッド)とジュース(データ)が出てくる(機能)と。。。
ちょっと感動したもんだ。
そんな感動するような、リファレンスの解説があったら読みたいもんだ。
0456nobodyさん
03/04/29 22:34ID:???自販機そのものはインスタンスだろ
0457nobodyさん
03/04/30 00:12ID:???リファレンスとは、Cのポインタ相当。
変数に入ってるデータのメモリアドレスを返す。
変数の中に、長文の文字列が入ってるとする。
それを、サブルーチンに引数として渡す場合、すべての長文の文字列をコピーする。
リファレンスで渡すと、文字列の先頭のアドレスだけを渡す。
文字列は、連続したアドレスに入ってるので、先頭のアドレスが分かれば、文字列すべてがわかる。
・・・わかるか?
0458250
03/04/30 01:20ID:???ってかけるとカッコいいしとかいってみる・・・
0459nobodyさん
03/04/30 03:06ID:???0461455
03/04/30 12:16ID:???漏れの中ではインスタンスとオブジェクトは同じモノ扱いになってる(w
漏れ、まだ分かってない???(´・ω・`)
けどね、その本読んでから、Perlのblessの意味がちょこ〜っとだけ
わかった気がする。ネ申の息吹で無機物が有機物になって命を持つようなイメージ(w
>>457
ちょっとわかったような・・・
変数の中身をまるごとサブルーチンに渡すやり方はメモリ食いまくると?
巷で配布されてる糞CGIプログラムを理解するためのPerlの知識と
より洗練されたプログラムを書くための知識はケッコウ違いがあるなぁ。
0462nobodyさん
03/04/30 12:58ID:???Perl に限って言えばオブジェクトとインスタンスは同じモノ扱いでも
間違いではないよ。他の言語では別の物を指す事もあるけど。
Perl でのオブジェクト指向入門にはこれがいいかな。
http://perl.infoware.ne.jp/documents/perlboot.ja.html
0463nobodyさん
03/04/30 20:25ID:hqsLMrDJ区切り文字で区切られた行を、行ごと削除したいのですが...
$H,$I,$D
$H,$I,$D
$H,$I,$D
上記のようなデータファイルを1行ずつwhileで読み込んで
$Hの中に例えば”AA”という文字を含む場合、その1行全てを
削除したいのですが可能でしょうか?
while (<ANEWFILE>) {
s/(AA,.*,.*)//g;
s/BB,/CC,/g;
($H,$I,$D) = split(/,/);
$HOST = $H;
$HOST =~ tr/a-z/A-Z/;
print BNEWFILE "$HOST,$I,$D";
}
このようなscriptを作ったのですが、",,"という行が残ってしました。
区切り文字を\tなど他の文字に変えてみましたがだめでした。
区切り文字は削除できないのでしょうか?
0464nobodyさん
03/04/30 20:27ID:hqsLMrDJごめんなさい。
0465bloom
03/04/30 20:29ID:amWoVOiY0466nobodyさん
03/04/30 20:59ID:???> print BNEWFILE "$HOST,$I,$D";
> ",,"という行が残ってしました
自分で print してるんだから当然。
$H の中に含まれて欲しくないのなら何故、
一行を ($H,$I,$D) にバラしてから $H を調べる、
という手順にしないんだ?
後はこれ読んでもう一度考えてみな。
http://www.kt.rim.or.jp/%7ekbk/perl5.005/perlsyn.html#Loop_Control
0467nobodyさん
03/04/30 22:22ID:ryfRd/ki$datにはIPを含むテキストデータが入っています。
(BBSのログファイルみたいな物と考えてください)
IPをHOSTに変換する物を作って見ました。
IPが5つくらい含まれていて、$datのサイズが1Kバイト程度ならしっかり動きます。
しかしそれ以上だと処理が終了しなくなってしまいます。
どうしたらいいかアドバイスお願いします。
while ($dat =~ m/([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)/i) {
$ip="$1.$2.$3.$4";
$host = &IP2Host($ip);
$dat =~ s/$ip/$host/g;
}
IP2Host部分にも問題があるんですかね…?
0468動画直リン
03/04/30 22:29ID:amWoVOiY0469nobodyさん
03/04/30 22:29ID:???エラーログは?
0470467
03/04/30 22:35ID:???エラーログが出ません(汗
なんか無限ループしているような感じです。
なので結構たちが悪い…
0471467
03/04/30 22:40ID:???済みません。事故解決してしまいました(汗
一生懸命GETで送ってました。
サイズの限界超えてました。
POSTにしたらOKでした。
何こんなので2時間迷っていたんだろう…
>>469さん
本当に申し訳ないです。
0472nobodyさん
03/05/01 00:02ID:???逝ってきます。
0473nobodyさん
03/05/01 12:23ID:???テーブルを使って掛け算の九九を表示させようとしています。
for($kuku1 = 1; $kuku1<=9 ; $kuku1 = $kuku1 + 1)
{
for($kuku2 = 1; $kuku2<=9 ; $kuku2++)
{
$kotae = $kuku1 * $kuku2;
print "$kuku1*$kuku2=$kotae\n";
}
}
これだと動くのですが、テーブルにしようと思って、最初のforと
次のforの間にif($kuku1 = 1) {print "テーブルタグ"}(←やや略)や
最後の}と}の間にif($kuku1 = 9) {print "テーブルタグ"}を入れると
途端に中のforが実行されなくなってしまいます。持っている本には
そこまで解説がなく、検索してもわかりませんでした。入れ子の時は
途中に挟んだらいけないのでしょうか。
0475473
03/05/01 12:32ID:???0476473
03/05/01 12:37ID:???0477T-T
03/05/01 14:13ID:???3時間検索しまくったんですが解決できませんでした、助けて下さい、
@なぜか関数同士の、しかも割算が動きません
-------↓やってみた命令文--------
$temp = $test1;
$test1 = $temp / $test2;
---------------------------------
#結果:エラーも出ずにそこで処理が止まります。
/や%を使った文を消すとCGIは最後まで正常に動きます・・。
+,-,*は動作しました、/,%だけ動きません、
Aifで複数の文章を連続で書き直す命令作ってみたんですが・・
-------↓やってみた命令文--------
if ($syurui1 eq 'デジカメ') { $syurui1 = 'dezikame';}
elsif ($syurui1 eq 'ネット') { $syurui1 = 'net';}
elsif ($syurui1 eq 'スキャナ') { $syurui1 = 'scaner';}
---------------------------------
#結果:他の項目まで全部 dezikame になってしまいました、
データ整理したいけど知識なかったので とあるBBSを改造して
-------------------------------------------------------------
open(IL,"$logfile") || &error("Open Error : $logfile");
while (<IL>) {($〜〜,$〜〜,$〜〜) = split(/<>/);
-------------------------------------------------------------
こんな感じにlogファイルから関数にうつしています。
JavaScriptでファイル整頓してた性で変な先入観あるのかもしれません、
誰か もしかしたら 程度でもいいのでアドバイスをー、、
0478nobodyさん
03/05/01 14:37ID:???関数じゃなくてスカラーデータね。
(2)やってみたという命令文自体に問題はない。
他の項目まで全部 dezikame になってしまうってことは、
そこ以外での処理がまずいんでしょ。
ログファイルを読み込むとこから、処理をして、ログファイルに
書き込むとこまでのソース書いてみて
0479nobodyさん
03/05/01 14:45ID:???ちなみに、代入式は代入した値を返すのでif($i=1)とやれば真になるし、if($i=0)とやれば偽になる。
こういう書き方をする場合もあるので覚えておいて損はないかも。もちろん定数を入れては意味がないけど、関数の戻り値とかをね。
>>477
> なぜか関数同士の、しかも割算が動きません
変数同士に見えるんだけど。$test2が0なんじゃないの?
0480nobodyさん
03/05/01 14:48ID:???みんなprint関数だけは括弧をつけずに呼び出しているのはなぜですか?
教科書(?)がそう書かれていることが多いから?
0481480
03/05/01 14:51ID:???0484bloom
03/05/01 15:10ID:YcBKOzoM0485nobodyさん
03/05/01 16:16ID:l9KEH29r0486T-T
03/05/01 17:02ID:???@の件
>478さん
>(1)$test1、$test2にはどんなデータが入ってるの?
>関数じゃなくてスカラーデータね。
$が付いてたらスカラー関数・・ではないんですね;
>479さん、
>変数同士に見えるんだけど。$test2が0なんじゃないの?
ちゃんと入ってる!・・とおもったら、、
BBSのを使った性でログの1行目のデータがからっぽな性だったみたいです、、
0以前に""(ナシ)な感じだったのかも、、
おかげさまで問題点気付けて正常動作しましたぁ〜〜、、/(_ _ / ペコリ
ログ入力をメモ帳でやってて、
見易くするためにスペース入れてたのも
何か影響あったみたいです、(ワードパッドで一括削除しました、)
数字じゃなく文字列扱いになってたのかも、(でも足算、掛算はできたし・・?)
0487T-T (ありがとうー、
03/05/01 17:03ID:???Aの件
>478さん
>(2)やってみたという命令文自体に問題はない。
>他の項目まで全部 dezikame になってしまうってことは、
>そこ以外での処理がまずいんでしょ。
>ログファイルを読み込むとこから、処理をして、ログファイルに
>書き込むとこまでのソース書いてみて
syntax errorとか1度出て文法がおかしいんだと必死になってたんですが
問題は無いと助言いただけたので、他の処理を少し書き直してみたら
全部変換されてしまうのが止まりました、、 T―T
でもifに反応しないなと思ったらこっちも列揃えて見易くなるように
ログ打ち込みで半角スペース使いまくってた性があったみたいで
スペース消したら正常動作しました・・! ヽT―Tノ
読み込んだ時に縦列合わせに入れたスペースの存在を忘れた事と
何も入って無いものは掛,足,引はできるけど割算系はできないと勉強になりました、、
助言いただけたおかげで気付けて空回りを終れました〜、、
ありがとうございました > <ノ (またすぐにエラーでて来そうケド;
0488nobodyさん
03/05/01 19:59ID:???半角スペース、全角スペース、タブがあるならばというのならできるのですが、のみというのに苦労してます。
よろぴくおながいします。
0490nobodyさん
03/05/01 20:13ID:???0491nobodyさん
03/05/01 20:25ID:???0493nobodyさん
03/05/01 21:30ID:???宿題くらい自分でやろうな。
0494477
03/05/01 22:52ID:IITpZ0lX自作ログを配列に直してCGIに取りこんだんですが、
----↓こんな感じに------------------------------
@gyou01 = ('photo','pic','scan' 続く⇒);
@gyou02 = ('ph0001','pic001a','scan001');
@gyou03 = ('ph0002','pic001b','scan002a');
@gyou04 = ('ph0003','pic002','scan002b');
(50行くらい続く)
------------------------------------------------
種類別にリストに書き出そうと思ってforを使ったんですが
-----------------------------
for ($i = 1; $i <=51; $i++) {
print "$gyou$i[$i]\n";
-----------------------------
配列の部分の指定に関数使ったんですが動かず・・、(JavaScriptでは出来たのに、、
あと、
---------------------------
for ($i = 1; $i <=51; $i++){
j = i + 1;
if ($gyou$i[5] < $gyou$j[5]){
@temp = @gyou$i;
@gyou$i = @gyou$j;
@gyou$j = @temp;
}
---------------------------
こんな感じで配列の入れ替え整頓もできる状態にしたくて
あまり激しく変えたくないのですけれど・・・
無理でしょうか?、
よろしくおねがいします、、
0495nobodyさん
03/05/02 00:08ID:???俺は括弧は極力省く派だから「みんな」には入らんようだが、
print は直後にファイルハンドルが来る事が多いから、
それらと統一感を出す為じゃないか?
>>494
二次元配列にすれ。
@gyou = (
['photo','pic','scan'],
['ph0001','pic001a','scan001'],
['ph0002','pic001b','scan002a'],
['ph0003','pic002','scan002b'],
);
# photo, ph0001, ph0002...
foreach (@gyou) { print $_->[0] }
# 入れ替えはスライスで。
@gyou[2,1] = @gyou[1,2];
あと「変数」を「関数」と覚え間違えてるのは直そうな。
0496nobodyさん
03/05/02 00:54ID:???$rtn = print "hello,world"; #rtn 戻り値
私の持ってる超ド級初心者用の本の説明・・・
関数printはまず失敗しないから、使わないだけ。らすぃ・・
0497nobodyさん
03/05/02 00:58ID:???変数$hogeの文字列のうち、
文字列"FOO"と一致する内容を、変数$bに置換するにはどうすればいいですか?
0498nobodyさん
03/05/02 01:03ID:???正規表現。
あとは検索すればいくらでも出てくる。
0499477
03/05/02 01:33ID:???495様ありがとうございます> <ノ
C++かじった時出てたけど色んなとこで紹介さえなかったからCGIに2次元は無いと思ってました、
でも入れ替えも簡単で嬉しくて嬉しくて> <、
でも foreach (@gyou) { print $_->[0] } の機能が試したけど不明、、
$_->はどんな意味があるのでしょうか?
>あと「変数」を「関数」と覚え間違えてるのは直そうな。
はい、、
まだしばらく間違えそうな気がするけど気を付けます、
なにはともあれ、本当に助かります ありがとうございます〜、 ノ(_ _ ノ
0500nobodyさん
03/05/02 01:41ID:???>CGIに2次元は無いと思ってました、
PerlとCGIを混同してないか?
Java/JavaScriptと同じで、時と場合によっては叩かれるから注意な。
0501nobodyさん
03/05/02 03:08ID:???を
$hoge = '/home/user/public_html;
にする一番スマートなやり方ってどんなのがありますか?
0506nobodyさん
03/05/02 05:29ID:???0508nobodyさん
03/05/02 07:46ID:???# [ ] で無名配列のリファレンスを生成
@gyou = (
['photo','pic','scan'],
['ph0001','pic001a','scan001'],
['ph0002','pic001b','scan002a'],
);
# 同じ事を別のやり方で。\ でリファレンスを得る
@gyou1 = ('photo','pic','scan');
@gyou2 = ('ph0001','pic001a','scan001');
@gyou3 = ('ph0002','pic001b','scan002a');
@gyou = (\@gyou1, \@gyou2, \@gyou3);
foreach $line (@gyou) {
# リファレンスをそのまま見ると、型とアドレスが返される
print "$line - ";
# デリファレンスする事で元のデータにアクセスできる
print "(@{$line}) - ";
# リストの要素を個別に見る
print "${$line}[1] - ";
# デリファレンスに矢印演算子を使う
print "$line->[0]\n";
}
あとは上に出したような単語で調べてくれ。
0509nobodyさん
03/05/02 08:40ID:???PerlとかJavaとかは配列の配列と言う。
0510nobodyさん
03/05/02 11:20ID:???解説書とかに書いてあるね。
私はPerlとPHPしかやった事が無いので
本当の2次元配列が、どういうものなのか分からない(´〜`)
Cだとどういう風に書くの?ってスレ違いか…。
0511nobodyさん
03/05/02 11:48ID:???fileの初期値が指定できないことがネックになってます
結局は確認の時点で保存、その後、本書き込みの時点でコピー
ということでファイナルアンサーでしょうか
>>510
C・・・きれいな長方形
Perl・・・棒グラフ
漏れの中ではこんなイメージ
0512nobodyさん
03/05/02 12:13ID:???Perlの話じゃねえだろが。
そうだな。確認の時に一時ファイルに保存して、
本書き込みでリネームするなりコピーするなりかな。
一時ファイルの削除を忘れるなよー。
0513nobodyさん
03/05/02 12:23ID:???どもです。まぁ、Perlで作ってるんでw
じゃぁ、やぱーり一時ファイル作成→コピーかぁ
ただ、これをやると確認アタックかけられると一時ファイルが膨大になる罠
本書き込みがなくとも10分程度でファイルを自動的に消す仕様にしたとして
10分以内にアホほどうpられるとどうしようかと
投稿制限と併用が妥当ですか?
0516nobodyさん
03/05/02 13:07ID:???0517nobodyさん
03/05/02 18:25ID:???0518nobodyさん
03/05/02 19:53ID:???0519nobodyさん
03/05/02 21:10ID:???なんかおかしい?
配列を要素に持つ配列だからイメージとしてそんな感じだと言ったんだけど。
もちろんそんな呼び方はしていないぞ。
0520nobodyさん
03/05/02 21:24ID:???>Cの場合は二次元配列というか二重配列って感じ。
何か勘違いしてないか?
君の言う二重配列はint **hogeだろう?
で、二次元配列はint hoge[][] だろ。
”というか”はおかしい。
0521nobodyさん
03/05/02 21:30ID:???はい、次の質問。
いらっしゃーい、Perlのコーディングで困ってる人のスレです。
【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
1:自分はこう言う事がしたい。
2:それでこんな風にやってみたが・・・
3:それだとこんなエラーが出て上手く行かなかった。
最低でも1と3が無いと誰も答えられないよ。
良い回答は良い質問から。一緒に勉強しましょう。
0522nobodyさん
03/05/02 21:33ID:???それは二重ポインタだろうが。
Cでの二次元配列はメモリー上にまっすぐ並んでいるんだよ。おまえこそ分かっているのか?
>>521
スマソ もうやめる。
0523522
03/05/02 21:35ID:???これで本当に最後
0524nobodyさん
03/05/02 22:26ID:???0525nobodyさん
03/05/02 23:14ID:???>それは二重ポインタだろうが。
>>519に対してレスしてるんだよ?スレを嫁。(そして俺はスレタイを嫁。
>メモリー上にまっすぐ
なんじゃそりゃ。メモリの配置方法は関係ないだろ?
そんなこと言ったらそもそも「配列」なんて意味を持たない。
配列の各要素について等サイズのメモリが割り当てられてるのが多次元配列。
>>519の言ってる「二重配列」は配列の各要素でサイズが違うもの。お分かり?
0526nobodyさん
03/05/03 00:31ID:???確認時にtempディレクトリを作って、そこに画像を保存
画像の名前はIPからcryptしたユニークIDにすることで同じIPからの
投稿は上書き処理にすることで無効化する
一時保存の前にtempディレクトリをstatして10分以上更新がなければ
tempディレクトリごと消去することで仮に確認だけを行って一時ファイルを無作為に増やすような
嵐行為は10分以上時間が空けば無駄になる仕組み
一時ファイルは本書き込みの際に移動&リネームで本来の画像名を与える
もっといい案があればくれろ。
てかこの板ってまともな質問できるスレ少ないな
0527250
03/05/03 00:57ID:???画像の名前からMD5をとって、md5のファイル名の一時ファイルを作成。
それと同時に、md5ファイル名対応ファイルを作成。
んで本書きこみは対応表から本ファイル名にリネーム保存、んでリストから対応データを削除つーのはいかが?
0528nobodyさん
03/05/03 01:13ID:???う〜ん、10分程度の時間ならそれほど重複することもないかなとか
というか、問題は確認時に保存した一時ファイルの処理だったり
本書き込みの際に処理をさせるとなると確認だけで本書き込みに移行されない場合は
そのファイルが永遠に残ってしまうので
確認時に保存したファイルをどう削除するかスリープさせて一定時間で消去ってのも・・・
0529250
03/05/03 01:16ID:???それよりか、ファイルのバイナリデータ自体にMD5をかければ連投さけれるな・・・
例えば
12a6de24c6aec73c5c23da03c135a3c0.png
12a6de24c6aec73c5c23da03c135a3c0.txt
つーのをつくって、12a6de24c6aec73c5c23da03c135a3c0.txt
ファイル名を記述しとく。
ayaya.png
とか・・・
んで、statなりつかってリネーム、txtファイルは削除とかどうよ・・・
0530477
03/05/03 01:43ID:???ありがとうございます^^
配列を配列に入れられる物なんですね〜、、
下半分はまだ駆け出しにはよくわかんないのでメモして調べて見ます、
あと、質問です、、
-----------------------------------------
@gyou([〜間〜'day'],
[〜間〜'20030202'],
[〜間〜'20021231'],
[〜間〜'20030101'],
);
for ($i = 0; $i <= 51; $i++) {
$j += $i;
if ($head[$i][7] < $head[$j][7]){
@temp1 = @head[$i];
@head[$i] = @head[$j];
@head[$j] = @temp1;
}
}
------------------------------------------
日付順に並べかえしようと思ったんですが、1部しか並べ変わりません、、
(日付をわざわざ打つのも自動にできればいいけど無理でしょうか?、
それはそれで、
入替えってすぐ頭がこんがらがってしまって上手く構想さえ練れません、、
52列は有るんですが、変数i+1 i+2 i+3 〜〜 と52個取得して
forを51度も置いて並べ替えしなきゃだめでしょうか?、
前教えてもらった$〜[○,○]での変換がまだ上手く使えなくって・・T T
できれば助言ください〜、、
0531250
03/05/03 02:15ID:???何故に@gyou なのに@headをソートしてるにょ?
それはおいといて、もっと簡単に
@gyou([〜間〜'day'],
[〜間〜'20030202'],
[〜間〜'20021231'],
[〜間〜'20030101'],
);
@gyou = @gyou[sort{ $gyou[$a]->[7] <=> $gyou[$b]->[7]} 0 .. $#gyou ];
これでいけるよ。
0533477
03/05/03 12:42ID:???実はややこしい配列使ってるからちょっと内容変えてたらミスを TT
内容変えてた性と構文と専門用語よくわかってないせいでまったく動かずパニック、
ちょっと別の手段さぐってみます T T
ごめんなさい、、
0534477
03/05/03 12:58ID:???Sortのこと調べてたら$aと$bはSort用のなんですね、、
forで$aつかって$b += $aなんて作ってたから動かなかったみたいです、
繰返したりしなくても単品で全て入れかえるんですね、、
C++少しかじったのが仇になった気分です、
中身を宣言しなくてもいい変数が有ると覚えておきます、(_ _、
ありがとうございました〜、
0535nobodyさん
03/05/03 13:07ID:???perlでクッキー使わずにセッション管理って出来るのかな?
URLでセッションIDとかを引き継ぐのもアレだしどうしたもんかと
>1:自分はこう言う事がしたい
適当なページでログインした後はログイン状態の維持
スレ違いだったらスマソ
0536動画直リン
03/05/03 13:10ID:TBhkUsV+0538535
03/05/03 14:06ID:???やっぱそれぐらいしか無いのね・・・
出来ればhtmlはそのままでSSIぐらいで片付く方法探してたんだけど
リンク元・ホスト・IPなんかで絞る方法ってのも無理だろうなぁ・・・
0539nobodyさん
03/05/03 21:04ID:???こっちかなーっと迷ったのですが、とりあえずここで聞いてみます。
perlで書かれてる掲示板スクリプトで、書いて読む(読み込む記事数を指定できる)だけの簡単なやつをだれか知りませんか?探したんですが、どれも何か実用できるような機能がついていたので...
勉強に使います。
誰か教えてください、お願いしますm(_ _)m
0540nobodyさん
03/05/03 21:10ID:???0541動画直リン
03/05/03 21:10ID:TBhkUsV+0542途方にくれています
03/05/03 22:51ID:40KqJ28qcgiファイルに書いてたときは問題なく動いてたのですが
関数をplファイルに移し変えたとたん↓の行が動かなくなりました。
select(SOCKET); $|=1; select(stdout);
なんもエラーメッセージ出てないが、ここで処理が中断されてしまう。
なぜ?
0544nobodyさん
03/05/03 23:11ID:???0545542
03/05/03 23:19ID:40KqJ28q0546nobodyさん
03/05/03 23:25ID:???そこで処理が中断されている証拠を見せろ。
予想では君の証言が間違ってる。
恐らくスクリプトが実行すらされていないんだろう。違いますか?
0547542
03/05/03 23:35ID:40KqJ28q# URL分解
$SrcFileName =~ /http:\/\/([^:\/]*)(:([0-9]+))?(\/.*)?/;
$host = $1;
$port = ($3 ne "") ? $3 : 80;
$path = ($4 ne "") ? $4 : "/";
# 接続先情報構築
$addr = (gethostbyname($host));
$name = sockaddr_in($port,inet_aton($host));
# 接続
print "0<br>";
socket(S, PF_INET, SOCK_STREAM, 0);
print "1<br>";
connect(S, $name);
print "2<br>";
binmode(S);
print "3<br>";
select(S);
print "4<br>";
$| = 1;
print "5<br>";
select(stdout);
print "6<br>";
実行すると"3"までプリントされる。
サーバのerror.logには
DBD::mysql::st execute failed:
が出てるけど関係ないよなぁ〜?
0548542
03/05/04 00:12ID:???0549nobodyさん
03/05/04 00:14ID:???0550nobodyさん
03/05/04 00:23ID:GUaqk5wHSSIコマンドでCGI/SSIが動く他サーバにあるCGIを動かせて処理結果を
Aサーバのサイトに表示させたいんですがどうすればよいでしょうか?
exec cgiでフルパスを指定したんですが間違いですか?
他サーバにはちゃんとcontent-typeヘッダの出力はしてます。
同じサーバにおいたらちゃんと実行できたのでプログラムの処理自体はまちがってないはずなんですが
0551nobodyさん
03/05/04 00:32ID:???0552542
03/05/04 00:34ID:???>>549
まだ何も解決してないyo!
たとえば、
「Perl サブルーチン集」
ttp://www.antun.net/tips/cgi/perl.html
ここにあるget_homepageをcgiファイル上にコピペして
(すこしバグ修正して)動くようにする。
で、get_homepageを別のplファイルにカット&ペースト。
するとアラ不思議。
select(SOCKET); $|=1; select(stdout);から先が動かねええぇっ!!
なぜ?
0554nobodyさん
03/05/04 00:37ID:???まぁ、スレ違いなのだが。
0555nobodyさん
03/05/04 00:38ID:???>関数をplファイルに移し変えたとたん
だからどこか間違ってるんだろ。
一部分だけ書いてなぜって聞かれて誰がわかるってんだ。
0559542
03/05/04 00:56ID:???たとえばどういうとこが?
ちなみに
select(SOCKET); $|=1; select(stdout);
のあたりはWebページ読み込みの紋切り型の処理の一部のようだから
判る人にはわかるにちがいないと思ったんだよ〜。
もしかしたらpl化するときのFAQ的なことなんじゃないだろうかと思ったので
バグがどうとか言うより、plではselectがうまく動作しないとかいうことがあるのかな、とか
そんな話が聞きたかった。
0560nobodyさん
03/05/04 01:00ID:???>バグがどうとか言うより、plではselectがうまく動作しないとかいうことがあるのかな
そんなことはない。
どっちにしても全ソース晒さなければ答えようがない。
0561nobodyさん
03/05/04 01:26ID:???.plがCGIとして実行されていないのでは?
どうせsub get_homepageに渡す引数は$ENVから取ってるんでしょ?
空っぽだったりしてね。
0562nobodyさん
03/05/04 01:27ID:???0563連カキすまそ
03/05/04 01:30ID:???>>547を見る限り変な改造してそうだ。
print "0<br>";
の前に
print "$SrcFileName<br>";
print "$host<br>";
print "$port<br>";
print "$addr<br>";
print "$name<br>";
を付け足して.cgi,.pl両方の結果を晒してみろ。
0564542
03/05/04 01:51ID:???552のソースで実験したもの。
cgi版
address = http://www.geocities.co.jp/AnimeComic-Tone/4606/index.html
host = www.geocities.co.jp
port = 80
addr = メ兀セ
name = Pメ兀セ
pl版
address = http://www.geocities.co.jp/AnimeComic-Tone/4606/index.html
host = www.geocities.co.jp
port = 80
addr = メ兀セ
name = Pメ兀セ
0565542
03/05/04 01:53ID:???#! /usr/local/bin/perl
require "test2.pl";
use Socket;
{
# HTMLヘッダ
print "Content-type: text/html\n\n";
print '<html><head>'.
'<meta http-equiv="content-type" content="text/html;charset=x-sjis">'.
'<title>$strProject</title>'.
'</head><body>';
if ( 1 )
{
# cgi版
my $html= get_homepage('http://www.geocities.co.jp/AnimeComic-Tone/4606/index.html');
print "$html<br>";
}
else
{
# pl版
my $html= &test2'get_homepage('http://www.geocities.co.jp/AnimeComic-Tone/4606/index.html');
print "$html<br>";
}
# HTMLフッタ
print '</body></html>';
exit;
}
#この後ろにget_homepageが来る
#ただし、return値は $homepage{"body"} にしてある
0566542
03/05/04 01:55ID:???package test2;
use Socket;
$system_agent = 'unknown';
sub get_homepage
{
# get_homepage
# ただし、return値は $homepage{"body"} にしてある
}
1;
0569250
03/05/04 05:40ID:???を指定してるところを書き変えてないとかしょーも無いところでないの?
おおよそ、解ってないんであればソースを全部アプロダなりに上げるぐらいするべきでは?
スレ汚れすぎてみる気もせんわい・・・
0570nobodyさん
03/05/04 10:37ID:???コーディングミスしかないわな
0571nobodyさん
03/05/04 18:11ID:???代入された値が数字でないものを
インクリメントするというのはどういうことなのでしょうか?
0574nobodyさん
03/05/04 21:17ID:SY2E/p10use Socket;
my $host = 'live2.2ch.net';
my $port = 80;
my $path = '/news/subback.html';
〜省略〜
print SOCKET "GET $path HTTP/1.0\r\n";
print SOCKET "\r\n";
while (<SOCKET>){
m/^\r\n$/ and last; }
print "Content-type: text/html\n\n";
while (<SOCKET>){
print ($_);
}
socketでニュー速のsubback.htmlを取得したいのですが,
変なページに飛ばされてしまいます.
イラク情勢のsubback.htmlは問題なく取得できるのですが・・
どうやったらニュー速のsubback.htmlを取得できるんでしょうか?
0575nobodyさん
03/05/04 21:24ID:???GET /news/subback.html HTTP/1.1
Host: live2.2ch.net
を出してるみたいだね
0576nobodyさん
03/05/04 21:33ID:SY2E/p10print SOCKET "GET $path HTTP/1.1\r\n";
print SOCKET "Host: live2.2ch.net\r\n";
print SOCKET "\r\n";
こんなふうにしたらできるようになりました.どうもありがとうございました.
0577nobodyさん
03/05/04 21:37ID:???複数同時にやって処理を高速化したいと考えています。
forkを使って作ってみたのですが、プロセスの終了を待たずに
forkを繰り返すスクリプトでは、どうしても途中でエラーになってしまいます。
(win2kでActivePerlを使用)
forkを使う何かうまい回避方法か、
forkを使わないなるべく簡単な方法はありませんか?
0579nobodyさん
03/05/04 22:48ID:???子プロセスのプロセスIDを知ってるのが子プロセスだけなので、
自殺してもらうしかないような気がします。
っていうか、exitはさせてます。でもゴーストが溜まります。
0581nobodyさん
03/05/04 22:52ID:???Windows2000だと違うのか?
0582bloom
03/05/04 23:10ID:c6ZqX6LO0583nobodyさん
03/05/04 23:15ID:digHu/wF0584nobodyさん
03/05/04 23:22ID:???どのバージョンか知らんが、Windows版ActivePerlのforkは
いくつか注意点あるぞ。
0585nobodyさん
03/05/04 23:25ID:???孫プロセス:やりたい処理(GETでファイルをとってくる)。
親プロセス:子プロセスをwait待ちのあと、子をkill。
孫は自分の親を失ったときから孤児になり、あとは孤児院(ていうかOS)が面倒をみてくれる。
と思う。わからんけど。
0586nobodyさん
03/05/04 23:55ID:???あ、そうですね。なんか逆に思ってた。
unless ($pid = fork()) {子}
という書き方をしたからか。
>>585
forkを二段にするのは、やってみれとどこかに書いてあったので
試してみましたが、結果は同じでした。
そらそうだろうなあ、とその時は納得したのですが、
OSが孫の面倒を見てくれるという背景があるとは知りませんでした。
かなり処理系に依存しそうな話なので、うちでは無理なのかもしれません。
という感じで fork に頼るのは半ば諦めているのですが、
fork 以外の方法もお願いします。
system() で別のperlを呼んじゃうのもアリかな、と考えてますが。
0588nobodyさん
03/05/05 01:22ID:???できないかな、と思ったんですが。
そうすると、本当に例えば10のソケットを作って、
順番に様子を見ていく、みたいな処理を書かないといけないのかな。
print SOCKET
だけしといて、
<SOCKET>
は後回しにして、whileは使わずにEOFを調べる、みたいな。
0589nobodyさん
03/05/05 05:19ID:LXl5aCv3htmlで作ったForm(input,textarea,select,radio,submitとか)のデータを
受け取ったり逆にデータ手渡す方法orガイドしてるHPとかないですか?
JavaScriptでは作った事有るんですがやっぱりCGIだとかなり便利だし、
何か知ってる方いらっしゃられたら些細な事でも教えて下さい、、
0590nobodyさん
03/05/05 05:42ID:???0591nobodyさん
03/05/05 05:44ID:???とりあえずこれ
http://www.google.com/search?as_q=perl+&num=100&hl=ja&ie=UTF-8&oe=UTF-8&c2coff=1&btnG=Google+%E6%A4%9C%E7%B4%A2&as_epq=%E3%83%87%E3%83%BC%E3%82%BF%E3%82%92%E6%B8%A1%E3%81%99%E6%96%B9%E6%B3%95
0592初心者です
03/05/05 10:25ID:MabQ6h0K自分が幾つか持っているHPの日記に一度に書き込みをしたいのです。
それでperlで書いてみたんですけど、
foreach $bbslist (@bbs){
print "Location: $bbslist\n\n";
}
@bbsの中身はhttp://〜から記述した内容がget形式で渡されています。
で、このソースを実行すると1つめの日記に書き込みをした時点で、
処理が終わってしまい、次の日記を書きに行ってくれません。
Locationは一度実行すると処理を終えてしまうようなことを
どこかで見かけた気がしますが、それなら、どのように書けばいいのでしょうか?
どなたか教えてください。
0593nobodyさん
03/05/05 10:36ID:???荒らしスクリプトっぽいからダメ。
0594初心者です
03/05/05 10:38ID:MabQ6h0Kああ、そうなるのですか・・・
言われてみればそうですね。
変なこと尋ねて申し訳ありませんでした。
0595nobodyさん
03/05/05 10:44ID:???これ以上は言わん。
0596bloom
03/05/05 11:10ID:lHdchtO/0597nobodyさん
03/05/05 11:25ID:???0598nobodyさん
03/05/05 11:43ID:???perlをwinにインストールしようと思い、以下のサイトに行きました。
http://www.activestate.com/
英語は全く読めないのですが、勘で進みました。
するとダウンロードの所に2種類あるではありませんか。
ActivePerl 5.8.0 build 806
Windows MSI 11.5MB
Windows AS package 11.4MB
意味が分かりません。
MSIと、ASは、なにが違うのでしょうか?
よろしくお願いします。
0599nobodyさん
03/05/05 11:47ID:???自分はスキルがあるのに実力が発揮しにくいです。
0600nobodyさん
03/05/05 11:51ID:???ここ、コーディングのスレなんだけど・・・
まぁ、MSIのほうダウンロードしといたらええよ。
で、ダブルクリックしたらインストール始まる。
ただし使ってるWindowsの種類によってはMicrosoftのサイトから
Windows Installerのファイルを落としておかないとインストールできない。
このへんのことは検索したらwindowsマシンへのActivePerlのインストール
方法を解説してるサイト見つかると思うので、あとは自力でがんばって
0602nobodyさん
03/05/05 13:11ID:eAEbJzW0ありがとうございます^^
検索下手には嬉しいHit結果です、お手数かけました〜、
0603_
03/05/05 13:25ID:???! i iノノリ)) 〉
i l l.´ヮ`ノリ <先生!こんなのがありました!
l く/_只ヽ
http://www.japan.pinkserver.com/kaorin/hankaku/hankaku07.html
http://japan.pinkserver.com/kaorin/zenkaku/index.html
http://www.japan.pinkserver.com/kaorin/hankaku/hankaku08.html
http://japan.pinkserver.com/kaorin/hankaku/hankaku10.html
http://www.japan.pinkserver.com/kaorin/hankaku/hankaku07.html
http://japan.pinkserver.com/kaorin/hankaku/hankaku03.html
http://www.japan.pinkserver.com/kaorin/hankaku/hankaku05.html
http://japan.pinkserver.com/kaorin/hankaku/hankaku01.html
http://www.japan.pinkserver.com/kaorin/hankaku/hankaku06.html
http://japan.pinkserver.com/kaorin/hankaku/hankaku04.html
http://www.japan.pinkserver.com/kaorin/hankaku/hankaku09.html
0604nobodyさん
03/05/05 14:35ID:eAEbJzW0文字列に直すと整数の桁数が不安定で1/100から切れたり1/10から切れたりします、
どうすればいいでしょうか?、
0605nobodyさん
03/05/05 14:42ID:???0606nobodyさん
03/05/05 14:56ID:???他サーバで処理させたカウントを
CGIの動かないサーバに置いてあるページ内にgifをつかって表示させるには
どうしたらいいでしょうか
0608_
03/05/05 15:06ID:???|: ̄\(∩´∀`) \ <先生!こんなのがありました!
|:在 |: ̄ ̄ U ̄:|
http://www.japan.pinkserver.com/kaorin/moe/jaz09.html
http://japan.pinkserver.com/kaorin/mona/index.html
http://www.japan.pinkserver.com/kaorin/moe/jaz10.html
http://japan.pinkserver.com/kaorin/moe/jaz08.html
http://www.japan.pinkserver.com/kaorin/moe/jaz07.html
http://japan.pinkserver.com/kaorin/moe/jaz03.html
http://www.japan.pinkserver.com/kaorin/moe/jaz05.html
http://japan.pinkserver.com/kaorin/moe/jaz01.html
http://www.japan.pinkserver.com/kaorin/moe/jaz06.html
http://japan.pinkserver.com/kaorin/moe/jaz04.html
http://www.japan.pinkserver.com/kaorin/moe/jaz02.html
0609bloom
03/05/05 15:10ID:lHdchtO/0610bloom
03/05/05 15:10ID:lHdchtO/0611nobodyさん
03/05/05 15:47ID:eAEbJzW0$aはsortのみたいに書き変えないでいい物かと思って失敗しましたけど
違うんですね、、
それにperlにも整数に直すint型が有るんですねー。(C++かじった事有)
これで小数点に悩まされずに済みます、ありがとうございました〜
0612nobodyさん
03/05/05 16:03ID:???0614nobodyさん
03/05/05 16:29ID:???無型流自由殺法
0615nobodyさん
03/05/05 17:53ID:???これまで1か0のフラグとして使っていた変数$aの真偽を判定するのに
if($a == 1)
と記述していたのですが、もしかして
if($a)
だけでも良いのでしょうか。良いのならコードがかなりすっきりするんですが…。
良い、悪いだけでも結構ですので、どなたか教えていただけませんでしょうか。
0616nobodyさん
03/05/05 17:57ID:???か
if ($a & 1){ hoge; }
が正解でつ。
0617nobodyさん
03/05/05 18:03ID:???真偽判定だけならそれでもかまわない。
ないとは思うが、
if(1) # 真
if(0) # 偽
if('') # 偽
if('0') # 偽
if('00') # 真
こういうワナもあるので注意。
0618nobodyさん
03/05/05 18:38ID:???if ($a)
とやると、$a = "0" の罠にはまる。
0619nobodyさん
03/05/05 18:40ID:???動かないスクリプトとか、普通に出回ってそうだ
0621nobodyさん
03/05/05 19:14ID:???こんな感じの。うちではちゃんと動くけど。
0622615
03/05/05 19:38ID:???トラップに陥らないよう注意して、書き直していこうと思います。
0623Dream ☆
03/05/05 21:39ID:???【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
1:自分はこう言う事がしたい。
2:それでこんな風にやってみたが・・・
3:それだとこんなエラーが出て上手く行かなかった。
最低でも1と3が無いと誰も答えられないよ。
良い回答は良い質問から。一緒に勉強しましょう。
0624nobodyさん
03/05/06 01:24ID:???607さんのいったカウンタのリンクを貼るってどういうことですか?
レンタルカウンタ色々みたけど、どれがどれなのか。。。
0625nobodyさん
03/05/06 01:26ID:???プログラム覚えるのと、英語覚えるのどっちが難しいですか?
両方出来る人が居たら、教えてくだしい
0626nobodyさん
03/05/06 01:34ID:???0627nobodyさん
03/05/06 01:36ID:???このスレで聞くのがいいんじゃないか?
0628nobodyさん
03/05/06 01:41ID:???0630nobodyさん
03/05/06 18:03ID:39bU8fpCPerl←の読み方教えてぇーペリ?ピール?
0631nobodyさん
03/05/06 18:04ID:39bU8fpC0632nobodyさん
03/05/06 18:24ID:???0635nobodyさん
03/05/06 21:19ID:???0636nobodyさん
03/05/06 21:32ID:???と
$value =~ /./g;
って、同じと考えていい?
なんか違いある?
0637nobodyさん
03/05/06 23:25ID:Bmqf5moKこれ↓を
SELECT * FROM MEMBER WHERE {NAME='[personName]' AND }AGE=[age]{ AND TEL='[tel]'} ORDER BY AGE;
こういう風に
SELECT * FROM MEMBER WHERE AGE=[age]{ AND TEL='[tel]'} ORDER BY AGE;
変換したいのですが下記ではだめなのでしょうか。
/\{.*?\[personName\].*?\}//
0639nobodyさん
03/05/06 23:58ID:5MrMxTMp送信元がメールソフトででませんねぇ。
ロリポなんだが、
anonymous@lolipop.jpってなる。
sendmailするとanonymousになっちまうのか?
ちなみに、
print MAIL "From: $address\n";
とやりました。
0640nobodyさん
03/05/07 00:56ID:???$mailprog = '/usr/lib/sendmail';
open(MAIL,"| $mailprog -t") || &error("メール送信に失敗しました");
print MAIL "To: $mailto\n";
print MAIL "From: $email\n";
print MAIL "MIME-Version: 1.0\n";
print MAIL "Content-type: text/plain; charset=ISO-2022-JP\n";
print MAIL "Content-Transfer-Encoding: 7bit\n";
print MAIL "X-Mailer:r\n\n";
close(MAIL);
0641nobodyさん
03/05/07 02:08ID:???0643nobodyさん
03/05/07 05:35ID:???ファイル出力時に機能せず,エスケープシーケンスのまま
出力されます.環境はWin2000sp3,ActivePerl v5.6.1です.
#input.txt(sjis)
\t\t\n\n
#test.pl(sjis)
open(IN, "input.txt");$command=<IN>;close(IN);
open(OUT, "> output.txt");print(OUT "$command");close(OUT);
test.plを実行すると,output.txtには見事に「\t\t\n\n」と出力されます.
願わくばタブタブ改行改行と出力されて幸せになりたいです.
おいらは何か勘違いしているでしょうか?
0644nobodyさん
03/05/07 08:16ID:???$command =~ s/\\t/タブ/g;
$command =~ s/\\n/改行/g;
open(OUT, "> output.txt");print(OUT "$command");close(OUT);
open(IN, "input.txt");$command=<IN>;close(IN);
$command =~ s/\\t/\t/g;
$command =~ s/\\n/\n/g;
open(OUT, "> output.txt");print(OUT "$command");close(OUT);
0645へるぷみー
03/05/07 16:32ID:IktPSMvp> Microsoft-Outlook-Express-Macintosh-Edition/5.02.2106
> Microsoft-Outlook-Express-Macintosh-Edition/5.0.6
のメーラーを使用している方から文字化けの報告があります。
件名は問題なく日本語でも文字化けしていないのですが、本文がぐちゃぐちゃです。
http://www.c-5.ne.jp/~itsuki/ の"Code Check"を使用して、
機種依存文字のチェックもしましたが、問題ありませんでした。
Microsoft-Outlook-Express-Macintosh-Editionに問題があるのかもしれませんが、
以下にソースを書きますのでプログラムに問題があれば教えて下さい。
解決方法をご存じの方、是非宜しくお願い致します。
0646へるぷみー
03/05/07 16:33ID:IktPSMvp$send_subject = "サブジェクト";
$send_text = <<__EOF__;
日本語の本文
__EOF__
&jcode'convert(\$send_text,'jis');
&jcode'convert(\$send_subject,'jis');
$Subject = &mimeencode($send_subject);
$SendMessage .= "To: <$MailAdr>" . "\r\n";
$SendMessage .= "From: <from\@hogehoge.com>" . "\r\n";
$SendMessage .= "Subject: $Subject" . "\r\n";
$SendMessage .= "MIME-Version: 1.0" . "\r\n";
$SendMessage .= "Content-Type: text/plain; charset=ISO-2022-JP" . "\r\n";
$SendMessage .= "Content-Transfer-Encoding: 7bit" . "\r\n";
$SendMessage .= "\r\n";
$SendMessage .= $send_text;
open MAIL,"|/usr/lib/sendmail -t -i -f from\@hogehoge.com";
print MAIL $SendMessage;
close MAIL;
0647nobodyさん
03/05/07 17:55ID:???か
メール本文 =~ s/\r//g;
でどうよ。
・・・・・自信なし。
0648nobodyさん
03/05/07 22:23ID:???0650648
03/05/07 22:30ID:???0651639
03/05/07 23:24ID:BGSRMxiAopen(MAIL, "| $sendmail -t");
print MAIL "TO: $email\n";
print MAIL "Subject: $mailsubject\n";
print MAIL "Content-Type: text/plain;\n\n";
print MAIL "名前: $mailname\n";
print MAIL "From: $mail\n";
print MAIL "$mailbody\n";
print MAIL "$addr\n$age_a{\"$age\"}\n";
close(MAIL);
これで、送信元がちゃんとでるはずなんですけど・・・
でませんね
0652nobodyさん
03/05/07 23:26ID:???んなこたぁない。
\n=・だと、本気で思ったのなら、ちょっと笑ってしまう・・・(w
どういう環境なのかさっぱり書いてないな・・・。
質問の仕方悪い。
ソースの文字コードは?
ファイルに出力して・になるの?
デフォルト標準出力で・になるの?
もっと、詳しく書いてくれないと分からない。
0654639
03/05/08 01:03ID:YKg4v/HNそうなんですか。本にかいていた通りにやったんですが、、、、
おまけに、本には、メーラーの画像で送信者でてるし。
-tとか詳しく教えてくれませんか?
0655nobodyさん
03/05/08 04:20ID:???漏れも-t しか指定してないが、fromは出るぞ。
漏れのを貼っておく。
$mailhead = <<EOF;
Received: This mail is sent from Democratic People's Republic of Korea.
EOF
$mailhead .= "From: $namefrom <$mailfrom>\n";
$mailhead .= "To: $nameto <$mailto>\n";
$mailhead .= "Subject: $subject\n";
$mailhead .= "Date: $date\n";
$mailhead .= "MIME-Version: 1.0\n";
$mailhead .= "Content-Type: text/plain; charset=\"iso-2022-jp\"\n";
$mailhead .= "Content-Transfer-Encoding: 7bit\n";
$mailhead .= "X-Priority: $priority\n";
$mailhead .= "X-Mailer:Microsoft Outlook Express 7.00.0000.0300\n";
if (-x $sendmail){
unless (open(OUT, "| $sendmail -t")){
&error('送信エラー','メールの送信に失敗しました。');
}
unless (print OUT &mimeencode($mailhead)){
&error('送信エラー','メールの送信に失敗しました。');
}
unless (print OUT $mailbody){
&error('送信エラー','メールの送信に失敗しました。');
}
close(OUT);
}
0656nobodyさん
03/05/08 05:21ID:0p+XQofHたため、質問させてください。
プログラムの設定ファイル等の使いまわしをきかせるため、
各ファイル構成を下記のようにディレクトリ分けしました。
public_html
|- cgi(プログラム)
|- template(テンプレート)
|- common(設定ファイル等)
|- image(画像)
common内のconfig.plには、
$template_dir = '/public_html/template';
$image_dir = '/public_html/image';
と各種ディレクトリ情報が格納されており、
これの設定ファイルを全プログラム内でrequireして、各種ディレク
トリ名等が変更されても、config.pl内の記述を変更するだけで済ま
せられるようにしております。
しかしこの場合、commonディレクトリ名が変更された時だけ、
全プログラムのrequire記述を変更しなければなりません。
なにかよい解決方法があれば、どうかご教授いただけないでしょ
うか。
頭悪い質問ですみませんが、どうか宜しくお願いいたします。
0657nobodyさん
03/05/08 06:32ID:???普通、そういう初期設定とかは、mainパッケージ内に記載するか、
mainパッケージと同じディレクトリに置いておくような物だと思うが・・・
こんなことしたら、ぜんぜん意味なくなるだろうが・・・
require専用の設定ファイルを作って、それをmainパッケージと同じディレクトリに置いて、
すべてのファイルで、そのrequire専用設定ファイルを呼び出すってのはどう?
0659648
03/05/08 07:32ID:???言葉足らずですみません
foreach(@deeta){
$E = $_; $C = $_;
$C =~ s/([0-9]{9,}) (.*)/$1/i;
if ($C < $jikan) {last;}
$E =~ s/([0-9]{9,}) (.*)/$1<>$SABA<>$ITA<>$2<><>\n/i;
$honbun.= $E;
}
open(FILE, ">come1.dat") or die;
print FILE $honbun;
close(FILE);
としてから、come1.datをメモ帳で開くと\nがになってダラダラと一文が…
ソースの文字コードは SHIFT-JIS です。
0660nobodyさん
03/05/08 07:41ID:???それどこで実行してるんだ?\nがLFになってるから認識できないんだろう。
メモ帳が認識する改行コードはCRLFだったはず。
0661648
03/05/08 07:51ID:???0662nobodyさん
03/05/08 08:07ID:???Windows上で実行すると\nはCRLF(0x0D 0x0A)になる。
Mac上で実行すると\nはCR(0x0D)になる(の?Mac持ってないから知らん)
UNIX系とLinuxはLF(0x0A)になる。
0663nobodyさん
03/05/08 08:08ID:???---
●どのようなサーバー?どんな環境?
最新LinuxにApache、qmail、ProFTPDをアレンジした仕様になっています。
---
改行を表すエスケープシーケンス"\n"は
Linux環境でLF(0x0A)として出力されるわけです。
Windows標準の(メモ帳で開ける)改行コードはCR+LF(0x0D+0x0A)なので、
それ相応の書き方をしなければなりません。
書き方は検索してけれ。
0664nobodyさん
03/05/08 09:15ID:???0665nobodyさん
03/05/08 10:54ID:???CGIで、csvファイルをzip圧縮したものを吐き出したいと思ってます。
#! /usr/bin/perl
print "Content-type: application/x-csv\n";
print "Content-Disposition: inline; filename=ahya.csv\n\n";
print "hoge,hoge\n";
exit;
でcsvの吐き出しはできたのですが、
これをzip圧縮して吐き出すにはどうすればいいでしょうか?
0666nobodyさん
03/05/08 11:11ID:???http://www.memb.jp/~deq/perl/doc-ja/Archive-Zip.html
http://pc.2ch.net/tech/kako/1006/10069/1006910650.html
の>>102以降とか。
0667665
03/05/08 11:33ID:???ありがとうございます。
zipファイルを圧縮するのはsystem関数でもできるんですが、
zipファイルをディスク上に作っちゃいますよね?
それをさせないで、直でブラウザに吐き出すのって無理でしょうか?
Archive-Zipも一度ディスクに作るようなので。。
0668nobodyさん
03/05/08 11:38ID:???環境がわからんが、シンボリックにしる>common -> 変更後のディレクトリ
>>659
メモ帳で開くからややこしい。
改行コードを認識するアプリで開けるれ。
0669nobodyさん
03/05/08 11:44ID:???行末の'(なんとか)'というのを削除したいです。
s/(.+?)$//;
だとだめでした。
s/\Q(\E.+?\Q)\E$//;
もだめでした。
s/(.+)$//;
だとまっちするようですが、当然、行中のものにマッチしちゃうので
困ります。どうしたらいいでしょうか。
0672nobodyさん
03/05/08 12:38ID:???0674nobodyさん
03/05/08 12:49ID:???行末と言っているが、改行を削除し忘れてたりしてないか?
0675nobodyさん
03/05/08 12:50ID:???$line = $_;
$line =~ s/(.+)$//;
print "$line\n";
0677nobodyさん
03/05/08 13:03ID:???では、なぜ、s/(.+)$//;はまっちするんでしょうか。
>>674
chompやchopもやりましたし、文字コードもsjisとeucで
試しましたが、だめです。
>>675
>>673に挙げたテストデータでやってみれば分かりますが、
これでは、マッチしません。それに、うまくいったとしても
(.+)では、最初の括弧からマッチしてしまいます。
>>675
すべて削除してやってます。
「ローカル」って?CGIじゃないです。
0678nobodyさん
03/05/08 13:07ID:???s/(.*)(.*?)\s.?$/$1/;
print;
}
__DATA__
木立(こだち)のなかに(夏目弱石)
山の上の芋粥(いもがゆ)(芥川蛇の介)
0679nobodyさん
03/05/08 13:15ID:???私の環境ではsjisにしても、eucにしてもだめです。
$ perl test1.pl
木立(こだち)のなかに(夏目弱石)
山の上の芋粥(いもがゆ)(芥川蛇の介)
$ perl test1.pl |nkf -s
木立(こだち)のなかに(夏目弱石)
山の上の芋粥(いもがゆ)(芥川蛇の介)
なぜでしょうか。
0682nobodyさん
03/05/08 13:36ID:???>>675では、
木立
山の上の芋粥
となるでしょう。
これがあなたの期待なのですね。求められているのは、
木立(こだち)のなかに
山の上の芋粥(いもがゆ)
ですよ。
0684nobodyさん
03/05/08 13:50ID:???もう逝っちゃったかな?
jcode::tr(\$_, '()', '()');
s/\([^\(\)]+\)\n$/\n/;
jcode::tr(\$_, '()', '()');
print;
0685nobodyさん
03/05/08 14:05ID:???私の環境ではダメでしたか。
っていうか、その「私の環境」を書けよ・・・
最低、OSは何で、Perlのバージョンはいくつくらいは書けるだろ・・・
俺は>>678のソースで正常に動いた。
>>679の環境がおかしいんじゃねーのか?
0686nobodyさん
03/05/08 14:35ID:???ありがとうです。全角括弧を半角括弧に変えるのならエディタでもできる
のですが、全部Perlでやりたいと。
>>685
私の環境は、cygwin+perl,v5.6.1 built for cygwin-multiです。
>>678のソースは、動くことは動きますが何度やっても求めるものが
出てきません。
0687nobodyさん
03/05/08 15:15ID:???ニコラ・テスラのパクりだろ。( ゚Д゚)
http://plaza16.mbn.or.jp/~satchel/
0688nobodyさん
03/05/08 17:33ID:???0689nobodyさん
03/05/08 19:18ID:???Berryという画像巡回のやつばかりで面白くないんで
Berryからのアクセスを弾く方法を探しています
なんかいい方法ないでしょうか?
imgboard.cgi使っています
0690nobodyさん
03/05/08 19:23ID:???1:自分はこう言う事がしたい。
2:それでこんな風にやってみたが・・・
3:それだとこんなエラーが出て上手く行かなかった。
最低でも1と3が無いと誰も答えられないよ。
良い回答は良い質問から。一緒に勉強しましょう。
0692nobodyさん
03/05/08 21:05ID:???こちとら負荷かけないようにまったりアクセスしてるんだが、
それでも禁止するならしやがれ、というスタンスですな
0693nobodyさん
03/05/08 21:33ID:???0694nobodyさん
03/05/08 21:39ID:???0695nobodyさん
03/05/08 21:41ID:BuFtD7dz0697nobodyさん
03/05/08 22:18ID:???0698nobodyさん
03/05/08 22:52ID:???if(opendir(DIR,"./DAT"))
$dir = @dir = <DIR>;
closedir(DIR);
}else{
print("opendir error");
}
@dirにはファイルが配列で
$dirにはその個数が入ると思うけど・・・
>>695
perlにもgrobあったのか 今知ったわ
こっちのほうがよさそうね
$dir = @dir = glob("./DAT/*");
0699nobodyさん
03/05/08 22:53ID:???0700698
03/05/08 22:56ID:???.と..が入るから
$dirから2引いた数がファイル数ね。
0701nobodyさん
03/05/08 23:03ID:w+g/ULrK前から思ってたのですが、
「Perl」と「URL」
それぞれ何と読むのが正確ですか?
0702nobodyさん
03/05/08 23:08ID:???0705nobodyさん
03/05/08 23:29ID:TaEzP3Hcもう少しでDIがURLだったな
0706nobodyさん
03/05/08 23:46ID:???perlのソートを使おうとしているんですが、微妙に意味が分からない事になりました。
sort {$a <=> $b} @aaa;
数字を並べる時、この書きかたが一般的だと思うのですが、
$aと$bってなんでしょう。
「イツのまに、なにが代入されたのでしょうか?」←これが質問1。
で、実際のソートは、返ってくる数字「-1」「0」「1」の三種類によってsortが返すリストの順番だと思ったのですが、
「それは正解ですか?」←質問2
もし、正解ならば「-1」「0」「1」の三種類が発生する形式ならば可能ですか?
それとも、必ず「$a」「$b」を使うような形式にする必要がありますか?←質問3
詰まる所、$aと$bの中身がよく分からないので、sort自体がよく分からない物になってしまってます。
m(__)m
0707nobodyさん
03/05/09 00:01ID:FPjkEDjh0708nobodyさん
03/05/09 00:02ID:???そうなってるからとしか説明しようないだろうな。
$aと$bは単純に比較する物
本当は関数を別に書いて、そこに登場する
0709Dream ☆
03/05/09 00:04ID:???そうなってるからとしか説明しようないだろうな。
$aと$bは単純に比較する物
本当は関数を別に書いて、そこに登場しる
0710706
03/05/09 00:25ID:???う〜ん。
回答ありがたいのですが、サッパリ分からないです…汗。
>>706の三つの質問の回答を待つと同時に、もう一つ質問させてもらいます。
とあるサイトで調べた所、
>このサブルーチンはソートすべきリスト中の要素2個を渡され、
>何回も繰り返し呼び出され、完全にソートされるまで繰り返す
と、上記のようにかいてありました。
sort {ルーチン} @リスト;
これは「@リスト」が並び替えて返ってくる値であり、
その順番を決めるのが「ルーチン」の部分だと思っています。
で、上に「ソートすべきリスト中の要素2個を渡され」
と書いてありますが、これが$aと$bだとにらんでいます。
この時、$aと$bの内容を自動ではなく、任意で決めることはできないのでしょうか?
いや、任意で決めたいと思っているのですが、そんな必要はないのかな?
0711nobodyさん
03/05/09 00:28ID:???何を言いたいかよくわからんな。
>この時、$aと$bの内容を自動ではなく、任意で決めることはできないのでしょうか?
sort {$aaa[$a] <=> $aaa[$b]} (0 .. $#aaa);
こういう事か?
0713nobodyさん
03/05/09 00:32ID:???の前に$a,$bを使ってるからほかの変数使いたいって事か?
0714nobodyさん
03/05/09 00:37ID:WPk5KKvTで、$ENV{'TZ'}="JST-9"をやると日本時間で計算してくれたので安心してたのですが、
ある日プログラムに“use Time::local”を宣言したら、どうも$ENV{'TZ'}が無効に
されてしまうようで、localtimeで返される値がまた米国時間になってしまいました。
プログラム中のそこかしこでTZにJST-9やGMT-9、Japanを指示してもダメです。
これは、こういうものなのでしょうか。それとも鯖ごとの設定によるものなのでしょうか。
なにか対策はありますか?
gmtimeにシコシコと9時間分の数字を足すしかないのでしょうか…。
0715nobodyさん
03/05/09 00:40ID:???http://www.parkcity.ne.jp/~chaichan/src/perl07.htm
0716706
03/05/09 00:41ID:???今から、書く事を分かりやすいようキッチリと頭の中で整理して、
ゆっくり書きたいと思いますのでちょっと時間がたってから書きこみ直します。
御迷惑かけてすみません。
0718nobodyさん
03/05/09 00:44ID:???0719nobodyさん
03/05/09 00:45ID:???0720nobodyさん
03/05/09 00:47ID:???0721720
03/05/09 00:48ID:???0722nobodyさん
03/05/09 00:49ID:???0723706
03/05/09 01:04ID:???そこで俺がやりたい事を具体的に書こうと思います。
現在RPGを作ってます。
【@並び替えたリスト = sort {ルーチン} @リスト;】
「リスト」には、戦闘参加メンバーが順番に入ってます。
「並び替えたリスト」は、「リスト」のメンバーを素早さ順にしたいわけです。
ただ、各々の「素早さ」を取得するのが少々めんどうで、素早さが入っている変数名がダイレクトに分からないのです。
${"メンバーデータ$リスト[0]"}{'素早さ'};
こーゆー感じで書いた場合、メンバー一人分の素早さを取り出す事が出来ます。
「リスト」の中には何人いるか分かりませんが、全て戦闘参加メンバーです。
で、もし五人だった場合、
${"メンバーデータ$リスト[0]"}{'素早さ'}から${"メンバーデータ$リスト[4]"}{'素早さ'}
までの「リスト」(全メンバー)を素早さ順に「並び替えたリスト」にしたいのです。
こんな一見単純そうな事で俺の脳はパニックです。汗
ただ、どう書くのか記述自体を教えてもらうよりも、「$a」と「$b」に何が入るのか教えてくれたほうが嬉しいです。
今後のコトもありますので…。
もし、sort関数を使わないで、自作でループの記述があればそれを教えて下さったら、とてもありがたいです。
多少処理が重くても「$a」と「$b」のような理解出来ない(俺には)変数が登場するより安心できますから…。
考えたあげくにこんな説明ですみません。
0724動画直リン
03/05/09 01:10ID:X5KsRuJ+0726nobodyさん
03/05/09 01:33ID:???何がやりたいのかいまいちわからないのだが・・・
@member = ('mona','giko','morara');
%speed = (mona=>15,giko=>100,morara=>3,hoge=>50);
@resalt = sort{$speed{$a} <=> $speed{$b}} @member;
foreach $val(@resalt){
print($val."=".$speed{$val}."\n");
}
こんな感じで
morara=3
mona=15
giko=100
が出力されるが・・・
もしもハッシュに入っている分全部なら @memberじゃなくて keys %speed
とかね・・
0727nobodyさん
03/05/09 01:35ID:???変数名わからないってなんだ?
$speed{ID}
$money{ID}
とかなら楽だろ?
0728nobodyさん
03/05/09 01:43ID:???漏れならこうするっていうのを書いておくよ・・・
%money %hp %speed 用意してまぁ実際には何があるかはしらんが3つだけ
gikoのデータは
$money{giko},$hp{giko},$speed{giko}に代入
戦闘時のメンバーは @member に格納する
残りは726に書いたとおり
@memberじゃなくて keys %hp; にでもすれば
すべての要素がソートされる
0729nobodyさん
03/05/09 01:49ID:???@list = ("mona", "giko", "morara");
%menberdata_mona = (... "speed" => 80, ...);
%menberdata_giko = (..."speed" => 255, ...);
%menberdata_morara = (..."speed" => 50, ...);
@list_by_speed = @listを、素早さにしたがってソートして返す処理; #A
# 得たいもの→ @list_by_speed = ("giko", "mona", "morara");
Aの処理を知りたい。
0730nobodyさん
03/05/09 01:52ID:???というかさ 変数名が増えたり減ったりするのって気持ち悪くない?
ある状況では$gikogikoが宣言されてある状況ではそれが$monamonaになったりするの
って
use strict使ってればそんなのは弾くと思うんだが・・・
0731706
03/05/09 01:58ID:???少しづつ$aと$bが分かってきました。
>>726さんの記述はとっても分かりやすかったです。
>$speed{$a}
この時$aと$bには、引数のリストの中身が自動で順番に代入されているのですね?
で、ルーチンが何回もループされて全部を比べるまで「-1」「0」「1」をはじき出してると…。
正直、かなりすっきりしました。
しかし、変数名がダイレクトに分からないときはどうしたら良いでしょうか?
@素早さ順リスト = ${"メンバーデータ$リスト[$a]"}{'素早さ'} <=> ${"メンバーデータ$リスト[$b]"}{'素早さ'}}@リスト;
これだと明らかに間違いです。
($aと$bの部分には「@リスト」の値ではなく、数字が入るため)
と言うか、しつこく聞きまくって迷惑かけたのであとは自分で調べたいと思います。
ホントありがとうございました。感謝。
0732726
03/05/09 02:03ID:???わからない時はどうするって?
だからわかるようにコーディングするだけなんだけどさ・・・
730が言う様に メンバーが増えるごとにハッシュが増えたりするって言うのは
激しく使いにくいと思うんだが・・・
%menberdata_giko をあえて定義する必要があるのか?
あるのなら
%menberdata_giko=(name=>$name{giko},speed=>speed{giko},money=>money{giko});
こんな風にすればいいんじゃないの?
0733706
03/05/09 02:05ID:???の記述をかなり書き間違えたので訂正しておきます。
@素早さ順リスト = ${"メンバーデータ$リスト[$a]"}{'素早さ'} <=> ${"メンバーデータ$リスト[$b]"}{'素早さ'}}@リスト;
これは、
@素早さ順リスト = sort{${"メンバーデータ$リスト[$a]"}{'素早さ'} <=> ${"メンバーデータ$リスト[$b]"}{'素早さ'}} @リスト;
こうでした。汗
0735706
03/05/09 02:12ID:???そうです、激しく使いにくいです。汗
前回もRPGを作ったんですが、それは1対1の戦闘しかないので超楽でした。
今回は、多数対多数の戦闘をやろうと思って適当に書き始めたのですが、想像以上に複雑になってしまって。汗
適当に考えながら書いてるウチになんとかなるだろ、って軽いノリで始めたのが大失敗でした。。。
ご指摘の通り、全部書きなおすかもしれません…。
なお、たくさんのレスをいただいていますが、現在頭がフル回転でまともに返事返せてなくてすみません。
時間をかけてしっかり考えていきます。
プログラム経験が長くないので明日までパニクってる状態が続くかもしれません。
俺の中でこんな感じに作った経験が全くないので…。
0736706
03/05/09 02:26ID:???>というかさ 変数名が増えたり減ったりするのって気持ち悪くない?
なるほど…。ほとんどperlしかまともにやった事ないのでそうゆう感覚を知らなかったです。
宣言とか全く気にしたコトないし…。汗
勉強になります。
sortを自分の中で納得出来てきたので、そろそろ記述を考えたり書いたりします。
落ちようかと思います。
ホントありがとうございました。たっぷり迷惑かけてすみませんでした。
0737nobodyさん
03/05/09 06:17ID:???0738nobodyさん
03/05/09 07:06ID:???そうしてる。
0739なまら名無し
03/05/09 08:47ID:D4ewNm9iをつくってるんですが、エラーは一切でず、ファイルには何も書き込ま
れてない状況になってます。datのパーミッションも775、755、666、
644、どれにしても結果は同じです。ロックもはずしてみましたが、
だめです。以下に引用をのせます。
$test = "aho";
open(WRITE,">test.dat") || &error('write_file_open_error');
print WRITE $test;
close(WRITE);
入力用のフォームタグ関係も各情報源から調べ、そこのところは問題
ないはずですが。ちなみにサーバー側のエラーログもみましたが、エラ
ーは一切でません。cgiも普通に動作し、ただ書き込みが反映されず、
datに何も書き込まれない状況です。
0741動画直リン
03/05/09 09:10ID:X5KsRuJ+0743nobodyさん
03/05/09 13:19ID:???どうしてハッシュはハッシュっていう名前なんですか?
0744nobodyさん
03/05/09 13:27ID:???ttp://dictionary.goo.ne.jp/search.php?MT=hash&kind=&mode=0&ej.x=35&ej.y=1
0745nobodyさん
03/05/09 14:49ID:???全然答えになってないし。
意味的には「切り刻む」というのが一番近い。
レコードに対するインデックスがランダムに並ぶように
内容に対して一意に決まる数、というのが元の意味。
0747743
03/05/09 15:28ID:???えっと、上の説明で考えてみたんですけど、
$変数が いっこの変数
@配列が ちゃんと並べてある変数の集まり(数字ラベルつき)
%ハッシュが ぐちょぐちょに並んだ変数の集まり(名前ラベルつき)
こんな感じでいいんでしょうか? 変数や配列みたく、日本語の
名前がついてればわかりやすいのになーと思いました。
0749nobodyさん
03/05/09 15:40ID:???0750nobodyさん
03/05/09 15:54ID:???そうなんだ。じゃあコレとかは誤訳なのかな。
http://www.kt.rim.or.jp/%7ekbk/perl5.005/perldata.html
駱駝本 (改訂版) でも「ハッシュ == 連想配列」という訳し方してるけど。
0752nobodyさん
03/05/09 16:45ID:???実際にperlを作るとして、連想配列をどう実現するか。
キーとなる文字列とそれと対になる値を、
発生した順に片端から並べていって、
参照する必要が生じたら端から調べるのかというと、
そんな時間のかかる事はしない。
で、キーをハッシュで数値に変換して、その数値で管理する。
だから、foreachで舐めると登録したのと全然関係ない順番で
出てくるっしょ。
そのバラバラに刻まれ加減が、ハッシュ。
0753nobodyさん
03/05/09 17:22ID:VvqPULTq0754nobodyさん
03/05/09 17:48ID:???http://www.google.com/search?num=100&hl=ja&inlang=ja&ie=Shift_JIS&safe=off&c2coff=1&q=Perl+%83t%83@%83C%83%8B%83e%83X%83g%89%89%8EZ%8Eq+stat%8A%D6%90%94&lr=lang_ja
0755nobodyさん
03/05/09 18:17ID:???まあ、厨にはどうでもいいだろうが・・・
awkやperl4までの多次元配列は、\034を添え字とするハッシュで
実現されていた。
多次元配列(順番の添え字を持ったリスト)をハッシュと言うか?
ハッシュと言うのは、連想配列を実装するアルゴリズムだ。Cでも
何でも使えるアルゴリズムね。つまり、ハッシュ>連想配列。
分かったか。
らくだ本3版でもハッシュを連想配列と訳して、連想配列を索引から引くと、
「後生だから、ハッシュを参照してください。」だって。まあ、いいさ。
0756nobodyさん
03/05/09 18:22ID:???foreach (@BBB) {
処理;
}
}
とやりたいのですが、$_はどっちのが参照されるんでしょう?
0757nobodyさん
03/05/09 18:25ID:???どれも本来の言葉の意味とは違う使われ方をしている。
しかし、どれも間違った使い方でも意味は通じる。
正確な言葉を使うのは大事だが、意味を伝える方がもっと大事。
らくだ本でも連想配列って書いてるなら、それでいいじゃないかと思うけどね。
ハッシュってのがどういうアルゴリズムなのかはちょっと気になるが、スレ違いだな。
0758nobodyさん
03/05/09 18:27ID:???my $i = 0;
{
my $i = 1;
{
my $i = 2;
print $i;
}
}
さーて、表示される数字は、いーくつだ?
0760nobodyさん
03/05/09 18:29ID:2QKJbZwPありがとうございます。
-Mを使うことが分かって、
$datfolder = './DAT';
$date = -M $datfolder;
print "Content-type:text/html\n\n";
print $date;
と、しました。出力結果が
0.787731481481481
と出たのですが、これは何を表してるんでしょうか?
「内容が最後に変更されてからの日数」っていうのはわかるんですが、どれが日で、どれが時間なのかがわかりません。
0761nobodyさん
03/05/09 18:30ID:???foreach my $j (@BBB) {
処理;
}
}
わかりにくかったらこうするといい。
0763nobodyさん
03/05/09 18:31ID:???日数だろ。
0.78日。
てか、リンク先の一番上のページの一番下の方まで見たか?
0764nobodyさん
03/05/09 18:42ID:cYWQsRLcフレームを使っていないpage1.phpというページから、送信ボタンで
page2.phpと言うフレームで2分割されたページへ飛びます。
page2.phplはupper.phpとlower.phpに分割されています。
<form method ="POST" action=page2.php>と記述していますが、
これですとフレーム内のupper.phpで値を受け取れません。
どうすれば良いでしょう。
page2.phpからupper.phpにまた値を渡すのかな?
よろしくお願いします。
0768nobodyさん
03/05/09 19:01ID:???よろしい。
では、次の質問どうぞ。
---------------------------------------------------------
いらっしゃーい、Perlのコーディングで困ってる人のスレです。
【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
1:自分はこう言う事がしたい。
2:それでこんな風にやってみたが・・・
3:それだとこんなエラーが出て上手く行かなかった。
最低でも1と3が無いと誰も答えられないよ。
良い回答は良い質問から。一緒に勉強しましょう。
0769nobodyさん
03/05/09 19:08ID:???一行目→要素の一番目 という風にしたいです。
0770bloom
03/05/09 19:10ID:X5KsRuJ+0771_
03/05/09 19:11ID:???川o・-・)ノ <先生!こんなのがありました!
http://www.yoshiwara.susukino.com/hankaku/hankaku07.html
http://yoshiwara.susukino.com/hankaku/hankaku08.html
http://www.yoshiwara.susukino.com/hankaku/hankaku10.html
http://yoshiwara.susukino.com/hankaku/hankaku07.html
http://www.yoshiwara.susukino.com/hankaku/hankaku03.html
http://yoshiwara.susukino.com/hankaku/hankaku05.html
http://www.yoshiwara.susukino.com/hankaku/hankaku01.html
http://yoshiwara.susukino.com/hankaku/hankaku06.html
http://www.yoshiwara.susukino.com/hankaku/hankaku04.html
http://www.yamazaki.90.kg/hankaku/hankaku09.html
0772nobodyさん
03/05/09 19:12ID:???split
0775764
03/05/09 19:31ID:cYWQsRLcこの際、このままご慈悲深いPerlスレの皆様におすがりします。
>ページへのジャンプとデータの送信先は無関係。
とのことですが、formのaction=のところのアドレスが
ジャンプ先=送信先では無いのですか?
何卒よろしくお願い申し上げます。
0777760
03/05/09 19:43ID:VvqPULTq最後まで見ました。
stat関数でしたほうがイイということでしょうか?
$datfolder = './dat';
@fileinfo = stat ($datfolder);
print "Content-type:text/html\n\n";
foreach (@fileinfo) {
print "$_<BR>";
}
こうしたところ、[ 9 ]の最終変更時間の値が0になってしまいます。
フォルダは指定できないんでしょうか?
0778nobodyさん
03/05/09 19:44ID:???http://www.w3.org/でも見たら幸せになれるかもね。
0781nobodyさん
03/05/09 21:22ID:???2ちゃんねるは回答者が質問者に答えるのが真のプロジェクトです。
真実を求めるとか、どっちが便利とか、使いやすいとか議論するとろくでもない結果になります。
0783nobodyさん
03/05/09 21:47ID:???0784783
03/05/09 21:50ID:???○'2ch'だけ敬意を払って半角にすた。
まぁ語源はともかく、いまやハッシュはハッシュなんだからそれでいいんじゃない?
0787nobodyさん
03/05/09 23:00ID:???systemだと重そうだし、単純にwhileで回してifする以外に効率がいい方法ないですか?
0788nobodyさん
03/05/09 23:08ID:akCR/KC1readdirってのは、どういう働きなんでしょう?
0789bloom
03/05/09 23:10ID:X5KsRuJ+0790nobodyさん
03/05/09 23:16ID:???コマンドって言うなよ・・・
@dir_value = readdir DIR;
とか
@dir_value = glob("*.*");
readdirぐらいは自分で調べれ
0793nobodyさん
03/05/09 23:46ID:???ファイルハンドルじゃなくディレクトリハンドル
と誰もいないうちに訂正しておこう
|Д´)ノ んじゃ
0794nobodyさん
03/05/09 23:57ID:???0795nobodyさん
03/05/10 00:17ID:hCO3mC8T一番早く検索できる方法って有りますか?
郵便番号から住所を検索したいんだけど、
やっぱり1行ずつ調べるしかないのかな?
0796nobodyさん
03/05/10 00:24ID:???データベース使え。
って言うか、普通のファイルでも工夫次第で検索早くなると思うけどねぇ〜・・・。
一つのファイルに10万行もあるからいけない。
最初の三桁づつのファイルに分けるとか・・・。
いろいろあるだろ。
0800nobodyさん
03/05/10 00:58ID:???指定したディレクトリ及び拡張子から該当するファイル名とファイルサイズを取得したいのですが、
ファイル名取得はうまくいくものの、サイズがすべて0になってしまいます。
どこをどう変えたらサイズ取得できるでしょうか?ご指摘お願いします。
##以下ソース
$wdir="C:/hoge"; #対象となるディレクトリ
$sita=".txt"; #対象となるファイルの拡張子
opendir(DIR, $wdir);
while ($file = readdir(DIR)) {
if ($file =~/$sita$/) {
($fsize) = (stat($file))[7];
printf("%s%3dByte\n", $file, $fsize);
}
}
closedir(DIR);
##以上ソース
0801nobodyさん
03/05/10 01:03ID:???なんじゃ?
0803nobodyさん
03/05/10 01:07ID:???欲しいのがファイルサイズだけなら、stat より
ファイルテスト演算子 -s をオススメする。
$fsize = -s $file;
0805nobodyさん
03/05/10 01:48ID:???ありがとうございます。readdir(DIR)した時点でDIRが作業ディレクトリになると勘違いしてました。
>>803
ファイルテスト演算子…こんな便利なものがあったんだ。
やっぱりstat関数より実行効率いいのかな?ググって勉強してきます。
ありがとうございました。
0806760
03/05/10 02:54ID:UeZ9FyDL0807bloom
03/05/10 03:10ID:9fodVbL50808nobodyさん
03/05/10 04:01ID:ceT3ViFL<input ytpe=text name=par rows=1 size=4>で、4桁の数値を入力して渡します。
パーミッションなので(0775など)
それで、CGIで、&ReadParse(*in)で変数に置き換えます$par
そして、
chmod $par, a.txt
とすると、363とかなっちゃいます。
これは、テキストエリアからは数字はこないので、charとして認識されてるんですかね?
0811nobodyさん
03/05/10 06:46ID:???0812nobodyさん
03/05/10 07:24ID:???別のテーブルに移動させる事って出来ますか?
Aテーブルのレコード取得→Bテーブルに同じものを作成→Aテーブルのを削除
今はそうやってるんですけど…。
0813nobodyさん
03/05/10 07:24ID:???oct($par)
0815nobodyさん
03/05/10 11:38ID:???foreach my $D (@tottano){
if ($D eq $maeno[$C]) { $C++; next; } #両方ともあったら次
$E = 1; $H = 0;
foreach my $G (@maeno){ #他の位置にあるかチェック
if ($G eq $D) { $E = 0; $C = $H; $C++; last; } #他の位置にあったら$Cをその次へ
$H++;
}
if ($E) { $F.= $D; $F.= "\n"; }
}
同じようにソートされた@maenoと@tottanoを比較して、
@tottanoにあって@maenoにない→$Fに追加
@maenoにあって@tottanoにない→何もしない
としたいんですが、上のようにすると
@maenoにあって@tottanoにない時が一つでもある場合、
$Fに@tottanoの内容が全て入ってしまうんです。
上のはどこがいけないのか、根本的に間違っているのか、教えてください。
0816250
03/05/10 12:45ID:???見にくいソースなので自己流の書き方にしてみたけど、検証きぼん・・・
foreach my $key (@tottano){
foreach my $list (@maeno){
if($key eq $list){
undef $key;
last;
}
}
if(!undef $key){
$F = $key . "\n";
}
}
0817nobodyさん
03/05/10 12:48ID:ceT3ViFLoctでできたーよ。
ありがと。
あと、パーミッションを$parに変更しました。ってHTMLに出力すると、
unmask?の関係かな、で表示がおかしくなるので、
フォームからは$parmissionで受けて、
$parmission = "$in{'parmission'}";
$ par = oct($parmission);
そして、変更時は
chmod $par, $nameで
表示は$parmission
にしたけど、不具合ないよね?
0819nobodyさん
03/05/10 13:22ID:???これでどう?
myとか端折ってるから適宜追加してちょ
$key{$_}++ foreach (@maeno);
$key{$_} or $F .= "$_\n" foreach (@tottano);
0820nobodyさん
03/05/10 13:22ID:???これが実行されるのは確認できたんですが、"\n"しか追加されないみたいです。
0822821
03/05/10 14:31ID:???ありがとうございました。
0823nobodyさん
03/05/10 15:02ID:sF6xyzVTやっぱり
print使ってCGIから出力するしかないんですかね?
0824bloom
03/05/10 15:10ID:9fodVbL50826nobodyさん
03/05/10 15:41ID:sF6xyzVT詳しくご教授おながいします
0827nobodyさん
03/05/10 15:48ID:???PerlのコーディングスレでSSIの事を聞こうとするという事が
どういう事かわかってるか?
0829nobodyさん
03/05/10 16:58ID:???0831nobodyさん
03/05/10 17:40ID:???0832nobodyさん
03/05/10 18:29ID:???>CGIで…略…不可能でしょうか?
>print使ってCGIから出力するしかないんですかね?
全く意味が分からん。
上の文はCGIで出来るのかを聞く文章で、なおかつCGIで処理を行う事を求める文書。
下のはCGIで出来ると自分で肯定している文書で。なおかつCGIで処理を行いたくないと言ってる文章。
取り敢えず出なおしてきなさい。
0833nobodyさん
03/05/10 20:20ID:g2YXJoh/CGIのprintで出力しました。
しかし、テキストエリアに、そのCGIのソースをいれると、</textarea>がタグとしてみなされてしまって、
なんかソースファイルがテキストエリアからはみ出るんですが、テキストエリア内のタグを無効化するというのはありませんか?
0834nobodyさん
03/05/10 20:29ID:???わかってないようだから教えてやろう。
ス レ 違 い だ 。
0835nobodyさん
03/05/10 20:41ID:g2YXJoh/大変申しわけありませんが、どの板でしょうか?
0836nobodyさん
03/05/10 21:08ID:g2YXJoh/を取得したんですが、これを664とかちゃんとした数字、最終更新日を
時間分秒に変えるにはどうしたらいいですか?
0837動画直リン
03/05/10 21:10ID:9fodVbL50838nobodyさん
03/05/10 21:26ID:???>テキストエリア内のタグを無効化
そのCGIが無効化処理すればいい。
>>834がああ言ってるのはperlに関係なくHTMLの問題だからでしょ。
>>836
33188 (10進数) = 1000000110100100 (2進数)
下9bitが110100100(2進数)
3bitずつ拾って8進数にすると、544ってとこか。
最終更新日はUnixタイムスタンプかな。localtime()でどうだ?
手元にリファレンスないから適当なんで、ちゃんと知りたいならリファレンスをどうぞ。
0839nobodyさん
03/05/10 21:26ID:???超板違いで本当は教えたらダメなルールなんだけど、今回限り特別で教えてやろう。(以後ここで質問するなよ)
と、思ったが
>CGIのprintで出力しました。
>しかし、テキストエリアに、そのCGIのソースをいれると
ここが意味分からない。もうちょっとやりたい事と書きたい事を整理して、web製作に行け。
ちなみに、&lt; &gt;これの半角がHTMLに置けるタグとなる。
もう来るなよ。
0840nobodyさん
03/05/10 21:31ID:???自分で探せ。
各スレの>1を読めばわかるだろう。
脳足りんじゃなければ。
脳足りんなら、教えても理解できんから素直に諦めろ。
>836
検索しろよ。
8進数に変換した下3桁だ。
やり方くらい自分で調べろ。
最終更新日の方は、秒→時間の変換は普段からやってないか?
それと同じ。
0841nobodyさん
03/05/10 22:05ID:g2YXJoh/ありがとうございます。
printf("%o")でできました。
それからsubstrで取り出してやれば無事できました。
ありがとうございました。
0842nobodyさん
03/05/10 23:12ID:???質問とは外れているけど、その書き方でちゃんと動いたとしても、
2重ループと言って強烈に効率が悪いから、悪いやり方、ということになる。
819のようにハッシュを使ってね。
0843nobodyさん
03/05/10 23:44ID:???こいつ、どうよ。
0844nobodyさん
03/05/10 23:54ID:g2YXJoh/0847nobodyさん
03/05/11 00:07ID:???なぜ、PerlスレでHTMLの話が出てくるんだ。
0848nobodyさん
03/05/11 00:15ID:???2:PerlはHTMLを扱うためのものだと思っている。
3:学校で自慢するためにサイトに自分で少しでもいじったCGIを置きたかった。
さあ、正解は?
0849nobodyさん
03/05/11 00:18ID:???0850nobodyさん
03/05/11 00:37ID:p1iIhNqbプログラムについて全然分かりません。
それについてのサイトとか>>2-10周辺とか見ても
次元が違うみたいなことが書かれてあって困ります。
ただ適当にネットやって楽しんでるくらいの人が
理解するには
どうすればいいのでしょう
0851nobodyさん
03/05/11 00:43ID:???なぜPerlに手を出そうとしてるのか。
0852nobodyさん
03/05/11 00:55ID:p1iIhNqb最初から何も知らないのとあんま変わらないと
思うのですがー
いけませんか
0853nobodyさん
03/05/11 01:03ID:???ただ適当にネットやって楽しんでるだけで
理解しようとするのは無謀だということ。
プログラミング初心者用の解説本だっていくらでも出てるんだし、
本気で覚えようとするならいくらでも手段はある。
0854nobodyさん
03/05/11 01:03ID:???何を教えられても身にはつかない。
「教えてもらおう」と考えている内は、一生覚えられない。
0855動画直リン
03/05/11 01:10ID:D5AlwyCG0856nobodyさん
03/05/11 01:13ID:???「perl チュートリアル」でググってみて、そこで勉強してみて、分からないことがあったらまたおいで。
0857nobodyさん
03/05/11 10:37ID:???(a,b,c) -> (1 => a,2 => b,3 => c)としたい
なお。(a,undef,c)のときは、(1 => a,3 => c)とする
よろしく。
0858852
03/05/11 10:58ID:K/IiEdpMおk,十分です、
逝ってきます
0860nobodyさん
03/05/11 11:37ID:???でたでた。
必要性に関しての議論なんてしてないのに、でしゃばってくるやつ。
わからないなら、黙ってれよ。
つーか、それなりに使うロジックだ。
おまえが必要となるケースを経験してねーだけ。プ
ちなみに
% = map{$i++ => $_} @
が定石。
ただし、undefの場合は考慮せず。
0863862
03/05/11 12:21ID:???苦しいけど、こういう手もあるわなw
0865250
03/05/11 12:44ID:???for(0 .. $#aya){
$aya{$_} = $aya[$_] if(not undef $aya[$_]);
}
素直にforつかってりゃいいんでねーの?
0866nobodyさん
03/05/11 13:09ID:???これの方が速度出るんじゃねーの?
0867nobodyさん
03/05/11 15:40ID:IBTMpZAFこれを、「.」「..」,「.*(.htaccessなど)」,ディレクトリ、ファイル
という順番であらわしたいんですが、どうしたらいいでしょうか?
0869nobodyさん
03/05/11 16:00ID:IBTMpZAFソートすると、ディレクトリが優先的に上にこないんですよ。
そこが困ってるんですよ・・・
0870nobodyさん
03/05/11 16:01ID:ZMWn/EPcどうすればいいでしょうか?文字コードはShift_JISです。
0871nobodyさん
03/05/11 16:05ID:???ファイル用の配列とディレクトリ用の配列を両方作って、それぞれにsort。
その上で、ディレクトリ用配列を先に表示すれば?
>870
もうちょっとわかりやすく。
文字のエンコードの事か?
だったらgoogleででも検索しる。
0872nobodyさん
03/05/11 16:08ID:???"%ff%ff"みたいな文字列があったとして、
Perlでそれを標準入出力に読めるような形で
出力するにはどうすればいいんでしょうか?
0873nobodyさん
03/05/11 16:10ID:???0874nobodyさん
03/05/11 16:11ID:???print STDOUT "%ff%ff";
0875nobodyさん
03/05/11 16:17ID:???例えばですね、文字列⇒16進表記、という変換をしてくれるCGIは
Web上にいくつかあります。その逆がやりたいんです。
16進表記と文字コードを指定すると、標準入出力に文字が表示されるような
0876nobodyさん
03/05/11 16:20ID:???jcodeで検索。
0877nobodyさん
03/05/11 16:21ID:???ttp://www.google.com/search?q=Perl+%E6%96%87%E5%AD%97%E3%82%B3%E3%83%BC%E3%83%89+%E5%A4%89%E6%8F%9B&ie=UTF-8&oe=UTF-8&hl=ja&lr=
0879435
03/05/11 16:31ID:???0880nobodyさん
03/05/11 16:44ID:???@files =
map { $_->[0] }
sort { $b->[1] <=> $a->[1] || $b->[2] <=> $a->[2] || $a->[0] cmp $b->[0] }
map { [ $_, /^\./ ? 1 : 0, -d ? 1 : 0 ] }
readdir DIR;
キーワード:
sort map 三項演算子 ファイルテスト演算子 比較演算子
リファレンス 無名配列 Schwartzian Transform
0881nobodyさん
03/05/11 16:48ID:???0882nobodyさん
03/05/11 18:45ID:???一度使っていらなくなった変数は、
メモリ容量の事を考えて初期化したほうがいいですか?
それとも、初期化処理自体が無駄に負荷をかける処理ですか?
(視覚的には初期化したほうが「もう使わない」って分かってグット)
0883nobodyさん
03/05/11 18:56ID:???捨てた方がいいかも。
大抵は、消費量が微小か、要らなくならないんじゃないかな。
0884nobodyさん
03/05/11 19:02ID:IBTMpZAF#!/usr/bin/perl
opendir DIR, ".";
@files = readdir DIR;
splice(@files,1,1);
close DIR;
#################ソート処理#################
sub hikaku{
my($alen) = Length($a);
my($blen) = Length($b);
if ($alen == $blen){return 0;}
elsif ($alen > $blen) {return 1;}
elsif ($alen < $blen) {return -1;}
}
#@files = sort (@files);
############################################
$f = "<td bgcolor=ffffff><font size=2>";
print "Content-Type: text/html\n\n";
print "<html><head>\n";
print "<title>dir</title></head>\n";
print "<body>\n";
print "<br><br><br><br><br><br> ファイル一覧<br>\n";
print "<br><table cellpadding=1 cellspacing=1 bgcolor=dddddd>\n";
print "<tr>${f}ファイル名</td>${f}リンク</td>${f}拡張子</td>${f}サイズ</td>${f}アクセス権</td>${f}最終更新日</td></tr>\n";
#ファイル名を全て取得するまでループ
foreach (@files){
0885続き
03/05/11 19:03ID:IBTMpZAF@stat = stat $_;
#時間の形式を変換
sub time {
$ltime = $stat[9];
($sec,$min,$hour,$mday,$mon,$year,$wdy) = localtime($ltime);
@youbi = ("日", "月", "火", "水", "木", "金", "土");
printf("%04d/%02d/%02d($youbi[$wdy]) %02d:%02d:%02d\n",
$year + 1900,$mon + 1,$mday,$hour,$min,$sec);
}
#パーミッションを8進数に変換
$bin = sprintf("%o",$stat[2]);
$par = substr($bin,2,4);
#パーミッションの桁数調整
if ($par =~ /\d{4}/){$par = substr($par,1,3);}
#拡張子を抜き出す
$i = index($_,"\.");
$index = substr($_,$i++,11);
0886続き
03/05/11 19:03ID:IBTMpZAFif ($bin =~ /40/){$index = "";
$stat[7] = "<font color=red>DIR</font>";}
else{$index = "<font size=2>$index</font>";
}
#テーブルに組み込み出力
print "<tr>${f}$_</td>\n";
print "${f}<a href=$_ target=_top>$_</a></td>\n";
print "<td bgcolor=ffffff>$index</td>\n";
print "${f}$stat[7]</td>\n";
print "<td bgcolor=ffffff align=center><font size=2>${par}</td>\n";
print "${f}\n";
&time;
print "</td></tr>\n";}
print "</table><br>\n";
print "<center><input type=button value=更新 onClick=history.go(0)></center>\n";
ってしたんですけど、これをあまり変えないで、配列2つつくるのは無理そうですね。。
0887nobodyさん
03/05/11 19:13ID:???@pairs = split(/&/,$buf);
foreach $pair(@pairs)
{
($name,$value) = split(/=/,$pair);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg;
$value =~ s/</</g;
$value =~ s/>/>/g;
$FORM{$name} = $value;
}
$Msg= $FORM{'MSG'};
print "$Msg";
で表示されないのです。どうすれば表示できるでしょうか?
0888nobodyさん
03/05/11 19:24ID:???テキストエリアを含んでいるformのあたりはどういうソースにしてるの?
0889887
03/05/11 19:42ID:???<form method="POST" action="./test.cgi">
<div>名前:<input type="text" name="NAME"></div>
<textarea type="text" name="MSG" cols="40" rows="4" wrap="soft"></textarea>
<input type="submit" value="送信">
<input type="reset" value="取消">
--CGI側--
#!/usr/local/bin/perl
local($buf);
#入力データ読み出し
if ($ENV{'REQUEST_METHOD'} eq "POST") {
read (STDIN, $buf, $ENV{'CONTENT_LENGTH'});
} else {
$buf = $ENV{'QUERY_STRING'};
}
以下>>887のソースへ
という風になっております。
0890見せかけの善人(コピペ推奨)
03/05/11 19:52ID:???http://www3.ocv.ne.jp/~cochome/kaisetsu.htm#chigai
http://www.autism.jp/l-02-03-aspe3.htm
http://www.geocities.co.jp/Beautycare/5917/as/
●接し方のルールがわからず無邪気に周囲の人に対して迷惑なことをしてしまうこと
がある。人を傷つけるということには鈍感です。年配の先生に向かって「おばあさん
先生おはようございます」と明るい大声で挨拶する生徒もいる。こういった言動をす
る場合にも彼らには悪意はない。
●小さな声でひとり言を言ったり、考えていることを声に出して言うことがある。
●融通が利かないことも学校生活で問題になる。時間割の変更や突然の教師の欠勤と
いう事態で不安を感じたりかんしゃくをおこしたりする。あまりに規則に厳格なため
に、遅刻した同級生に延々と注意をしたり、修学旅行などで消灯時間をかたくなに守
り、他の生徒の顰蹙をかったりすることがある。
●行動・興味・活動のパターンが貧困で反復常同的なことも自閉症の特徴である。すな
わち、日常の活動の様々な面にわたって柔軟性のないルーティン(決まった手順や日課)
を押しつける傾向、これを慣れ親しんでいる習慣や遊びのパターンだけでなく、たいてい
は新しい活動にも押しつける。そしてルーティンや個人的な環境の細部の変化(家の中の
置物や家具の移動によるなど)に対する抵抗がみられることがある。
●揺れる木の葉を見続ける子どもは興味のレパートリーが狭いとも言え、視覚的な敏感さ
があるといっても良い。
●精神遅滞を伴うものと伴わないもので大きく分かれる。100%果汁のオレンジジュー
スを思い浮かべてください。それにだんだん水を加えて薄めて行くと終いには水にごく近
くなる。一口飲んで「オレンジジュースだ!」とわかるものは自閉症、水に近いけれどな
にかオレンジの味が混じっているのがアスペや高機能・・。その濃度はさまざま。濃いオ
レンジジュースであったとしても早期の療育や周りの対応によって水に近づいていくこと
は可能。しかし間違えてはいけないのはオレンジジュースが一滴でも落ちている場合は
「純粋な水」にはなれないのです。
0891nobodyさん
03/05/11 20:02ID:???$value =~ tr/+/ /;
の行に全角の空白文字が混ざってる。
ヘッダをはいてないけど、省略してるだけ?
print "Content-type: text/html\n\n";
0892nobodyさん
03/05/11 20:11ID:???ソートの話しなんですが…。
@data_1;
@data_2; #両方とも中は数字
こんなのがあったとします。
これをごっちゃまぜにして
@data_sort;
の中にソートして入れたいのですが、そうすると「@data_1」が持っていた変数なのか、
「@data_2」が持っていた変数なのか、分からなくなってしまいます。
「@data_sort」の中に入れつつも、その値は元々どちらの変数が持っていた値かを分かるようにする方法はないでしょうか?
0893435
03/05/11 20:16ID:???0894nobodyさん
03/05/11 20:18ID:???超おすすめサイト一覧です☆
http://accessplus.jp/staff/in.cgi?id=10645
http://www.39001.com/cgi-bin/cpc/gateway.cgi?id=neat
http://www.39001.com/cgi-bin/cpc/gateway.cgi?id=pure
http://accessplus.jp/staff/in.cgi?id=10943
http://www.emzshop.com/goodstyle/
0895887
03/05/11 20:30ID:???ヘッダは省略してるだけです。説明不足ですみません。
全角スペースは、CGIのソースには含まれていなかったので、
ここに書き込むときにでも発生したのかもしれません。
textarea以外のinput等に入力されたデータはちゃんと表示されています。
0896nobodyさん
03/05/11 20:36ID:pspablfq記事番号、パスワードが入力するとtextareaやらに表示させる、
ってトコまではできました。
しかしそこからログファイルの配列とファイルの書きこみ操作がよく分かりません。
ログが全部消えてしまったりします。
ログファイルの変更箇所だけを上書き、というはどうやればいいのでしょうか?
分かりにくい文章ですが、宜しくお願いします。
0897nobodyさん
03/05/11 20:47ID:???ログファイルの一行を変えたいならファイルの中身を一行ずつ配列に入れ(もちろんすべて)、
修正したい行が入っている要素だけ書き換える。
あとは配列の中身をファイルに上書き。
0898892
03/05/11 20:55ID:???なんとか工夫して頑張ってみます。
0900477
03/05/11 23:24ID:???2次の配列を作って表示させてるんですが
--------------------------------------
@gyou1 = (
['photo','pic','scan'],
['ph0001','pic001a','scan001'],
['ph0002','pic001b','scan002a'], 〜56行続く
);
@gyou2 = (
['photo','pic','scan'],
['ph1001','pic101','scan101a'],
['ph1002','pic102','scan101b'], 〜70行ほど続く
);
for ($i = 0; $i <= 56;i++){
print "$gyou1[i][1]";
}
for ($j = 0; $j <= 56;j++){
print "$gyou2[j][1]";
}
--------------------------------------
こんな感じに表示させているんですが、凄まじく重くて・・・、
一片に表示させずa herefみたいなのでページ切り替えさせたいんですけれど
方法がわかりません、
ここのCGIみたく任意の記事番号をハイフンで繋ぐだけで見せてくれる仕組みが
ヒントになりそうだけどソース見れないし・・・
なにかないでしょうか?
あと、ついでですが、データ内包するよりログファイルから引き出す方が処理早いでしょうか?
できれば教えて下さい、
0901nobodyさん
03/05/11 23:43ID:???今日もCGIの質問が多いなぁ〜・・・(´ー` )
0902nobodyさん
03/05/12 00:14ID:???微妙な質問カモン
0903nobodyさん
03/05/12 00:55ID:???> ページ切り替えさせたいんですけれど方法がわかりません
やりたい事を実現するには具体的にどんな「情報」が
必要か考えてみれ。まず表示を開始する行番号が
必要だよな? 後は?
> データ内包するよりログファイルから引き出す方が処理早いでしょうか?
実際に試せ。コード書いて調べろ。その方が人に聞くより早い。
0904nobodyさん
03/05/12 01:56ID:722KG0lcLocationではうまくいかないんですが他にジャンプさせる
命令語ありますか?
0905nobodyさん
03/05/12 01:58ID:Uc7D0G4o先月分126620円入金されました。
リンクスタッフの登録はメアドと任意のパスワード
を入力すれば完了。メアドは無料メールでも可。
http://accessplus.jp/staff/in.cgi?id=10645
0906nobodyさん
03/05/12 02:56ID:???http://pc2.2ch.net/test/read.cgi/php/1045091733/
http://pc2.2ch.net/test/read.cgi/php/1048686475/
0909nobodyさん
03/05/12 09:38ID:K6tDiGbjprint ゙aiueokakikukeko\n゙;
ってのが複数でてくる場合
変数aに置き換えて$aとするのと
サブルーチンaにして&a;とするのではどうかわるのですか?
0910nobodyさん
03/05/12 11:59ID:???0911908
03/05/12 12:05ID:K6tDiGbjサブルーチンだったら展開に時間がかかるってことですか?
複数の処理の場合はサブルーチン、一個の処理の場合は変数ということでしょうか?
0912nobodyさん
03/05/12 12:08ID:???0913nobodyさん
03/05/12 12:11ID:???0914nobodyさん
03/05/12 12:13ID:???サブルーチンの場合、一回実行するごとにスタックがつまれてメモリを食う。
その分、若干時間も食う。
この場合はどうのこうのと言うより、自分で考えろ。
0915nobodyさん
03/05/12 12:25ID:K6tDiGbjありがとうございます。極端な話、すべて変数にしちゃってもいいですかね?
>>914ためしたんだけどあまりかわらないような…
メモリを食うというのは初めて知りました。大変参考になりました
0917nobodyさん
03/05/13 00:29ID:sfojkvp6サンクス
0919918
03/05/13 02:34ID:???0920nobodyさん
03/05/13 02:35ID:???0921nobodyさん
03/05/13 02:46ID:???perl/tkをwinでちょっとやってみようと思い、マズは色んなサイト見てみる事にしました。
で、以下のコードをとあるサイトからパクって来ました。
$top = MainWindow->new();
$button = $top->Button( -text => 'EXIT', -command => \&exit );
$button->pack();
MainLoop();
これ、正常に動いたのですがなにがなんだか意味が分かりません。全く分かりません。
リファレンスとか、無名のなんたらを使ってるって事は分かったのですが…。
tkのプログラミングをを専門に解説してるサイトが一向に見つかりません。
リファレンスの説明をしているサイトは見つかったのですが、
「tkの記述を」まるで初心者におしえるかのごとく細かく丁寧に、そして多量に書いているサイトはないでしょうか?
クソみたいな質問ごめんなさい。
0922nobodyさん
03/05/13 02:51ID:???http://www.oreilly.co.jp/index/perl/
0924921
03/05/13 02:58ID:Lt5m0lm7すみません…。
本買う前に一通り調べてって言うかちょっとやってみてから決めたいんです。
>>923
そ、そうですか?
まだイロイロ調べてみます。汗
でも、なんか良さげなの知ってたら書いてくれると嬉しいです。
0925bloom
03/05/13 03:10ID:rppJJuu/0926_
03/05/13 03:15ID:???http://www.yoshiwara.susukino.com/moe/jaz08.html
http://yoshiwara.susukino.com/moe/jaz10.html
http://www.yoshiwara.susukino.com/moe/jaz03.html
http://yoshiwara.susukino.com/moe/jaz09.html
http://www.yoshiwara.susukino.com/moe/jaz06.html
http://yoshiwara.susukino.com/moe/jaz05.html
http://www.yoshiwara.susukino.com/moe/jaz01.html
http://yoshiwara.susukino.com/moe/jaz02.html
http://www.yoshiwara.susukino.com/moe/jaz07.html
http://yoshiwara.susukino.com/moe/jaz04.html
0930nobodyさん
03/05/13 21:19ID:o+SfWHf30931nobodyさん
03/05/13 21:57ID:???0932nobodyさん
03/05/13 22:00ID:???(grep(/$key/, @data) ←こんな感じで)
検索キーに"ー"が含まれている時に500エラーになるようなんです。
一応jcode.pl使ってsjisにエンコードしているのですが・・・
原因は何でしょう?
0933nobodyさん
03/05/13 22:02ID:???0934nobodyさん
03/05/13 22:02ID:???eucなら だいじょうぶだよ
0935nobodyさん
03/05/13 22:39ID:???二度目以降に見つけてもシカトするという条件があります。
@num = (19,20,55,63);
@list = (ketu63,etu63,a55hoi,hoi55,asdf63,a2a0,huga19,cool20);
for(@list){ @ans=grep(/$_$/,@num); }
↑のように書いてみたんですが
@ans = (huga19,cool20,hoi55,ketu63)
となって欲しいのに
@ans = (19,20,55,63)
となってしまうのです。
文字列の末尾をチェックして文字列全体を返したいのですがどのようにしたらいいでしょうか
よろしくです
0937nobodyさん
03/05/13 23:13ID:???> for(@list){ @ans=grep(/$_$/,@num); }
> ...
> @ans = (19,20,55,63)
> となってしまうのです。
@num の要素を grep してんだから当然だわな。
http://flex.ee.uec.ac.jp/texi/perl/perl_47.html
my @num = (19,20,55,63);
my @list = qw(ketu63 etu63 a55hoi hoi55 asdf63 a2a0 huga19 cool20);
my @ans = ();
for my $num (@num) {
for my $str (@list) {
$str =~ /$num$/ or next; # @list の末尾に @num がある時だけ
push @ans, $str; # @ans にぶち込む
last; # 二度目以降はシカト == 最初に見つかったものだけ
}
}
print join '/', @ans; # huga19/cool20/hoi55/ketu63
0938nobodyさん
03/05/13 23:14ID:???これでどっすか?
もっと簡単になりそうだけど、自分にはこれしか思いつかんかった。
%key = ();
$key{$_}++ foreach (@num);
foreach $v (@list) {
$v =~ /(\d+)$/ or next;
if ($key{$1}) {
undef $key{$1};
push(@ans, $v);
}
}
0939935
03/05/13 23:25ID:???ありゃ?寝ぼけてました。正直云うと気付きませんでした
937氏の方法で幸せになれました
938氏の方法は今から試してみます。
ありがとでしたー
0940nobodyさん
03/05/13 23:55ID:???伝統だね〜。しみじみ。
0942nobodyさん
03/05/14 07:28ID:???japu氏とか_gunzip氏とかどこに行ったんだろうな。
実はファンだったのだが。
レベルダウンは構わないんじゃないか?
ここは初心者スレだし。
>>1にもあるように「一緒に勉強」するスレだ。
0943nobodyさん
03/05/14 08:03ID:???0944nobodyさん
03/05/14 14:41ID:???つまり、
0,FOO,236
1,BAR,145
2,HOG,487
3,FUG,352
となってるCSVファイルを、3列目でソートして、
1,BAR,145
0,FOO,236
3,FUG,352
2,HOG,487
というように表示したいのですが・・・
0946nobodyさん
03/05/14 16:12ID:???while(<F>){
$hash{(split(/,/))[2]}=$_;
}
close(F);
foreach (sort {$a<=>$b} keys %hash){
print $hash{$_};
}
0948nobodyさん
03/05/14 18:04ID:???chomp;
($tmp1, $tmp2, $tmp3) = split (/,/, $_);
$data{$tmp1} = [$tmp2, $tmp3];
}
@tmp = sort { $data{$a}->[1] <=> $data{$b}->[1] } keys %data;
print $_. ','. $data{$_}->[0]. ','. $data{$_}->[1]. "\n" foreach (@tmp);
exit;
__END__
0,FOO,236
1,BAR,145
2,HOG,487
3,FUG,352
・・と、俺も作ってみる。
ちなみに、タブ部分は見やすいように全角スペース。
0949nobodyさん
03/05/14 18:05ID:???今回に限らず、データの前提条件をはっきりさせないと
やり方も変わってくるよ。
・1桁、3桁、3桁の固定長なのか?
・各フィールドはユニーク値なのか? など
実際にその4つのデータなら>>946が書いてくれた方法でできるが、
もっとデータがあって3列目に同じ値があったらダメだし。
0950nobodyさん
03/05/14 18:17ID:???while (<DATA>) {
chomp;
($tmp1, $tmp2, $tmp3) = split (/,/, $_);
$data{$.} = [$tmp1, $tmp2, $tmp3];
}
@tmp = sort { $data{$a}->[2] <=> $data{$b}->[2] } keys %data;
print $data{$_}->[0]. ','. $data{$_}->[1]. ','. $data{$_}->[2]. "\n" foreach (@tmp);
exit;
__END__
0,FOO,236
1,BAR,145
2,HOG,487
3,FUG,352
・・・と、各値がユニーク値だった時のために修正とかもしてみる。
ちなみに、やっぱりタブは全角スペース。
0951nobodyさん
03/05/14 18:49ID:???という条件は、以下であってると思ったのですが、どうも違うようです。。。
どうしてだめなのでしょうか?
m/^[,\n\r]*$/gm){
0952nobodyさん
03/05/14 19:18ID:???if ($_ =~ /^,+$/) {
print $.. "行目マッチ!\n";
next;
}
print $.. "行目クリア\n";
}
exit;
__END__
,,,,
,1,1,1
,,,,,,
aaa,aaa,aa,
・・・と、作ってみる。
改行は普通ではマッチしない。
で、例の如くタブは全角ス(ry
0953nobodyさん
03/05/14 21:45ID:???/m … ^ が「全ての行頭」、$ が「全ての行末」にマッチ
/s … ^ が「文字列の先頭」、$ が「文字列の末尾」にマッチ
0954nobodyさん
03/05/14 22:05ID:???正規表現道場@2ch Part2
http://pc2.2ch.net/test/read.cgi/php/1038146241/l50
0955nobodyさん
03/05/15 00:00ID:???0956nobodyさん
03/05/15 00:06ID:???0957nobodyさん
03/05/15 16:12ID:???perl5.6でXMLにチャレンジしてみようと思って、
#!/usr/bin/perl
use strict;
use Jcode;
use XML::Parser;
my $topic;
while($line = <STDIN>)
{
$topic .= $line;
}
my $xml = new XML::Parser(Style => 'Debug',ProtocolEncoding=>'x-euc-jp-unicode');
my $result =$xml->parse($topic);
こんな感じでXML文書を読み込ませてみたら、途中で、
Substitution loop at /usr/lib/perl5/site_perl/5.6.1/i386-linux-thread-multi/XML/
Parser.pm line 346, <STDIN> line 75.
こんなエラーが出ます。エラーの出る行には日本語が入っています。
日本語非対応かなと思っていろいろ試してみると、たとえば「◇」のような文字が
含まれているとだめだったりするようです。(だめなのはこれだけではなさそう)
やりたいのは、perlで日本語のXML文書を読み込むことです。
その読み込みの時点ではまってしまうので困っています。
別に文字コードがeucである必要はないし、モジュールもXML::Parserを使うことにこだわりないです。
この辺のことを処理するにはどうすればいいでしょうか?
UTF-8にしてみたら?
# 読み込みアルゴリズムが違うのははただの趣味
undef $/;
my $topic = <STDIN>;
Jcode::convert(\$topic, 'utf8', 'euc'); # これ
my $xml = new XML::Parser(Style => 'Debug',ProtocolEncoding=>'utf-8');
# ...
0959957
03/05/15 18:20ID:???UTF-8でやってみました。
以降Jcodeにてeucをutf8に変換したものとして話をさせていただきます。
utf-8にしても、同じエラーが出るには変わりなかったので、
エラーの出る部分を特定しようとして、ひとつ気がつきました。
*文字の種類によってエラーがでるのではなく、文字数によってエラーが出る。*
日本語だけで記述された文の場合、文字が10個続くと必ずエラーが出ます。
9文字までならエラーになりません。
アルファベット(半角文字)で始まる文の場合、
アルファベットが1つ,2つの時は同じように日本語10文字で同じエラーになります。
アルファベットが3つあると、日本語16文字で同じエラーになります。
アルファベットが4つあると、日本語18文字で同じエラーになります。
アルファベットが5つあると、日本語20文字で同じエラーになります。
なんなんでしょう、これ。
ちなみにエラーの出るXML::Parser.pmの346行のコードは、
$text =~ s/([\x80-\xff])/sprintf "#x%X;", ord $1/eg;
だそうです。
0960あすか
03/05/15 21:05ID:???掲示板で、URLを張ると、そのURLの「HTMLソース」が見れる様になるものがあるんですが
あれって、どういう仕組みなんでしょうか。。
例えば
http://www.yahoo.co.jp/ (Text)←yahooにアクセスしなくともhtmlソースが見れる
の様なものです★
0961動画直リン
03/05/15 21:10ID:fs87NLJj0962nobodyさん
03/05/15 21:23ID:???view-source:http://www.yahoo.co.jp/
0963nobodyさん
03/05/15 21:39ID:bacZc7Vd例
d:/aaa/bbb/ccc/ddd/file.txt -> file.txt
d:/aaa/bbb/aaa.dat -> aaa.dat
d:aaa.dat -> aaa.dat
d:/aaa/bbb/aaaa -> aaaa
d:/aaa/bbb/ccc/ddd/eee/.fff -> .fff
d:.abcde -> .abcde
perlで、自分自身のファイル名を得たいので
$0 っていう特殊変数を使うと、フルパスで出てしまうので、
ファイル名のみを、、
0964963
03/05/15 22:03ID:bacZc7Vd$ENV{SCRIPT_NAME} =~ s|.*/||;
で、できました。
ただ、これを変数に入れるのはどうすればいいでしょう?
my $filename = $ENV{SCRIPT_NAME} =~ s|.*/||;
ってやっても、$filename には 1 としか入らんもんで、、
0965nobodyさん
03/05/15 22:46ID:mip2uT4/それをSSIで出力したいのですが、思いつくのは、Bサーバの1個のファイルに対して、
if(-e $file){
print "稼動中";
}else{
print "ダウン中";
}
という、つながるか、つながらないか、というのしかできそうにありません。
pingでパケット送ったり、みたいなのはないですか?
0966965
03/05/15 23:01ID:???翻訳の天才だ。日本語だって訳してみせらぁ。でも脳内単語だけは勘弁な。
--
あるサーバ(A)から別のWebサーバ(B)の状況を確認したい。
確認したい内容は、1.健在 2.レスポンスが悪い 3.沈黙。
自分で考えた方法は、Bサーバで if(-e $file)を実行する方法。
できることならpingの確認もしたい。
0967nobodyさん
03/05/15 23:07ID:mip2uT4/ありがとう。
pingの確認というのは、-eでは健在or沈黙しか得られないので、
pingなど、レスポンスの良し悪しも分かるコマンドはないですかってことです。
わざわざスマソ
0968nobodyさん
03/05/15 23:09ID:???0969bloom
03/05/15 23:10ID:fs87NLJjう〜む。分からない。
エラーが起きる最小のコードXML文書を抜き出せる?
あとXML::Parserのバージョンも教えて。
0971965=967
03/05/15 23:26ID:mip2uT4/>自分で考えた方法は、Bサーバで if(-e $file)を実行する方法。
やっとこの意味がわかった。Bサーバでif(-e $file)を実行して、Aサーバに
SSIでフルパスで呼び出すってことですか。。
書き忘れましたが、AサーバはSSI,CGI可で、BサーバはSSI,CGI共に不可なんです。
if(-e $file)ってのをURLいれてやったら失敗したから、この場合どうしようもないのかな・・・・
0972nobodyさん
03/05/15 23:33ID:???my $filename = $ENV{SCRIPT_NAME};
$filename =~ s|.*/||;
ちったぁ、頭使おうぜ。
0974965=967
03/05/15 23:52ID:mip2uT4/ありがとう。
is_success使ってできた。。。でも、レスポンスが悪いとかは無理かな?
これは、生存or死亡だけっぽい
0975nobodyさん
03/05/16 00:16ID:???0976965=967
03/05/16 01:39ID:HXybd+Xv時間はあんまり詳しくないんです、、ハイ
0977nobodyさん
03/05/16 11:03ID:+7wsfVA8sprintf("%0.2f",$num)
これだと四捨五入になるので、お願いします。
0978bloom
03/05/16 11:10ID:n/FznajZ0979nobodyさん
03/05/16 11:12ID:???$number = 1.234567;
$number = int ( $number * 100);
$number /= 100;
0980nobodyさん
03/05/16 11:22ID:???■ 新スレ用意いたしますた ■
Perl 初心者コーナー Part23
http://pc2.2ch.net/test/read.cgi/php/1053051519/
0981nobodyさん
03/05/16 11:26ID:???<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="http://example.com/index.xsl"?>
<Subject>ああああああああああ</Subject>
これでエラーになります。
XML::Parserのバージョンはたぶん2.31、
昨日CPANからインストールしたので最新バージョンだと思います。
あと、調べたらStyle=>'Debug'の時だけエラーになるようです。
Style=>'Tree'の時にはエラーになりませんでした。
たぶん実際に使うときにはDebugでは使わないから別にいいのかな……。
ごめん、分からなかった。
perl5.8+XML::Parser2.31では再現せず…。"Wide character in print"なんて警告は出たけど、謎。
多分、XML::Parser::Expatを経由するに立てられたUTF8フラグが悪さをしているんだと思うけど…。
とりあえず置換えはどうせデバッグの為だけだし、こんな感じでメソッドを再定義すればとりあえずは動くはず。
sub XML::Parser::Debug::Char{
my $expat = shift;
my $text = shift;
print STDERR "@{$expat->{Context}} || $text\n";
}
my $parser = new XML::Parser(...);
0983nobodyさん
03/05/16 17:38ID:Jkp+t2ia'sql_arrange' => "顧客絞込み条件の入力",
'select' => "該当顧客の閲覧",
'writemail' => "メールの記入"
);
foreach $value (keys %mode2name){
$HtmlTmp .= qq|$mode2name → |;
}
print $HtmlTmp;
とやると、
「該当顧客の閲覧 → メールの記入 → 顧客絞込み条件の入力 → 」
と表示されます。
これを、%mode2name = で設定した順番、つまり、
「顧客絞込み条件の入力 → 該当顧客の閲覧 → メールの記入」
と表示させるには、
foreachの部分はどう書けばいいのでしょうか?
0985nobodyさん
03/05/16 18:04ID:???おつきあいどうもありがとうございました。なんとかこれでやってみます。
スレ埋め立ても兼ねてちょっとみなさんに聞きたいのですが、
なんかどこもかしこもXMLになってきているなかで、なんかgoogleっても
perl+XMLな話題が少ないような気がするのですけど、
スクリプトでXMLいじる人ってのは
perl以外(rubyとかpythonとか)の方が最近は多かったりするんでしょうか?
周り見てみて、いかがですか?
0986nobodyさん
03/05/16 21:42ID:4ZXWJHXL探しているんですが見つからないんです。
0987nobodyさん
03/05/16 21:53ID:???http://www.google.com/search?q=perl+WindowsXP&num=100&hl=ja&lr=lang_ja&ie=UTF-8&inlang=ja&c2coff=1&safe=off&filter=0
0988nobodyさん
03/05/17 00:14ID:GaxUmwFmサーバーによって何か設定変えないければならないのでしょうか?
perl5、apache、freeBSDのサーバーなんですが。。
0989nobodyさん
03/05/17 00:25ID:???どこかのレンタル?
$ENV{'REMOTE_HOST'}を取得できない鯖はよくあるよ。
$ENV{'REMOTE_ADDR'}から必要に応じてホストに変換で。
0990988
03/05/17 00:43ID:GaxUmwFm$ENV{'REMOTE_ADDR'}は取得出来ましたので必要に応じてホストを調べればいいという事ですね。
ちょっとスレ違いですが、例えば掲示板で変な書き込みがあったときに、プロバイダに連絡して注意してもらう為には$ENV{'REMOTE_ADDR'}と書き込み時間を取得しておけば大方はOKでしょうかね?
0992988
03/05/17 00:52ID:GaxUmwFm0993nobodyさん
03/05/17 17:47ID:???PERL、Perl、perl、PERL、Perl、perl
Perl、perl、PERL、Perl、perl
perl、PERL、Perl、perl
PERL、Perl、perl
Perl、perl
perl
erl
rl
l
rl
erl
perl
perl、 Perl
perl、 Perl、 PERL
perl、 Perl、 PERL、 perl
perl、 Perl、 PERL、 perl、Perl
perl、 Perl、 PERL、 perl、Perl、PERL
0997nobodyさん
03/05/17 18:41ID:???0998nobodyさん
03/05/17 18:55ID:???0999nobodyさん
03/05/17 19:01ID:???1000nobodyさん
03/05/17 19:02ID:???10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。