【Perl 】初心者コーナーPart8
レス数が1000を超えています。これ以上書き込みはできません。
0001名無しさん@お腹いっぱい。
01/10/24 14:11ID:???1:自分はこう言う事がしたい。
2:それでこんな風にやってみたが・・・
3:それだとこんなエラーが出て上手く行かなかった。
1と3が無いと誰も答えられないよ、良い回答は良い質問から。
一緒に勉強しましょう。
参考書籍はこちら【【Perl,CGI】参考書籍 第2版 】
http://ebi.2ch.net/test/read.cgi/php/988809842/l50
CGIの質問はこちら【CGIだけど、なんか質問ある?part4】
http://ebi.2ch.net/test/read.cgi/php/1000804655/l50
過去ログ、その他の役立ち情報は>>2-10を見よう。
0002名無しさん@お腹いっぱい。
01/10/24 14:12ID:???Part1 http://tako.2ch.net/test/read.cgi?bbs=perl&key=957208980 参照不能
Part2 http://tako.2ch.net/test/read.cgi?bbs=perl&key=971817087 参照不能
Part3 http://tako.2ch.net/test/read.cgi?bbs=perl&key=979894521 参照不能
Part4 http://tako.2ch.net/test/read.cgi?bbs=perl&key=984430156 参照不能
Part5 http://corn.2ch.net/test/read.cgi?bbs=php&key=988728069
Part6 http://corn.2ch.net/test/read.cgi?bbs=php&key=996075607
Part7 http://ebi.2ch.net/test/read.cgi/php/1000267444/
[ひまぢん氏のミラー]
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
0003名無しさん@お腹いっぱい。
01/10/24 14:13ID:???・Perl Com: http://www.perl.com/pub/
・CPAN.com: http://search.cpan.org/
・ActivePerl: http://www.activestate.com/
・CGI-ML:http://forest.ne.jp/cgi-ml/
[お薦め]
・Perl Recipes: http://www.effectiveperl.com/recipes/
・Perlメモ: http://www.din.or.jp/~ohzaki/perl.htm
・Randal's WebTechniques columns: http://www.stonehenge.com/merlyn/WebTechniques/
・Perlの部屋: http://www.cc.rim.or.jp/~midorin/mad-p/perl/index.html
・Perl初心者の部屋:http://www.harukaze.net/~mishima/perl/
・Perlリファレンス:http://www.big.or.jp/~mio/ga/pl/plref/pl_ref.htm
・Perlのページ:http://homepage1.nifty.com/nomenclator/perl/
[Document&Tutorial]
・Perl News: http://www.news.perl.org/
・Perl Monks: http://www.perlmonks.org/
・PerlMonth - Online Perl Magazine - : http://www.perlmonth.com/index.html
・use Perl All The Perl: http://use.perl.org/
・Learn Perl - Perl Education: http://www.devdaily.com/perl/edu/index.shtml
・Perldoc.com: http://www.perldoc.com/
・Using Perl5 in Web: http://docs.rinet.ru/Using_Perl5_in_Web/
・Rex Swain's Home Page: http://www.rexswain.com/
・Robert's Perl Tutorial: http://www.netcat.co.uk/rob/perl/win32perltut.html
・Perl Tuts: http://savage.net.au/Perl-tutorials.html
・Beginning Perl Tutorials: http://www.pageresource.com/cgirec/index2.htm
・jcode.pl の私的な解説書: http://www.mikeneko.ne.jp/~lab/kcode/jcode.html
・Perl for Newbie: http://www.harukaze.net/~mishima/perl/index.html
・Logical Choice Software, Home Page: http://www.logsoft.com/perltips/
・Perlfect Solutions: http://perlfect.com/
・The Perl Archive : http://www.perlarchive.com/
0004いい所あったら10までに貼ってちょ
01/10/24 14:14ID:???・Perl Module Reference: http://www.bekknet.ad.jp/~bero/docj/module/
・PPMPackages: http://www.activestate.com/PPMPackages/
・河馬屋二千年堂's Page: http://member.nifty.ne.jp/hippo2000/index.htm
[Security]
・安全なプログラミングのためのガイドライン:http://www.FreeBSD.org/ja/security/#spg
・Perl security:http://www.perldoc.com/perl5.6/pod/perlsec.html
・CGI and Security http://www.japu.org/cgi/security/
・Perl security和訳:http://www.kt.rim.or.jp/%7ekbk/perl5.005/perlsec.html
・The Unofficial Web Hack FAQ:http://www.nmrc.org/faqs/www/
・How to Write Secure Code:http://www.shmoo.com/securecode/
・Safe CGI Programming :http://www.improving.org/paulp/cgi-security/safe-cgi.txt
[OS]
・Linux日本語マニュアル:http://www.linux.or.jp/JM/
・FreeBSD日本語マニュアル:http://www.jp.freebsd.org/man-jp/
0005名無しさん@お腹いっぱい。
01/10/24 14:18ID:???過去ログが全部見れたのは俺だけでしょうか?
> Part1 http://tako.2ch.net/test/read.cgi?bbs=perl&key=957208980 参照不能 # 見れました。
> Part2 http://tako.2ch.net/test/read.cgi?bbs=perl&key=971817087 参照不能 # 見れました。
> Part3 http://tako.2ch.net/test/read.cgi?bbs=perl&key=979894521 参照不能 # 見れました。
> Part4 http://tako.2ch.net/test/read.cgi?bbs=perl&key=984430156 参照不能 # 見れました。
00065
01/10/24 14:20ID:???「お疲れさまです。」
0007名無しさん@お腹いっぱい。
01/10/24 14:22ID:???http://tako.2ch.net/perl/dat/957208980.dat ←これは有る
http://tako.2ch.net/perl/kako/957208980.html←これは無い
read.cgiは止まってるですよね・・・
0008名無しさん@お腹いっぱい。
01/10/24 14:31ID:???Part1 http://tako.2ch.net/test/read.cgi?bbs=perl&key=957208980 参照不能
Part2 http://tako.2ch.net/test/read.cgi?bbs=perl&key=971817087 参照不能
Part3 http://tako.2ch.net/test/read.cgi?bbs=perl&key=979894521 参照不能
Part4 http://tako.2ch.net/test/read.cgi?bbs=perl&key=984430156 参照不能
tako鯖はdatが生きてるんで、かちゅーしゃだと見れるです
0009名無しさん@お腹いっぱい。
01/10/24 15:52ID:VLOxIr/R%FORM = $cgi->Vars;
の替わりに
%FORM = map{ $_, $cgi->param($_) } $cgi->param();
を教えていただきました。
同じ nameが複数あった場合、前者では
@items = split( "\0", $FORM{item} );
で取り出せましたが、後者ではうまくいきません。
$FORM{item}->[0]
のようにしてもダメでした。どのように格納されているのでしょう?
$cgi->param_fetch('item');
しかないのでしょうか?
00109
01/10/24 15:56ID:???自己レス
%FORM = map{ $_, join("\0",$cgi->param($_)) } $cgi->param();
とすることで解決しました。
00119
01/10/24 16:49ID:VLOxIr/Rファイルアップローダを作るとき 2.47以降の CGI.pmなら
$handle = $cgi->upload('file');
while( <$handle> )
とできますが、プロバイダの CGI.pm が古いため
while( <$cg->param('file')> )
という方法になってしまいます。
しかしこれだと「c:\hoehoe.txt」のようなハンドル名になって
受け付けてくれません。
なにか対処方法はないものでしょうか?
0012名無しさん@お腹いっぱい。
01/10/24 18:11ID:???おっしゃる通りです!、例え話も良く解りました (^ ^ )
;他に嵌るパターンて言うと、ループ、再帰、mod_perl環境、undumpした
最後の2つが勉強不足で分からないですが、この辺は他の言語と同じですね
;**もし**宣言の事言ってるんだったら、こっちはちゃんとしよう。
了解しました、strictプラグマを常用してます。
でも、宣言さえしなくても動いてしまうのは凄いですね。
少しのステップで色々出来ちゃうんで、戸惑ってたんです (^ ^ )
何気にソケットを叩けたりと色々楽しそうです。
今からログを漁ろうと思います。
0013名無しさん@お腹いっぱい。
01/10/24 19:24ID:???Cに帰った時酷く冗長に見えて鬱になるぞ っと
# 頭の切り替えなんだよなあ
0014野獣 牛兵衛 ◆n.Nd.2Co
01/10/24 22:45ID:i9QZ5F40オフ板に perlオフの企画スレ立てました
よろしければ 来てください
http://natto.2ch.net/test/read.cgi?bbs=off&key=1003929930
0015名無しさん@ほっとぞぬ
01/10/24 23:48ID:???>@fff[0..1][2]
>のようなスライスをすることは出来ますか?
>(スライスとは言わないのかも)
一応下記のような方法を考えてみました
@kkk = map { @$_[2] } @fff[0..1];
0016名無しさん@お腹いっぱい。
01/10/25 01:50ID:k4ugLZV+一応、vc++6.0 sp5は入れてあるんですが、出来上がったexeが実行できません。
どこかにいいドキュメントは無いでしょうか?
#!D:\perl\bin\perl.exe
print "Hello perlcc\n";
たったのこれだけをコンパイルしたいんですが。。
0017名無しさん@お腹いっぱい。
01/10/25 02:36ID:???1)
if($name eq 'tinko pinpin') {
cnt++;
}
--------と
2)
cnt++ if($name eq 'tinko pinpin');
をループさせて速度を測ったら
1)21 wallclock secs (20.95 usr + 0.01 sys = 20.96 CPU)
2)10 wallclock secs (10.23 usr + 0.00 sys = 10.23 CPU)
くらい違いますが、内部ではどのような処理の違いがあるんですか?
教えてください!!!!!!!!!!!!!!!1
0018名無しさん@お腹いっぱい。
01/10/25 02:39ID:???なぜにマルチしますか?
http://piza2.2ch.net/test/read.cgi?bbs=tech&key=991994996&st=520&nofirst=true
0019名無しさん@お腹いっぱい。
01/10/25 02:49ID:???0020名無しさん@お腹いっぱい。
01/10/25 04:17ID:???気になるならソース嫁。
http://www.perl.com/CPAN/src/stable.tar.gz
perl-5.6.1/perly.y の sideff と cond を見て、それぞれの構文のコストを見積もれ。
内部命令の実装は perl-5.6.1/op.c にある。
0021_gunzip
01/10/25 04:37ID:???脱出時のlocal変数のsavestackからのrestoreなどを処理する
クリーンアップコードが必要になるからです。
...とは言え、気にする程のオーバーへッドではありません。
0022_gunzip
01/10/25 04:39ID:???0023名無しさん@お腹いっぱい。
01/10/25 06:43ID:???こりゃこりゃこりゃこりゃこりゃこりゃ
0024前スレの911
01/10/25 09:25ID:MgH0xJgHurlもdiary.cgiのままです。
0025名無しさん@お腹いっぱい。
01/10/25 09:47ID:???せめて前スレの該当記事のトコのURL書いとけよ。
エラー処理のトコで入力されたパスワードと正確なパスワードを表示するようにして
ちゃんと同じパスワードが渡ってるか確認しろ。
てゆーか
http://ebi.2ch.net/test/read.cgi/php/1000267444/937
で既に指摘されてるだろ?
結果はどうなったんだよ。
0027今日からPerlさん
01/10/25 10:50ID:GGoket9P----------
$Old_Dir = './old';
$New_Dir = './new';
$File_Name = 'sample.html';
$Old_File = $Old_Dir + $File_Name;
$New_File = $New_Dir + $File_Name;
rename($Old_File,$New_File);
----------
これでは./old/sample.htmlが./new/sample.htmlに移動してくれません
どうしたらよいのでしょうか
0028名無しさん@お腹いっぱい。
01/10/25 11:07ID:???まず、+ では文字列の連結は出来ないよ。
文字列の連結はピリオドなので、やるなら
$Old_File = $Old_Dir . $File_Name;
でも、これじゃ出来ない。
$Old_File がどういう値になるか考えてみて。
0029名無しさん@お腹いっぱい。
01/10/25 11:09ID:???0030名無しさん@お腹いっぱい。
01/10/25 11:17ID:???0031名無しさん@お腹いっぱい。
01/10/25 11:40ID:???あと、その場合 $Old_Dir と $New_Dir がそれぞれ
'./old/' './new/' でなくてはなりませんね。
そのままでは './oldsample.html' みたいになってしまいます。
003228
01/10/25 11:49ID:o7msDzki言わずにちょっとだけ考える余地を残しておいたのに・・・
0034>>17 こちらのほうが…
01/10/25 13:02ID:???$name eq 'tinko pinpin' and ++$cnt
0035煽ってるわけじゃないですが
01/10/25 14:26ID:???0036名無しさん@お腹いっぱい。
01/10/25 15:09ID:???漢ならそんな事気にすんなよ な!
コンパイラ如きで最適化されてるうちは素人って事よ
がはははは!!!! はぁ....
0037名無しさん@お腹いっぱい。
01/10/25 16:32ID:???何を指して言っているのかわからん。
0038名無しさん@お腹いっぱい。
01/10/25 17:00ID:???0039名無しさん@お腹いっぱい。
01/10/25 17:35ID:???0040名無しさん@お腹いっぱい。
01/10/25 18:32ID:o6v/hYdrDBMってレコードの数が多いと、オープンしたときにそれなりのメモリを消費するのでしょうか?
0041名無しさん@お腹いっぱい。
01/10/25 18:56ID:???実際はデータが全てメモリに展開されることは無かったかと。
使い方によってはメモリ食うだろうし、データが多くなればなるほど
重くなるのはどんなシステムでも同じですが。
0042今日からPerlさん
01/10/25 19:50ID:YIAkhk5x0043名無しさん@お腹いっぱい。
01/10/25 19:58ID:???答え出てます。
>>28、>>31
0044JAPU ◆JAPUTeX.
01/10/25 20:08ID:???何が分からないの?
単に正解だけを求めるのは良くないよ。
----
ちなみに、http://www.japu.org/cgi/security/ は既に移転しています。
(ジャンプするようにしてあるけど。)
0045名無しさん@お腹いっぱい。
01/10/25 20:39ID:???アハハハh アホカ
0046名無しさん@お腹いっぱい。
01/10/25 21:06ID:???0047名無しさん@お腹いっぱい。
01/10/25 21:18ID:???004827の母
01/10/25 21:23ID:???本当に27=42だか知らんが、オナニスト先生は正解も書いてちょんまげ〜
004940
01/10/25 21:36ID:o6v/hYdrハッシュに入れてるのでメモリを食ってるのかと思ってました。
ありがとうございました。
0051名無しさん@お腹いっぱい。
01/10/26 05:34ID:yrZd+AXW.htmlファイルにあるフォームに内容を書いて投稿すると.cgiファイルに渡して
処理をし、表示させるというものはどうにか作ることが出来ました。
しかし色々な方が作っている掲示板の中には投稿フォームの表示から書き込まれ
た内容の処理、それらの表示までを.cgiファイルだけでほとんど全ての処理を行
うものがあります。次はこういうスクリプトを作りたいのですが、どうしてもう
まく行きません。
既にログファイルに書き込まれている内容を投稿フォームの下に表示することと
投稿した内容をログファイルに書き込むことはできるのですが、書き込み→処理
→表示ができません。つまり、投稿した内容はリロードしないと読むことが出来
ないのです。
ただ上の動作をさせたいためだけに作ろうとしたスクリプトとはいえ、仕上って
みるとやたらに『</body></html>』の多いものになってしまいました。今までは
どんなに頑張ってもできなかったのに、ここに載せるために書いたものが偶然そ
ういうものになったという棚ボタスクリプトのため、効率も何もあったものでは
なく・・・。
ここに載せるにはあまりにも長いため、別サイトに置くことにしました。
http://www.geocities.co.jp/Outdoors-River/5665/sample.txt
よろしくお願いします。
ここにある簡単なBBSのスクリプトをダウンロードしてから処理の流れ見て
みましょう。
デバッグの方法がわからないなら、
sub debug_print {
print "Content-Type: text/plain\n\n";
foreach (@_) { print "$_," }
exit;
}
でも使って1行ずつわからない変数があれば目で見て調べましょう
0053名無しさん@お腹いっぱい。
01/10/26 07:36ID:???そのソースのまま順番を変えたら表示出来たよ。
$ENV{"CONTENT_LENGTH"}空なら書き込み処理はいらないよね。
0054名無しさん@お腹いっぱい。
01/10/26 13:12ID:???&log_viewer; # ログ展開して記事表示
&get_time; # 日時取得して
&decord; # フォームデコードして
&data_write; # ログに書き込み。
>>52さんの言うように
他の配布スクリプトの処理の流れを見て、
BBSがどういう処理をすれば動くのか考えてみるといいかも。
&decord; # フォームデコードして
&get_time; # 日時取得して
&data_write; # ログに書き込み。
⊤ # 投稿フォームを表示して
&log_viewer; # ログ展開して記事表示
0055名無しさん@お腹いっぱい。
01/10/26 15:10ID:LxO4xBRISchedule::Cronを使おうかと考えていますが、実行プログラムをエントリーすることは
できても削除することはできません。
(全部削除することはできる)
cronを自由自在に操るライブラリもしくはcron likeなプログラムってありませんか?
0056名無しさん@お腹いっぱい。
01/10/26 18:06ID:YTmtLQJfPerlでCGIを書いてるプログラミング初心者です。
いきなりですが、
ローカルで動いたCGIがアップすると動かない場合、
どんなミスが考えられるでしょうか。
パスはあってます。
パーミッションもあってます。
これ意外でなにか思い当たることがあれば教えていただけませんか?
よろしくお願いします。
0057名無しさん@お腹いっぱい。
01/10/26 18:14ID:???エラーになる原因はいくらでもあります・・
httpdのエラーログ見ましょう。
005856
01/10/26 19:14ID:YTmtLQJfすみません、httpdって何ですか?
0059名無しさん@お腹いっぱい。
01/10/26 19:23ID:???0060名無しさん@お腹いっぱい。
01/10/26 19:58ID:DV5PQduC貴様が馬鹿だ。
006156
01/10/26 20:22ID:YTmtLQJf馬鹿かどうかはともかく、知識がないことは認めます。
質問の仕方が悪かったようなのでまとめます。。
自分用に日記スクリプトを組んで、
ローカルでは正常に動きました。
環境はMacJPerlとWEB共有でした。
MacJPerlでの構文チェックはOKが出ました。
このあと、借りているサーバにアップして
パーミッション設定をして動かしてみました
そしたら、一部の機能は動いたんですが
サーバがエラーを返す時もありました
なぜかわからないので、
もしかしたら・・と思うところがあったら
教えていただけませんか?
0062名無しさん@お腹いっぱい。
01/10/26 20:26ID:???0063名無しさん@お腹いっぱい。
01/10/26 20:40ID:???で、残念だけど、自分で書いたコードならその「エラーを返す時」がどんな
コードなのかを書かないと答えられない
これを使ってエラーを捕捉してみてくれ
http://www.kawa.net/works/perl/catch/news.html
Unixlike<=>Mac<=>WIN、環境で結構引っ掛かるので俺が知ってるのは
ディレクトリ区切り子 \とか/とか:とか
ディレクトリ相対パスの問題 IIS3とか
スクリプト起動時のカレントディレクトリの問題
OSに依存したシステムコール
OSに依存した関数の使用
多分まだまだネタはあるはず
0064名無しさん@お腹いっぱい。
01/10/26 22:16ID:e913wNIn出てくるようなのですが、これをタイムスタンプ順にすることは
可能でしょうか?
006551
01/10/27 00:19ID:CaJiAhlr>>53
>>54
ありがとうございます。
確かに・・・。
流れを読んだ上で組み合わせれば何と言うことのないことでした。
>>52さんが紹介してくれたサイトのスクリプトをじっくり眺めてみることにします。
ありがとうございました。
0066名無しさん@お腹いっぱい。
01/10/27 01:54ID:LY0Lfwspディレクトリ単位でソートするなら可能だよ。
find( {wanted => \&wanted, preprocess => \&preprocess }, $dir );
sub preprocess {
@_に入ってくるファイル名をタイムスタンプでソートした結果を返す
}
0067名無しさん@お腹いっぱい。
01/10/27 08:38ID:C540eYR0ディレクトリ単位で良いです。っていうかディレクトリ単位が良いです。
助かりました!
0068名無しさん@お腹いっぱい。
01/10/27 15:49ID:???から組んでるんだけど知り合いとかはさくさく組んじゃうんだよね。
フローチャート作ってる俺って厨房ですか?
0069名無しさん@お腹いっぱい。
01/10/27 16:12ID:???グチャグチャと絡まった概念を解く事が出来るから漏れは良く書いてる
(覚え書き程度のもんだが・・・)
Keyboardばっかり叩いてると、紙に書いた事は結構クッキリと頭に残ったりとかね
*死ぬ程忙しい時は、するべき事を紙に書いてみよう、意外と大事な用は一つだったりして
0070名無しさん@お腹いっぱい。
01/10/27 18:37ID:???0071名無しさん@お腹いっぱい。
01/10/27 20:09ID:???$var >>= 5;
ではどっちが速いですか??
0072Perl上級者
01/10/27 20:32ID:???0073名無しさん@お腹いっぱい。
01/10/27 20:33ID:???自分でベンチマークとれ。
007471
01/10/27 20:34ID:???0075名無しさん@お腹いっぱい。
01/10/27 20:40ID:???0076名無しさん@お腹いっぱい。
01/10/27 20:42ID:???perldoc -u Benchmark
これで大体分からないかな、要はかっこでくくるだけだよ
0077名無しさん@お腹いっぱい。
01/10/27 20:45ID:???後者は小数点以下切り捨ててないかい?
0078名無しさん
01/10/27 20:50ID:???0079名無しさん@お腹いっぱい。
01/10/27 20:53ID:???0080名無しさん@お腹いっぱい。
01/10/27 21:13ID:???煽り止めれ。Perl上級者と同レベル。
0081Perl上級車
01/10/27 21:16ID:???こんな程度の低いところは嫌だからな。
0082名無しさん@お腹いっぱい。
01/10/27 21:18ID:???0083名無しさん@お腹いっぱい。
01/10/27 21:21ID:???0084名無しさん@お腹いっぱい。
01/10/27 21:24ID:???過疎地うろついてないでマ板いきなよ
Perlスレもぽこぽこ建ってるし
0085名無しさん@お腹いっぱい。
01/10/27 22:52ID:???0086名無しさん@お腹いっぱい。
01/10/27 22:56ID:???0087名無しさん@お腹いっぱい。
01/10/28 21:53ID:???0088名無しさん@お腹いっぱい。
01/10/29 03:25ID:pi9OrPjFみたいなアルファベット大・小文字全部並べるスライスの,簡単な書き方ってありますか?
関数に文字数指定して,文字列として書かせたのを,evalして使ってるんですが
無駄なことしてるかもと思ったので。
0089名無しさん@お腹いっぱい。
01/10/29 03:30ID:???009088
01/10/29 03:50ID:pi9OrPjF普通に手で書くと,文字数増えるごとに書くのもどんどん増えていっちゃうので,
(aa..ZZ)とか(\w{3})みたいな書き方はできないかなぁと。
88の関数はこんなのです。
@arry = eval getArry(1);
sub getArry {
my $nest = shift;
my $word = shift || '';
my $i = 0;
my $ret = '';
foreach (a,A) {
my $word = $word.$_;
if ($nest>0) {
$ret .= getArry($nest-1, $word);
} else {
$i++;
$ret .= "$word..";
$ret .= 'z'x length $word;
$ret .= ',';
}
}
return $ret;
}
0091名無しさん@お腹いっぱい。
01/10/29 07:15ID:???つーかむしろ(a..z)だけにして、文字列長投げるような関数に
した方が良いんじゃないの?
呼び出しのコストを嫌ってるのか・・・・
漏れはデカイ配列の方が嫌いだけどなあ
0092名無しさん@お腹いっぱい。
01/10/29 07:19ID:???再帰しなくても良さそうだな、、
帰ったら書くわ
0093名無しさん@お腹いっぱい。
01/10/29 17:18ID:???>漏れはデカイ配列の方が嫌いだけどなあ
俺もおなじくです。2文字(aa〜ZZ)ぐらいならいいんですが、
4文字(aaaa〜ZZZZ)なんかはちょっと配列に入れるのがつらい。
用途にもよるけど、呼び出すごとに「次の文字列」を返す関数を
作って、STLのnext_permutationみたいな使い方をするのが
いいと思う。
0094名無しさん@お腹いっぱい。
01/10/29 20:26ID:gd3uwUNc一番メモリを使わずに調べる方法は何ですか?
0095名無しさん@お腹いっぱい。
01/10/29 21:04ID:???0096名無しさん@お腹いっぱい。
01/10/29 21:14ID:???nバイトずつreadして"\n"の個数を数える。
0097名無しさん@お腹いっぱい。
01/10/29 21:15ID:???my ($lineNum,$fileName,$buf);
open (FH,"fileName");
while (1){
read(FH,$buf,1);
last if $buf eq '';
$lineNum++ if $buf eq "\n";
}
print "行数は$lineNumです\n";
0098名無しさん@お腹いっぱい。
01/10/29 21:45ID:???open(FH, $file) or die "Can't open $file";
my $count;
$count = $. while (<FH>);
close(FH);
0099名無しさん@お腹いっぱい。
01/10/29 21:54ID:???大量のデータを長期間無駄に保持するのは避けたいけど、
ほとんどの場合、あえて明示的にundefするまでもないと思う。
まあ具体的なコードを見ないと判断つかないっすね。
0100始めて数日なんですが
01/10/29 22:08ID:???0102名無しさん@お腹いっぱい。
01/10/29 22:14ID:???> 始めて数日なんですが
日本語を?
0103名無しさん@お腹いっぱい。
01/10/29 22:21ID:WYkKLjrwperldocの該当個所を4〜5回読み直し、それでも理解できなければ
いまは知る必要がないのだとあきらめて後回しにした。
すくなくとも他人の言葉には頼らなかった。
0104名無しさん@お腹いっぱい。
01/10/29 22:21ID:???とにかく、首をくくるのがいいと思われ
0105マジレス
01/10/29 22:23ID:???始めて数日の人がそんな壁にぶつかる訳がありません。
Googleで検索したりリンク辿ったりすれば、参考になるものが
見つかるはずです。
少なくとも初心者の内は検索などで十分です。
(分不相応な事をしなければ)
そして初心者を抜ければ殆ど自分で判断できるようになる筈です。
0106Perl上級者
01/10/29 22:27ID:???0107名無しさん@お腹いっぱい。
01/10/29 22:28ID:???お前も一々煽るな。邪魔臭い。
0108Perl上級者
01/10/29 22:29ID:???0109名無しさん@お腹いっぱい。
01/10/29 22:32ID:???馴れ合いの逆は煽りかよ。馬鹿丸出し。
いいからとっとと失せろ。
0111名無しさん@お腹いっぱい。
01/10/29 22:37ID:???0112名無しさん@お腹いっぱい。
01/10/29 22:43ID:???「どうなの?」って聞かれても何と答えれば良いのやら。
0113名無しさん@お腹いっぱい。 :
01/10/29 22:59ID:???0114Perl上級者
01/10/29 23:09ID:???0115Perl上級者
01/10/29 23:12ID:???あとtinkopinpinとか ゲラゲラ〜
0116名無しさん@お腹いっぱい。
01/10/29 23:18ID:???この板の哀愁が漂ってくるね
もっと勉強しよ・・・
0117名無しさん@お腹いっぱい。
01/10/30 01:03ID:???あるログインCGIを作っていて
ログイン(ID/Pass)→ メニューとメイン画面をフレームで表示
と言う処理を行っています。
このときメニューとメイン画面もログイン用のファイルと一緒にしているのですが、
別々の物に分けたほうが良いのでしょうか?
//サンプル
if{
&ログインパスチェック
}elsif{
&左フレーム(メニュー)表示
}else{
&右フレーム(メイン画面)表示
}
#それぞれ引数を変更してやって判定
sub ログインパスチェック{
if(パスチェックが成功したら){
print <<EOM;
<FRAME SRC=./login.cgi?id=$in{'id'}&passwd=$in{'passwd'}&cmd=01 NAME="menu">
<FRAME SRC=./login.cgi?id=$in{'id'}&passwd=$in{'passwd'}&cmd=02 NAME="main">
EOM
}else{
print <<EOM;
<FRAME SRC=./login.cgi?id=$in{'id'}&passwd=$in{'passwd'}&cmd=01 NAME="menu">
<FRAME SRC=./login.cgi?id=$in{'id'}&passwd=$in{'passwd'}&cmd=03 NAME="main">
EOM
}
瞬間的に3度同じファイルを実行する事になり、そのたびにデータを読み出しているので心配です。
また、他のファイルに分けて処理した方が動作がスムーズになる、とも聞きました。
どうでしょうか。
足りない部分があれば随時補足させて頂きます。
根本的にこんなロジックにした方が良い、と言う意見もあれば是非お聞かせください。
0118名無しさん@お腹いっぱい。
01/10/30 01:27ID:mgB2/g2Wこの場合、認証をすべてlogin.cgiでまかなうのも、
login.cgi、frame.cgi、main.cgi、menu.cgi等に分割するのも、
さして変わりはないと思う。
どちらにしても認証後に3つのCGIがほぼ同時に起動するわけだし。
なにか改善策があるとすれば、
>根本的にこんなロジックにした方が良い、と言う意見
ここだろうけど、おれには考えつかない。
CGIで認証する限り、「1ページ表示するごとにパスワードファイルの読み書きが必要」と
いう問題は避けられないのでは。
0119名無しさん@お腹いっぱい。
01/10/30 03:48ID:???なるほど、貴重なご意見有難うございます。
やはり逐一パスワードファイルにアクセスしないといけないのは
宿命ですかね。
0120名無しさん@お腹いっぱい。
01/10/30 09:32ID:???どっちかってーとCGIだけどなんか質問ある?向きだけど・・・
とりあえず「セッション」とかって言葉を調べると幸せになれるかもしれません。。。えいめん。
0121ぽ
01/10/30 14:05ID:KnXoAd8Aライブラリの場所は 相対で ../lib にあります。
エレガントな指定方法を教えてください。
今は
{
my $base;
BEGIN{
$libPath = $0;
$libPath =~ s|/[^/]+$|/lib|;
}
use lib ($libPath);
}
0122名無しさん@お腹いっぱい。
01/10/30 14:12ID:???0123名無しさん@お腹いっぱい。
01/10/30 16:33ID:???フルパス指定がいやならFindBinモジュールを利用。
0125名無しさん@お腹いっぱい。
01/10/30 17:04ID:HjkR1Pfbcronで起動するときにchdirする方法を愛用してます。
スクリプトのほうで小細工する必要なし!
0126121
01/10/30 17:12ID:???あと /etc/aliases から "| /foo/bar/hogehoge" でも起動されるやつも
あるんで FindBin でいくことにします
はっ /etc/aliases のやつも "| (cd /foo/bar ; ./hogehoge)" すると
いけるのかな?
0127名無しさん@お腹いっぱい。
01/10/31 11:19ID:odi0QzL3Mac OS 9.02から、Mac OS 10.1にして勉強を始めようと思っています
しかし、Mac OS 10.1に入ってるperlは日本語関連でかなり問題がある、
というのを聞いて驚きました。
ビギナーではMac OS 10.1はやめておいた方がいいのでしょうか?
参考書みてもそもそも正常に動作しなかったら挫折しやすい、というか。
どのような問題があるかはgoogleなどで引っかけても上手くかからなかったので
わからないんですが、よろしければアドバイスお願いします。
0128名無しさん@お腹いっぱい。
01/10/31 11:30ID:???マックのことはマック使ってる人に聞くのがよろし。
マックでプログラムやるなら
http://pc.2ch.net/test/read.cgi/mac/1003548817/
MACの開発ソフト
http://pc.2ch.net/test/read.cgi/tech/978844038/
0129名無しさん@お腹いっぱい。
01/10/31 11:41ID:bNMt3mtaいいんですか?
0130名無しさん@お腹いっぱい。
01/10/31 12:04ID:???あ、ありがとうございます
0131あげてみる
01/11/02 13:01ID:yAhXsts10132名無しさん@お腹いっぱい。
01/11/02 19:40ID:+bAAQDJNハッシュをサブルーティンに渡して、サブルーティンの中でも同じように
ハッシュとして参照したいのですが、どうもうまくいきません。
下のように書いたのですが、値が表示できません。
どのようにすればうまくいくか教えていただけないでしょうか?
my %jjj ;
$jjj{'aaa'} = "111";
$jjj{'bbb'} = "222";
$jjj{'ccc'} = "333";
&test( %jjj ) ;
sub test {
my $jjj_ref = @_ ;
print("#### $jjj_ref->{'aaa'}") ;
}
0133Ks
01/11/02 20:11ID:???httpヘッダで困っています。
・httpの拡張ヘッダって編集できるものなの?
・どうやって編集するの?
・拡張ヘッダの設定内容を見て処理をするって可能なの?どうやって
するの?
誰か教えて頂けませんか?
もしくはわかるサイトを教えて頂けませんか?宜しくお願いします。
0134名無しさん@お腹いっぱい。
01/11/02 20:17ID:???sub test {
my $jjj_ref = $_[0] ;
print("#### "."$jjj_ref->{'aaa'}") ;
}
ハッシュの前に引数の受け取り方を調べよう :-)
0135名無しさん@お腹いっぱい。
01/11/02 20:18ID:???詳しくはここ
http://www.w3.org/Protocols/rfc2616/rfc2616.html
0136名無しさん@お腹いっぱい。
01/11/02 20:34ID:???0137名無しさん@お腹いっぱい。
01/11/02 20:37ID:???sub test(\%);
test(%jjj);
sub test(\%){
my $href = shift;
print $href->{aaa};
}
0138名無しさん@お腹いっぱい。
01/11/02 20:41ID:ofsCZTnG$hoge ='aa,bbb,cc,ddd,nn,nn,yy,zzz';
のように格納されていた場合後ろから2つ目の「,」
の位置を調べたいのですがどうすれば良いのでしょうか?
お願いします。
0139名無しさん@お腹いっぱい。
01/11/02 21:38ID:???0140名無しさん@お腹いっぱい。
01/11/02 21:43ID:29kqQmn/レスありがとうございます。
早速使わせていただきます。
どうもでしたm(_ _)m
0141名無しさん@お腹いっぱい。
01/11/02 21:46ID:???0142名無しさん@お腹いっぱい。
01/11/02 21:49ID:29kqQmn/それはどういうものでしょうか?
POSを使うのですか?
0143141
01/11/02 22:01ID:/ySb/MGF文字を後ろ向きに検索して,見つかった位置を返す。
perldoc -f rindexあたりで説明見られると思う。
0144名無しさん@お腹いっぱい。
01/11/02 22:03ID:29kqQmn/親切にどうもありがとうございますです。
0145132
01/11/02 23:28ID:+bAAQDJN>>137
ありがとうございます。勉強し直します。
&test( \%jjj ) ;こう書いてました。
根本的に勉強不足だったようです。
0146cgiビギナー
01/11/03 01:03ID:???今ealisという掲示板で奮闘しています。
関連サイト→http://kano.vis.ne.jp/erial/
そこの設置開設のところでparlパスを書き込むのですが
最初の行に#!/usr/local/bin/perlと書き込めばよろしいのでしょうか?
まだ質問がありますがひとまずお願いいたします。
0147名無しさん@お腹いっぱい。
01/11/03 01:16ID:???何を言いたいのか全く解りません。
普通、CGIを設置する上で"Perlのパス"といった場合は
#!/usr/local/bin/perl
などの1行を指す場合は多いです。
この1行はサーバ上のPerlというプログラムの位置
(WinでいうならC:\Program Files\perl\perl.exeという感じ)
を表します。
そのため、サーバによってインストールされた場所も異なり、
サーバごとに記述するべき内容異なります。
そもそも、ここに書き込む前にしかるべきサイトで
CGIについて勉強してくるべきだと思われます。
0148名無しさん@お腹いっぱい。
01/11/03 01:16ID:???KENT氏のページへ行かれたほうがよろしいかと思います。
http://www.kent-web.com/
氏のサイトは,初心者にも優しいと定評があります。
0149148
01/11/03 01:19ID:???優しい->易しい
0151名無しさん@お腹いっぱい。
01/11/03 02:42ID:cMX/dhh7(チャットのよそからの発言を禁止するような感じです。)
referer調べる以外で良い方法は無いものでしょうか?
0152名無しさん@お腹いっぱい。
01/11/03 02:55ID:???IDを発行するとか。
0153名無しさん@お腹いっぱい。
01/11/03 13:58ID:???処理系依存ですかね
スタック食い尽くす前にヲーニングくれたりしないかな・・・
0154名無しさん@お腹いっぱい。
01/11/03 15:58ID:cu67OhWQってなんですか?
厨房でスイマセン…。
0155名無しさん@お腹いっぱい。
01/11/03 16:04ID:???0156名無しさん@お腹いっぱい。
01/11/03 16:14ID:???0157cgiビギナー=146
01/11/03 16:31ID:???あとページエラーが出てしまいます。
原因は$INI{'locate'} = 'http://www.hogefoo.ne.jp/~bar/cgi-bin/ealis/';
という所で「eliasをインストールするDIRのhttpパスを書く」という単語の意味がわからず
間違っている書き込みをしていると思います。
お手数なのですが改善できる術は無いでしょうか?
関連サイト→http://kano.vis.ne.jp/erial/ealis/setup.html
そのealisを置いている場所は
ttp;//トップ/cgi-bin/test
のテスト言うディレクトリに入れてあります。よろしくお願いいたします。
0158名無しさん@お腹いっぱい。
01/11/03 16:53ID:???↓
eliasをインストールするディレクトリのアドレスを書く
↓
分からない単語は検索しろ
ディレクトリ、アドレス、パス、http://www.google.com/
0159cgiビギナー=146
01/11/03 17:02ID:???ありがとうございます。
0160名無しさん@お腹いっぱい。
01/11/03 17:37ID:vwyWsLPjたとえば、
while(<>) { print }
は
while($_ = <>) { print $_ }
と等価。
length の引数を省略したときは length $_ を返す、とかいろいろあるので、「プログラミングPerl改訂版」を読みましょう。
(perldoc でもよいが)
0161名無しさん@お腹いっぱい。
01/11/03 18:59ID:???常時、積極的に使用するほどメリットがあるとは思わないが、
何万回といったループの中で使うと結構でかい差になるかもしれない。
0162名無しさん@お腹いっぱい。
01/11/03 19:12ID:???0163_gunzip@鬱だ詩嚢
01/11/03 20:33ID:???my()で確保しているpadlist内の変数の数/大きさにも依りますから
一概に何回、とは言いきれません。
ただ、-w オプションを付ける、ないしwarningsプラグマで
"recursion"カテゴリの警告を行うよう設定していれば、
サブルーチンの100回以上の再帰呼び出しがなされた時点で警告が出ます。
(中止するわけではないので、あまり意味はありませんが)
各CVは、おのおの自分自身の再帰呼び出し回数をxcv_depth
メンバに保持していますから、内部APIのCvDEPTHマクロを利用して、
規定回数以上になれば強制的にreturnさせるコードを挿入する
ぐらいしか対策がないような気がします。
I32 get_depth(SV *sv)
{
if(SvROK(sv) && SvTYPE(SvRV(sv)) == SVt_PVCV)
return CvDEPTH(SvRV(sv));
else
return -1;
}
0164_gunzip@鬱だ詩嚢
01/11/03 20:43ID:???0165名無しさん@お腹いっぱい。
01/11/03 23:48ID:???ここは1に書いてあるように「perlのコーディングで困ってる人のスレ」
だから、こっちで聞く方が良いと思いますよ。
CGIだけど、なんか質問ある?part4
http://pc.2ch.net/test/read.cgi/php/1000804655/l50
0166名無しさん@お腹いっぱい。
01/11/04 00:00ID:oP9d6xQM手続きなど無しで制限したいのですがやはり無理でしょうか?
お願いします。
0167名無しさん@お腹いっぱい。
01/11/04 00:06ID:???0168名無しさん@お腹いっぱい。
01/11/04 00:22ID:oP9d6xQM.haccessで制限できますか?
↑関連スレで質問した方が良いかな?
0169名無しさん@お腹いっぱい。
01/11/04 01:34ID:???167は.htaccessでユーザ認証しなさいってことじゃないすか。
いちおう.htaccessのRewriteRule/RewriteCondを使うと
リファラを見て外部からのアクセスを拒絶することはできるけど、
151でリファラ以外の方法って書いてあるしね。
0170名無しさん@お腹いっぱい。
01/11/04 03:26ID:h2smYChVどうすれば良いでしょうか?
$str='a壱弐参四五'; # length:11
$str=~s/^(.{10}).*/$1/;
例えばこんな感じで長さを10にする事はできるのですが、
バイナリデータをぶった切ってしまってバイナリの片割れが出てきてしまいます。
切る所がバイナリデータだった場合は回避して、この場合は長さ9にしたいです。
バイナリデータの判別方がわかれば何とかできると思いますがわかりません。
どうすれば実現できるでしょうか?
0171cgiビギナー=146
01/11/04 03:44ID:???無事に掲示板を設置することが出来ました。
どうやらDIR=ディレクトリのことらしいでここら辺がわからなかったのですよ。
色々お手数をおかけしました。今度β版と言う難しいのに挑戦しようと思っているので
そちらの方に質問をさせていただくかもしれません。
とりあえず今はトホホのサイトにて勉強しながらやっていきます。
0172名無しさん@お腹いっぱい。
01/11/04 04:04ID:cP9onYMmいろいろあると思うが、おれはこうしてる。
(1)最初に10バイトで切る。
(2)先頭から「正しいバイナリ」が続く部分だけ残して、その後ろを削除。
たとえば「Shift_JISまたはASCII」を切り出す場合は、
$str = substr($str, 0, 10);
$str =~ s/^((?:[\x81-\x9F\xE0-\xEC][\x40-\x7E\x80-\xFC]|[\xA1-\xDF]|[\x20-\x7E])*).*/$1/;
0173名無しさん@お腹いっぱい。
01/11/04 04:18ID:h2smYChV正しいバイナリというのがそう言う感じで記述できるんですね。
扱おうとしてるのはSjisだし、なんなら文字コード変換もできるので、
そのまま使えそうです。
漠然とわかったので、自分の中でちょっと煮詰めてみます。
ありがとうございましたー。
0174名無しさん@お腹いっぱい。
01/11/04 04:37ID:???>正しいバイナリというのがそう言う感じで記述できるんですね。
いや「Shift_JISまたはASCII」というのは、
正規表現であらわせる素直なデータだからね。
「正しいバイナリ」の定義によっては、1バイトずつ切り出して
逐一判定しなければならない場合もたぶんあるでしょう。
いつでも正規表現が使えるとは思わないほうがいい。
0175173
01/11/04 14:35ID:???メタキャラを含んだ文字列の正規表現でエラーというのは
既に実感を伴って経験済みです。
ともあれ、無事に実現できました。ありがとうございます。
しばらく様子を見てみて、エラーが生じたりするようならまた考えてみます。
0176153
01/11/04 17:36ID:???ちょっと聞き方がタコでしたね、perlマンセーな処理が有ったんですけど
家では問題無かったのに、会社のプアマシーンだとあぼーんしたんで
少し気になったんです、流石にそこまでは面倒見てくれないですか。。。
取り合えず50回位潜ったら、一旦全部抜けて、
続きからやり直し、って言う風にしてみましたです。
0177名無しさん@お腹いっぱい。
01/11/04 17:57ID:vlyHsBRzいま、ちょっとはまってしまっています。
状態は、500文字から1000文字くらいの文字列をいくつか作って
print文で表示させたいのですが、文字列を3個作って、3カ所print文を
文字列作成後に表示させようとすると、最後のprint文の途中まで表示して
そのまま待ち状態に、一回プログラム止めて今度は5個作って表示させると
さっき止まった3個目はきちんと表示されて、今度は5個目の途中で表示が
止まってしまいます。何回か実行させてみても同じところで表示が止まって
しまいます。どうも長い文字列のprint文(いくつかある時の)最後のprint
文で起こるようなのですが
出力先はブラウザです。print文の後には文字列を使う処理がありますが
そこまで進めません。print文で止まってしまって
どなたか同じような状態になったことある方いらっしゃられませんか?
どのようにしたら正常に表示できるのでしょうか?
わかりにくい説明ですみませんが、どうぞよろしくお願いします
0178名無しさん@お腹いっぱい。
01/11/04 18:05ID:???0179ぽ
01/11/04 18:49ID:iWvZka32Jcode.pm に jfold ってのがあるよ
0180177
01/11/04 20:39ID:vlyHsBRzperlで、C言語とかでいうデバッガみたいなものは、ないのでしょうか?
上で書いたような状態でもう2,3日苦しんでいる状態で
できれば、1行ずつとかで、実行して原因がわかればと考えたのですが
わかる方、どうかご回答よろしくお願いします
0181名無しさん@お腹いっぱい。
01/11/04 20:51ID:6q0Jo2MQある特定の定義を一気にコメント化したりするのに,
sed等のコマンドを使って,シェルスクリプトを書いてました.
こんどperl を使ってこういう処理を使用と思ってるのですが,
あなたの使っているいいソースありませんか?(笑)
0182名無しさん@お腹いっぱい。
01/11/04 21:59ID:RPCUxOjps2p とか a2p を使うと吉かと。
0183177
01/11/04 22:19ID:vlyHsBRzいくつかのcgiを経由して、情報を集めて処理するcgiで現象が起きています
引き継いでいるデータがかなりあるので、困っています
一個のモジュールでのデバックはやったことあるのですが、
画面表示(html)->入力データ処理・検索・画面表示(cgi)->入力データ処理・画面表示(cgi)->
のような感じで、最終的に現象の起こっているcgiに行く頃にはかなりの情報があります
こういう場合コマンドラインでのデバックって可能なのでしょうか?
htmlもそのまま表示されてボタンとか押せないですよね
何かいい方法ありませんでしょうか?
よろしくお願いします
0184名無しさん@お腹いっぱい。
01/11/04 22:46ID:PfX5esry#っていうか間違ってるかも知れない
180>
perl -d script_name
183>
use CGI::Carp;
HTMLのコメント文としてデバッグ情報を出力
perl -d -MModule -e '1;' してmoduleをテスト
スクリプトそのものを少し書き換えてコマンドラインで動くようにする
とかいうのを思い付きます。
0185177
01/11/04 22:57ID:vlyHsBRzありがとうございます。
調べて試してみます
0186151
01/11/05 01:45ID:J/g4IyEGやはりrefererを使ってはじくしか無いのですね。
レスありがとうございました。
0187名無しさん@お腹いっぱい。
01/11/05 16:44ID:???ある特定の定義って何よ?
そこんとこ、もう少し聞かせてくれない? C言語だよね?
0188名無しさん@お腹いっぱい。
01/11/05 18:02ID:???これ逝く人いないの?
0189名無しさん@お腹いっぱい。
01/11/05 18:04ID:???#...
}
sub func()
{
#...
}
みなさんはどっちが好みですか?
0190名無しさん@お腹いっぱい。
01/11/05 18:41ID:5Lr/KNWp前者。
0191名無しさん@お腹いっぱい。
01/11/05 18:57ID:???同じく、関数定義の事言ってるのか、だったら呼んでる所も
一緒に殺すって事? どうもperl万歳っぽい気はするが意味が解らん w
俺は関数改造した時とか一気に名前入れ替えるのに使ってる
0192名無しさん@お腹いっぱい。
01/11/05 21:48ID:???同じ処理でもこっちの方が良いとか。
あと前誰かだしてたけど、処理の負荷に関するページの紹介とか。
同じ変数使いまわすなら最初に変数の領域を確保しといた方が
良いとかそんなの。
0193名無しさん@お腹いっぱい。
01/11/05 22:30ID:???http://pc.2ch.net/test/read.cgi/php/991313362/
0194192
01/11/05 22:35ID:???というかスレ立ててもすぐ下がっちゃうか…。
どこかこんなページあれば教えて欲しいです。
0195名無しさん@お腹いっぱい。
01/11/05 23:18ID:???ちゅうかsedもCも知ってるならそん位1日で出来る様になるよ!
perldocの、「sedの洗練されたPGが〜〜」「Cに洗脳されたPGが〜〜」
辺り読めばバッチシ、正規表現なんかは後方互換性有るから結構そのまま使えるしね
その手のはビックリする位サクサク出来ちゃうぞっと♪
そしてダメな人間になって行くのじゃ ふふふ
0196名無しさん@お腹いっぱい。
01/11/06 03:08ID:???そそ。で、Perlないと仕事する気にもならないと。(w
実際、Unix -> Winに移ってきて、シェルやコマンド群の貧弱さには
閉口したけど、Perlが使えるんで何とか工夫してやってる。
ただ、Winで真っ黒な背景のDOS窓開いて、パイプやリダイレクト組み合わせて
コマンド打ち込んでいると、確実に異端視される。
素人にはお勧めできない。(縛
0197名無しさん@お腹いっぱい。
01/11/06 04:54ID:???教えてください。webページのフォームからpostメソッドでファイルを
cgiにアップロードしようとしているのですが、32KB以上のデータって
macperlだと受けとれないんでしょうか。32KB以下のサイズのファイル
だとうまくいっているのですが・・・。
0198名無しさん@お腹いっぱい。
01/11/06 16:49ID:???少なくともMacperlにはそんな機能は無いしバグも上がっていない(筈)
0199名無しさん@お腹いっぱい。
01/11/06 17:01ID:???cgi-lib.plを利用していますか?
>$cgi_lib'maxdata = *****; # maximum bytes to accept via POST - 2^17
この行を確認してみてください。
0200名無しさん@お腹いっぱい。
01/11/06 17:11ID:TnuiR6XG「Internal Server Error」が出ます。
パーミッションもあってると思うし原因が不明です。
Apacheでcgiの許可のあるディレクトリに置いてます。
test1.cgiって言うファイルです。
perlの場所も確かめました。
0201名無しさん@お腹いっぱい。
01/11/06 17:19ID:???それだけの情報でどうしろと?
0202名無しさん@お腹いっぱい。
01/11/06 17:19ID:???エラーログを見よう、-> $HOME/logs/error_log 辺りに有る
メッセージと適当にGoogleに放り込めばわらわら対策がヒットする
0203名無しさん@お腹いっぱい。
01/11/06 17:25ID:???0204200
01/11/06 17:38ID:TnuiR6XG改行コードの問題らしいです。
malformed header from script.
もう一個はこれです。
0205むぎ茶
01/11/06 17:40ID:Zd0wUikGMeadowとか秀丸で変換しよう
Malformed はCGIが途中で終わったんでヘッダが変だよって httpd からのメッセージ
0206名無しさん@お腹いっぱい。
01/11/06 17:46ID:???だったら改行コードは関係ねーよ、
Premature end of script headers
これは適当なHTTPヘッダを吐く前にプログラムが終わったって事
`HTTP``ヘッダ``CGI``Content` 辺りで検索せい
0207200
01/11/06 17:56ID:TnuiR6XGContentが抜けてました。
0208名無しさん@お腹いっぱい。
01/11/06 18:39ID:???これ以上はCGIスレね。
ContentっつーかContent-Type。
0209名無しさん@お腹いっぱい。
01/11/07 04:16ID:w4jQYe5D$var = 'MAIN';
print "$var\n";
package sub1; use vars qw[$var];
print "$var\n"; # (1)
$var = 'SUB1';
package sub2; use vars qw[$var];
print "$var\n"; # (2)
$var = 'SUB2';
__END__
(1)でMAINを(2)でSUB1を表示させたいのですが,$varがグローバルに使えません。
どうすればできますか?
Perl5.6ではなく,Perl5のやりかたでお願いします。
0210名無しさん@お腹いっぱい。
01/11/07 04:21ID:???$sub1::var
0211名無しさん@お腹いっぱい。
01/11/07 06:18ID:???Perlの@はCの2次元配列のようなものと考えて良いんでしょうか?
例えば、、、
@ary = ('H','e','l','l','o');
printf ("%s",@ary);
だと H しか印字されないのです。。
それと、シングルクウォートとダブルクウォートの使い分けが
今一つ分からないのです。
0212名無しさん@お腹いっぱい。
01/11/07 06:30ID:???リファレンスを使えばそれらしきことも可能。
print @ary;
Single -> 変数展開無し
Double -> 変数展開有り
my $str = 'hoge';
print "$str";
print '$str';
0213名無しさん@お腹いっぱい。
01/11/07 07:50ID:???取り合えずCは忘れれ (・∀・) その書き方見てると辛そうだけど・・
全部の型と**文字列**が、int型に収まるとでも思ってくれ、atoiとか忘れれ
そう言う意味で前半の考えはイイ感じ
で、コンテキストで@aryの評価がコロコロ変わるんだけど、それは解るしかない
配列@aryの要素は@ary[0]じゃ無くて$ary[0]、慣れれ
クオートは、取り合えず全部 " にしる、2バイト文字使わなきゃこれで良い
printf ("今%s時です\n",$time); これは全然OK!
0214212
01/11/07 09:47ID:???それは配列リファレンス使って、でしょ。
正確な意味では無いって解釈じゃいかんかな。
上2行はそんな感じだったんだが。
いや、別にどうでもいいんだが。
0215名無しさん@お腹いっぱい。
01/11/07 14:16ID:???package main;
use vars qw[$var];
*sub1::var = \$var;
*sub2::var = \$var;
以下209と同じ
0216名無しさん@お腹いっぱい。
01/11/07 16:11ID:HKXTSnRB0217名無しさん@お腹いっぱい。
01/11/07 16:15ID:???0218216>217
01/11/07 16:19ID:HKXTSnRB0219名無しさん@お腹いっぱい。
01/11/07 19:11ID:???cgiとしてPOSTデータを受け取るときにもその制限があるんじゃなかったっけか?
MacPerlでcgiとして保存したスクリプトを呼び出すと、AppleEventで
MacPerl本体にデータが受け渡されてると思うので、32KB以上のデータは
あつかえないのかも・・・。AppleEvent自体はとっくにこの制限なくなってる
はずなんだけどね。解決策知ってる人いる?
0220名無しさん@お腹いっぱい。
01/11/07 20:02ID:???0221名無しさん@お腹いっぱい。
01/11/07 20:27ID:???タブブラウザみたいなもんじゃ無いの、秀丸多窓、デバッグ用plで
やってるのと変わらん。
ステップ実行直接出来るのは便利かな
0222始めて数日。。。分不相応かなー
01/11/07 21:00ID:EjFu+goOperlで処理(文字列置換とか)したいと思っています。
変数名=Net::関数名(URL)
みたいな書き方をすれば、ページを1枚まるごとゲットして変数に格納できるような気はするのですが、
具体的にどう書いたらよいかわかりません。
どうしたらよいでしょう??
0223
01/11/07 21:18ID:NBKJ0dYI0224名無しさん@お腹いっぱい。
01/11/07 21:57ID:???getprint(URI);
print get(URI);
0226198 だけど
01/11/08 02:50ID:???俺はActive perlのつもりでMacperlって書いてた。 今見てビックリした(死
何ていうか、197の書き込み見た瞬間 Macperl -> Active perlに脳内置換しちゃってたみたい
適当な事言ってゴメソ
0227初心者
01/11/08 16:17ID:???@file_list = ($file1,$file2,$file3,$file4,$file5,$file6,$file7,$file8,$file9,$file10);
$name_length = @file_list;
ってあるんですけど、このままだと$name_lengthは10にしかなりません。
$file1〜10が、あるぶんだけの結果が欲しいんですけど、どうすればいい
でしょうか。
0228名無しさん@お腹いっぱい。
01/11/08 16:24ID:???$file1に入ってる文字列の長さか
$name_length = length $file1;
0229名無し~3.EXE
01/11/08 17:38ID:OCo2EZxtアレから3日ほど触ってなかったから、又C頭に戻ってしまいました・・・(^ ^;
頑張ります。
0230名無しさん@お腹いっぱい。
01/11/08 17:44ID:???仮に「存在するファイルだけ」ということならファイルテスト演算子使え。
-e $file
0231初心者
01/11/08 18:26ID:07jIFch6例えば、もし$file1の変数に値があれば1を返し、なければ0を
返して、1を合計すれば$file$1〜10で、値が入っているものの
数をカウントできる、とおもうのですが、いかがでしょうか。
0232初心者
01/11/08 18:28ID:???0233名無しさん@お腹いっぱい。
01/11/08 18:37ID:yS1X4SA3これで、あってる?
my @vars = (1,undef,3 ,5, 0);
my $count = 0;
foreach(@vars){ defined $_ and $count++ }
print $count;
0234初心者
01/11/08 19:36ID:07jIFch6さすがです!!ばっちりうまくいきました!!
天才!!ありがとうございます!!
0235名無しさん@お腹いっぱい。
01/11/08 20:50ID:???my $count = grep{ defined $_ } @vars;
print $count;
ま、大差ないが。
0236名無しさん@お腹いっぱい。
01/11/10 17:29ID:a3KNiGz4かなりバリエーションがあるのですが、あれを意味のある数値(例えばperlのtime関数が返す値)
に変換するにはどうするのが定石なんでしょうか?
おそらく決まりきったやり方があるんだと思うんですが。。。
0237名無しさん@お腹いっぱい。
01/11/10 18:38ID:???0238名無しさん@お腹いっぱい。
01/11/10 21:44ID:???Date::Parseかな。
0239名無しさん@お腹いっぱい。
01/11/11 05:28ID:???0240名無しさん@お腹いっぱい。
01/11/11 05:53ID:???cgi-lib.plは知らない。
0241名無しさん@お腹いっぱい。
01/11/11 06:37ID:6WcbjBVUmy %cookie = fetch CGI::Cookie;
my @values;
if($cookie{'testcookie'}){@values=$cookie{'testcookie'}->value}
push @values,{key1=>value1,key2=>value2};
my $cookie = new CGI::Cookie(-name => "testcookie",-value => @values,);
このようにすると、一回目はうまくいくのですが、二回目以降
うまくいきません。
なってほしい配列。
$values[0]=HASH(*****)
$values[1]=HASH(*****)
・・・・・
なってしまう配列。
$values[0]=key1
$values[1]=value1
$values[2]=key2
$values[3]=value2
$values[4]=HASH(*****)
どのようにしたらいいのでしょうか?
0242名無しさん@お腹いっぱい。
01/11/11 09:28ID:???リファレンスだけしか保存しなかったら復元できんのでわ。
・value1とvalue2は何返す関数?
私なら設計見直す。
どうしても必要なら多分割対応のモジュール使うか,
セパレータ使う。
0243名無しさん@お腹いっぱい。
01/11/11 11:22ID:???0244名無しさん@お腹いっぱい。
01/11/11 17:44ID:???書き込み用にデータファイルをオープンした直後の
$SIG{TERM} = $SIG{PIPE} = $SIG{KILL} = $SIG{HUP} = $SIG{USR1} = "IGNORE";
ってコレ何ですか?
%SIGの意味はわかったけど、↑があるのとないのとでどう違うのかわかりません。
0245名無しさん@お腹いっぱい。
01/11/11 17:44ID:dTfyRXHQ0246名無しさん@お腹いっぱい。
01/11/11 18:42ID:???上に並べたシグナルハンドラを全部無視するって事、httpdによっては
KILLとかがいきなり飛んでくる(らしい)
各シグナルについては省略 (w
'シグナル''プロセス'とかで検索してちょ
0247縞栗鼠(シマリス)の親方
01/11/11 20:36ID:PguAPO/0ここは、完全に狂ってる。
授業料は一年分一括前払いなので、
金が入れば、生徒は要らない
金を振り込んだら、何とかその生徒を辞めさせようと
講師どもが、あの手、この手でイヤガラセをしてきますね。
セクハラはもちろん、脈絡の無い罵倒は日常茶飯だね。
酒臭い講師もいるし・・・ 人生の最果て中央高等学院
http://chs-f.com/index.html 福岡校
学歴詐称 経歴詐称 デタラメ授業
http://www.chuo-school.ac/ 東京本校
0248名無しさん@お腹いっぱい。
01/11/11 20:43ID:dTfyRXHQわかりました。後はGoogleと格闘してきます。
もう一つ質問なんですが、
テンプレートを用意して記号を変数で書き換えたいんです。
で、こんなのを書いて見ました(Thanks to 某スレの20さん)。
----------------------------------
$post{hoge} = 'Succeed!'; # 変換するデータのハッシュ(実際にはもっと増やす)
printTemplate('./test.txt', %post);
sub printTemplate{
my($filename, %form) = @_;
open(FILE, "< $filename");
my @lines = <FILE>;
close(FILE);
foreach (@lines) {
s/\${(.*?)}/$form{\1}/g; # ${abc}という書式が見つかったら$form{abc}に変換
print;
}
}
(test.txtの内容は、テストなので「${hoge}」の一行のみ。)
----------------------------------
が、上手く変換できません。
$form{\1} の所を $form{hoge} と直接書くと通ります。何故??
$from{\1} を \$from{\1} と書いて見て、
ちゃんと$form{hoge}と出力されてるのは確認したんですが…。
0249名無しさん@お腹いっぱい。
01/11/11 20:57ID:???s/\${(.*?)}/$form{$1}/g;
こうでは?
0250名無しさん@お腹いっぱい。
01/11/11 21:00ID:???$form{baz} = 'foo';
@lines = qw(${baz}\n);
s/\${(.+)}/$form{$1}/g for @lines;
print for @lines;
0251名無しさん@お腹いっぱい。
01/11/11 21:01ID:???http://forest.ne.jp/cgi-ml/#archives
41200あたりのテンプレート関連を見るとよいかも。
0252名無しさん@お腹いっぱい。
01/11/11 23:02ID:???あっさり成功しました…。
\1と$1をごちゃごちゃにしてました。
\1ってのもありますよね?どう違うんだろう。
>>251
見てみます。ありがとうございました。
0253名無しさん@お腹いっぱい。
01/11/11 23:05ID:???$1は置き換えやその後違うところで使う。
0254名無しさん@お腹いっぱい。
01/11/12 02:49ID:???削除するスクリプトでポイントになるのはどのような点なのでしょうか。
全く検討がつかなくて、検索をはずしまくっています。
参考になるページを教えてもらえないでしょうか。
0255名無しさん@お腹いっぱい。
01/11/12 03:33ID:yjAJ+kh7>全く検討がつかなくて、検索をはずしまくっています。
検索キーワードは「集合演算」「差集合」あたりでしょう。
0256名無しさん@お腹いっぱい。
01/11/12 03:42ID:???次のページで解決できそうです。ありがとうございました。
http://www.google.com/search?q=cache:ap2Un9yjbio:tokyo.cool.ne.jp/hharuki/perl/hairetu2.html+%8FW%8D%87%89%89%8EZ+perl+%8D%B7%8FW%8D%87&hl=ja&lr=lang_ja
(Googleキャッシュにしか残っていませんでした)
0257名無しさん@お腹いっぱい。
01/11/13 00:34ID:4DKwnz9Fを作っています。
<input type="submit" value="送信01" name="soushin">
<input type="submit" value="送信02" name="soushin">
送信ボタンには上の二つがありますが、valueを『01』だけにする(divergenceの
部分も併せて変える)とうまくいくのに、日本語が入るとどうもうまくいきませ
ん。
何か良い方法はないですか?
スクリプトは次に載せます。
0258257
01/11/13 00:47ID:4DKwnz9Fhttp://www.geocities.co.jp/Outdoors-River/5665/sample.txt
宜しくお願いします。
0259名無しさん@お腹いっぱい。
01/11/13 02:14ID:iAaKn9Wvsub div {
if ($soushin =~ /01/) { &soushin01; exit; }
elsif ($soushin =~ /02/) {&soushin02; exit; }
}
パターンマッチ演算子にしてるけどさ、普通に eq '送信01'とかじゃダメなの?
コードがEUCだけど、"charset=iso-2022-jp" で出力してるから、ボタンの
文字もiso-2022-jpで拾われちゃうし。
確実にJcode使っていけば、そんな問題は起きないと思うけどな。
0260名無しさん@お腹いっぱい。
01/11/13 18:15ID:CkfqNGb7どうすればいいのでしょうか?
例えばファイルが1つだとこのように読み込みますね。
open(IN,"data1.txt");
eval{flock(IN,1)};
@username=split(/\,/,scalar(<IN>));
close(IN);
これをdata1.txtだけでなくdata2.txt、data3.txtからも
読み込んで検索したいのです。
0261名無しさん@お腹いっぱい。
01/11/13 18:29ID:???@files = readdir DIR;
foreach (@files){
open IN,"$_" if(-T "$_");
。
。
}
0262名無しさん@お腹いっぱい。
01/11/13 19:07ID:???データ型に無いのかな、、、
0263名無しさん@お腹いっぱい。
01/11/13 19:35ID:???0264名無しさん@お腹いっぱい。
01/11/13 19:51ID:???name hoge
year 20
next
};
$struct1{next} = \%struct2;
%struct2 = qw{
name foo
};
print "$struct1{name}\n";
print "$struct1{year}\n";
print "${$struct1{next}}{name}\n";
こんな感じ w
0265名無しさん@お腹いっぱい。
01/11/13 20:08ID:g8ogkECZことなんでしょうか?
自分の中では「無限ループに陥ってしまうこと」と解釈し
てるんですが・・・。
他にも「CGIの暴走というなら、こういうのもそうだ」
というのがあったら教えて欲しいッス。
0266名無しさん@お腹いっぱい。
01/11/13 20:13ID:oVBsXhBRしかも原因がなかなか分からなく、苦戦。
sub aaa{
&aaa($hoge) if($hoge eq "foo");
処理,,,
}
0267名無しさん@お腹いっぱい。
01/11/13 21:35ID:???突然わけのわからん処理を延々続けるとか。
掲示板のログ整理でログ全消しのうえ周辺ファイルまで消したり。
>266 ループと違ってstack overflowやout of memory! にならんか。
0268名無しさん@お腹いっぱい。
01/11/13 21:50ID:???それもまた暴走と言える気がしなくもないが。
0269260
01/11/13 22:22ID:yD0vdlkpすいません、厨房にもわかるよう誰か教えて下さい。
0270名無しさん@お腹いっぱい。
01/11/13 22:28ID:???>261さんじゃないですけど。
opendir DIR,"./poyo"; #ログのあるディレクトリを開く
@files = readdir DIR; #ディレクトリ内のファイルを配列に入れる
foreach (@files){ #配列の中身全てに対して
open IN,"./poyo/$_" if(-T "./poyo/$_"); #そのファイルがテキストファイルならファイルを開いて
。 #処理をする
。 #処理をする
}
ただ、ここまで教えてもらったら、自分でも調べてみた方がいいですよ?
0271名無しさん@お腹いっぱい。
01/11/13 23:21ID:???>これをdata1.txtだけでなくdata2.txt、data3.txtからも
>読み込んで検索したいのです
なら単純に3回コピペを繰り返せばいい。それでも動くし全然問題無い
その聞き方じゃ、その分繰り返せとしか答えられないだろ?
多分配列操作が出来ないと仮定して書く
for $datafile (("data1.txt","data2.txt","data3.txt")){
print $datafile,"\n";
}
0272名無しさん@お腹いっぱい。
01/11/14 00:38ID:???やはり先頭から順に読んでいかなければなりませんかね。
0273名無しさん@お腹いっぱい。
01/11/14 00:49ID:???ってそういう意味じゃない?
0274名無しさん@お腹いっぱい。
01/11/14 00:56ID:???readで取って,\n以後を取る。
\r出てくるまで取り続ける。
http://pc.2ch.net/test/read.cgi/php/1000804655/394-443
で422氏がtailもどきというのを作ってたので参考にするといいかも。
0275274
01/11/14 00:58ID:???0276名無しさん@お腹いっぱい。
01/11/14 01:09ID:???0277名無しさん@お腹いっぱい。
01/11/14 01:11ID:???「$tail」というのは、Perlの標準の関数なんですか?
今まで存在すら知りませんでした。
>>274
ありがとうございます。そのスレ読んでみます。
0278273
01/11/14 01:17ID:???0279名無しさん@お腹いっぱい。
01/11/14 01:17ID:???http://www.****.com/redirection.cgi?target=http://www.yahoo.co.jp
の様に、cgiを一回咬ませたいのですが、どの様にしたらいいでしょうか?
本当に初心者の質問ですみません・・・
0280名無しさん@お腹いっぱい。
01/11/14 01:21ID:???みたいのを
s#($uri)#<A href="$cgi?$1">$1</A>#g;
とかやるだけと思うが。
0281279
01/11/14 01:51ID:???お答え有り難う御座います。
ですが、何だか巧く行かなかったので、もうチョイ詳しく書いてみようと思います。
ーーーーソースーーーー
sub autolink{
$_[0] =~ s/(https?|ftp|gopher|telnet|whois|news):\/\/([\w|\!\#\$\%\&\'(下の行と繋がってます)
\(\)\=\-\^\`\\\|\@\~\[\{\]\}\;\+\:\*\,\.\?\/]+)/<A HREF=\"$1:\/\/$2\" TARGET=\"_blank\">$1:\/\/$2<\/A>/g;
}
ーーーーソースーーーー
元のスクリプトはこの様に書いてるのですが、>>280さんの言う通り(当然、変数とかはちゃんと設定して)
やったのですが、エラーが出てしまいました・・・
どうしたら良いでしょうか?
0282名無しさん@お腹いっぱい。
01/11/14 02:07ID:???出来ないから正解教えてくれっていうのは
改造スレ行った方が良くないかい?
せめて自分で何かしらのヒントをつかむ努力をして
勉強する気があるんだなって思われるようにしないと
教える方々も教え甲斐が無いと思うけど。
0283279
01/11/14 02:15ID:???はい、すみません、未熟者でした。
redirectionのCGI作成から始めて、
今のトコで詰まって数時間調べても余り判らず、聞いてしまいました。
もっと、勉強し直してきます。失礼致しました。
0284282
01/11/14 02:19ID:???0285名無しさん@お腹いっぱい。
01/11/14 02:20ID:???の行を。。
TARGET=\"_blank\">$cgiurl$1:\/\/$2<\/A>/g;
でどう? $cgiurl = 'http://hogehoge/foo.cgi?';
とかにしとく
エラーが出ますはちょっと勘弁 (w
0286名無しさん@お腹いっぱい。
01/11/14 02:25ID:???正規表現勉強して,自分で書いたほうがいい。
0287285
01/11/14 02:26ID:???捨てファイル一枚開けといて、疑問に思ったり解らん事が有ったら
そこにちょこっと書いて、コマンドラインから実行してみ
PODでコメントにしながら貯めていけば後から見たり出来るから
多分1000行くらい溜まる頃には普通に使える様になるよ
0288名無しさん@お腹いっぱい。
01/11/14 02:34ID:???動いてるのか分かって無いよ :−(
ROMってる人に役立つかも知れんからマッタリいこーや
エラーが出ます、は困ったもんだが・・・
0289超初心者
01/11/14 02:36ID:???281だと1が返るのかな。
sub autolink{
my $url = shift;
$url処理・・・
return $url;
}
>エラーが出てしまいました・・・
エラーの内容書いた方が良いよ。
0290名無しさん@お腹いっぱい。
01/11/14 02:40ID:???投げたいからBBSを弄ってるんだろ?
なんだかなあ。。。。
0291名無しさん@お腹いっぱい。
01/11/14 02:45ID:???0292名無しさん@お腹いっぱい。
01/11/14 02:46ID:???なるほど。そういうことか。
ていうか、HTTP_REFERERって
標準化するときの単なるスペルミスなんだってね。w
0293名無しさん@お腹いっぱい。
01/11/14 02:48ID:???ああ、連装配列で委員っすね ^^;
なるほど、中々慣れないもんで・・・ ありがとっす ^^
0295279
01/11/14 03:05ID:???<A HREF=\"$1:\/\/$2\" を
<A HREF=\"$cgiurl $1:\/\/$2\"
に変えたら無事に出来ました、沢山の方に御迷惑お掛けしました。
本当に有り難う御座いました。
>>290さん
おっしゃる通り、REFFER辿られたくないので弄っていました。
PERLProxyって言うのが良く判りませんでしたが、
最近、私のサイトの掲示板で質の悪い書き込みを沢山する人が居たので
REFFERから来たんじゃない?と言われてやってみたのです。
本当に、有り難う御座いました。
0296名無しさん@お腹いっぱい。
01/11/14 03:14ID:???0297285
01/11/14 03:17ID:???まあ正規表現はけっこう便利だからこれに懲りずにてきとーに本でも読んでみて
0298名無しさん@お腹いっぱい。
01/11/14 13:33ID:nPGI7kkts/表/票/みたいな置き換えしたい
鈴木さんのjperlって5.005用ですよね?
ためしにインストールしたらPerlCRT.dllがないって怒られちゃいました
perl5.6用のjperl欲しいっす
使いたいときって限られてるのでperl5.6と5.005用のjperlの共存でも
いいです
どうしたらいいっすか
0299名無しさん@お腹いっぱい。
01/11/14 14:24ID:???0300RA・イール
01/11/14 14:44ID:h/x7Yxzr初心者なので質問の至らない点はご容赦してください。
Web画面上で文字列を取得し、その文字列を用いてサーバー(UNIX)上で
grepをかけてその結果を表示するCGIを作成しているのですが、
半角英数及び"-_."の記号は認識するのですが、2バイト文字や
上記3つの記号以外を入力しても認識してくれません。
入力した文字がgrepの前にどうなっているのかを調べたところ
半角「#」であれば「%23」等のようにどうやら文字コードになっているようです。
"-_."や半角英数はちゃんと表示されるのですが・・・・・・
どうすればよいのかアドバイスしていただけないでしょうか?
よろしくお願いします。
長文になって申し訳ありません。
0301名無しさん@お腹いっぱい。
01/11/14 15:21ID:???>>2-8 全部見ろとまでは言わんが,とほほくらいは目を通しとくといい。
http://tohoho.wakusei.ne.jp/www.htm
そのままそういう文字を送信すると,不都合が起きるのでエンコードされる。
URI::Escape.pmとかを使おう。
http://www.bekknet.ad.jp/~bero/docj/module/15/URI_Escape.html
どうしても自力でやるならここ見れ。
http://tohoho.wakusei.ne.jp/wwwcgi3.htm#CgiEncode
http://www.din.or.jp/~ohzaki/perl.htm#JP_Escape
0302名無しさん@お腹いっぱい。
01/11/14 15:26ID:???文字コードに戻すには、perlなら、
s/%(.{2})/pack("C", hex($1))/eg;
Cなら
c = (x[0] >= 'A' ? ((x[0] & 0xdf) - 'A') + 10 : (x[0] - '0'));
c *= 16;
c += (x[1] >= 'A' ? ((x[1] & 0xdf) - 'A') + 10 : (x[1] - '0'));
みたいな感じです、半角スペースは + になってるのでそれも変換して下さい。
0303名無しさん@お腹いっぱい。
01/11/14 15:27ID:???0305298
01/11/14 20:08ID:???スクリプトをunicodeにするだけじゃダメですよね?(ダメでした)
処理したい対象のテキストがシフトJISなんです…
あ。読み込んでunicodeに変換して、それから必要な処理を
すればいいのか…な?
0306名無しさん@お腹いっぱい。
01/11/15 20:57ID:???いちいち新しく宣言しなければならないのでしょうか?
0307名無しさん@お腹いっぱい。
01/11/15 21:41ID:2NOZWJEm0308名無しさん@お腹いっぱい。
01/11/15 23:31ID:u8RJIxtXperlってプログラム言語だから、てっきりプログラム板だと思ったのに、なんでWebProgなんですか?
WebProg専用って訳じゃないですよね?
しかも、あっちでは冷遇されてるみたいだし‥‥
なんでプログラム板ではperlちゃんは虐められるんですか?
0309名無しさん@お腹いっぱい。
01/11/15 23:32ID:???0310名無しさん@お腹いっぱい。
01/11/15 23:56ID:???あなたの発言内容が冷遇されてるのでは? (笑
0311名無しさん@お腹いっぱい。
01/11/16 00:30ID:ecg87As1おいらじゃないけど、あっちでperlの質問スレ立てた人が、「板違いだ」と言われてました。
0312名無しさん@お腹いっぱい。
01/11/16 00:41ID:???設置するだけの厨も多いし。
0313名無しさん@お腹いっぱい。
01/11/16 01:07ID:???0314名無しさん@お腹いっぱい。
01/11/16 05:11ID:???>>312 それはただ単に世間が狭いからでは? Autoconfの一部, tmake(Qt), fmlとか幾らでもあるでしょ。
0315名無しさん@お腹いっぱい。
01/11/16 05:27ID:???0316名無しさん@お腹いっぱい。
01/11/16 07:11ID:???0317名無しさん@お腹いっぱい。
01/11/16 10:40ID:???0318名無しさん@お腹いっぱい。
01/11/16 13:40ID:???>>317はマジ迷惑。
0319名無しさん@お腹いっぱい。
01/11/16 14:08ID:???perl理解して無いより、CGI理解してない方が迷惑だけど、それはまぁいいや。
0320名無しさん@お腹いっぱい。
01/11/16 22:12ID:eZwp685jって全部同じ?
0321名無しさん@お腹いっぱい。
01/11/16 22:17ID:???LANを組んだローカルサーバーで試してみそ。
0322名無しさん@お腹いっぱい。
01/11/16 23:49ID:WbULnsbPどんな環境で試すと。。。3つ同じになるのかよく考えてみよう
0323321
01/11/17 00:24ID:???俺はこれで違うものが出るからこう言ってるんだけど?
>320はそれが全部同じ物と思ってるんでしょ?
反例出せばいいのかと思ったんだけど違ったならスマソ。
0324名無しさん@お腹いっぱい。
01/11/17 10:00ID:caH7oXws今現在、
$TEMP = $HOGE ;
$HOGE = $SAGE ;
$SAGE = $TEMP ;
にしてるわけですが非効率ですよねぇ
0325名無しさん@お腹いっぱい。
01/11/17 10:06ID:???0326521
01/11/17 10:10ID:FtGVdyVDどちらかをtempの領域にコピーして入れ替えた後復帰してる事に変わりない
メモリを使わずに空中で交換なんて出来ないんだから。
もしHOGEとSAGEが大きな変数ならリファレンスを使おう
0327名無しさん@お腹いっぱい。
01/11/17 10:11ID:???0328名無しさん@お腹いっぱい。
01/11/17 15:58ID:???xorしてxorしてxorすればテンポラリ領域なしで交換できるよ。
でも、素直にテンポラリ使った方が速い、安全、わかりやすい。
0329名無しさん@お腹いっぱい。
01/11/17 16:29ID:???$b+=($a=($b+=$a)-$a);
で入れ替わる。
0330名無しさん@お腹いっぱい。
01/11/17 18:51ID:???じゃないか?
0332
01/11/17 21:16ID:hnjwBqTfActiveState Perl Dev Kitをインストールして使っていて、
C:\>perl -d hoge.perl
で自動的にGUIベースのデバッガが自動で起動しますが、CUIでデバッグ
したいときだけCUIデバッグを開始する方法ありますか?
0333名無しさん@お腹いっぱい。
01/11/17 23:34ID:JGfA8W5O$b ^= $a ^= $b ^= $a;
で入れ替わるんだ。 これだと文字列でもできるんですね。
0334名無しさん@お腹いっぱい。
01/11/17 23:58ID:???長いほうにあわせてzerofill(?)されるので問題ありとか。
0335333
01/11/18 00:05ID:???少数が混ざったり、整数と文字列を交換しようとしたらダメなんですね。
確かにリスクが多そうだ。
0336名無しさん@お腹いっぱい。
01/11/18 00:34ID:???下の書き方だとCGIを置いてるサーバーのドメインが取得されて
しまいます。どこが間違ってるのでしょうか?
$a1 = $ENV{'HTTP_HOST'};
open (ANSWER, ">>data.txt");
flock (ANSWER, 2);
print ANSWER "$a1\n";
flock (ANSWER, 8);
close (ANSWER);
0337名無しさん@お腹いっぱい。
01/11/18 00:57ID:???使ってみようと探してみたら見つかりません。(Perlメモだったと思ったけど、見つからない・・・)
ご存知の方教えてください。 よろしくお願いします。
>>336 $ENV{REMOTE_ADDR}でいけるはず
0338名無しさん@お腹いっぱい。
01/11/18 01:00ID:???0339名無しさん@お腹いっぱい。
01/11/18 01:05ID:???普通は $ENV{REMOTE_HOST}だとおもう。
0340336
01/11/18 01:29ID:jf4mdJsf$ENV{REMOTE_ADDR}だとIPが取得されてしまいます。
>>339
$ENV{REMOTE_HOST}だと何も取得出来ないのですが・・
0341名無しさん@お腹いっぱい。
01/11/18 01:37ID:GYkHI9xFサーバの設定によってはいちいち逆びきしないのも
あるんじゃなかったけ?
0342340
01/11/18 01:40ID:GYkHI9xF>>341
gethostbyaddr を使うことになると思う。
CPAN突っ込めるならもう少し楽になる。
0343340!=341=342
01/11/18 01:48ID:GYkHI9xFCPAN使わんでも標準モジュール(perl-5.6.1では)で
Net::hostent というのがあった。
0344
01/11/18 07:40ID:ec8bnEpUprint "Content-type: application/download\n";
print "Content-disposition: filename=\"test.lzh\"\n\n"; だと駄目みたいです
0346名無しさん@お腹いっぱい。
01/11/18 10:02ID:???FAQかな?ここに書いてあったよ。
http://web11.freecom.ne.jp/~chaichan/qanda/qa414.htm
0347336
01/11/18 14:08ID:HApvi2Od誰か教えて〜
0348名無しさん@お腹いっぱい。
01/11/18 14:25ID:???>>342に答えあるだろうが…。
0349348
01/11/18 14:26ID:???検索して分からないようなら
自治体主催のIT講習会でも行って来なさい。
0350名無しさん@お腹いっぱい。
01/11/18 14:43ID:???ここは初心者用スレだというのがわからんのか?
0351名無しさん@お腹いっぱい。
01/11/18 14:53ID:???だから何か?
0352名無しさん@お腹いっぱい。
01/11/18 14:58ID:???サーバーの設定によってはリモートホストは取得できない。
IPで我慢すれ。
0353344
01/11/18 18:07ID:???Perlを通して吐き出す際、壊れてしまうみたいです。(Windows+ActivePerlで.zipを出力)
foreach $_ (@temp) {
$_ =~ s/\n//g;
print $_;
}
とりあえずこれで\nは消してみたんですが、後ろの方がさっぱり消えてしまいます。
(.rarに関してはRar!としか出ません・・・)
何をどう置き換えればいいんでしょうか?
0354名無しさん@お腹いっぱい。
01/11/18 18:36ID:???0355353
01/11/18 21:14ID:???0356RA・イール
01/11/19 15:45ID:jO7Jmwt3grepの部分で
1. $command .= '"/usr/bin/grep ' . "\'$string\' " . "$filepath " . "| head -n $linenum \"|";
1のようにした場合、2バイト文字や記号等も拾ってくれるのですが
2. $command .= '"/usr/bin/grep -h "' . "^$day_string" . '" ' . "$filepath " . "| grep " . "\'$string\' | head -n $linenum \"|";
上記の場合、2バイト文字や記号等を認識してくれないのですがどうしてでしょうか?
どうすればよいのかアドバイスしていただけないでしょうか?
よろしくお願いします。
0357名無しさん@お腹いっぱい。
01/11/19 16:05ID:???2バイトはさっぱりだけど&%$とかは2回通ったけどなぁ・・・
Unix板のハッカーに聞けばどしどし答えてくれそう (^^;
0358名無しさん@お腹いっぱい。
01/11/19 16:06ID:???だったら解んないっす
0359名無しさん@お腹いっぱい。
01/11/19 19:04ID:pdb1llN8$test =~ s/>>/aa/g;
>>の指定はどのようにしたらいいのでしょうか
0360名無しさん@お腹いっぱい。
01/11/19 19:21ID:???0361名無しさん@お腹いっぱい。
01/11/19 20:48ID:f2JzrPLI>じゃなくて>に中で変換されていました・・・
0362名無しさん@お腹いっぱい。
01/11/19 20:49ID:f2JzrPLI(半角で書くと変換されちゃうんですね)
0363名無しさん@お腹いっぱい。
01/11/19 21:32ID:j7n2AWkf冬厨ですみません。
0364名無しさん@お腹いっぱい。
01/11/19 21:48ID:???http://pc.2ch.net/test/read.cgi/php/988808396/
どうぞこちらへ。
0365名無しさん@お腹いっぱい。
01/11/19 21:53ID:j7n2AWkfflock(OUT, 8);
close (OUT);
を、
exit;
に変えればよろしいのですか?
0366名無しさん@お腹いっぱい。
01/11/19 22:19ID:???凄いですね (^v^
0367名無しさん@お腹いっぱい。
01/11/19 22:29ID:WFMClysi1・・
2・・
3・・
・
・
と並んでいるのを読み込み、上から「10件まで」と件数を決めて
別のファイルに書き込みたいのです。
openやprintの使い方はわかるのですが、件数の決め方がわから
ないので教えて下さい。
0368名無しさん@お腹いっぱい。
01/11/19 22:39ID:???0369名無しさん@お腹いっぱい。
01/11/20 00:17ID:???forの方が後だろ(w
0370名無しさん@お腹いっぱい。
01/11/20 00:19ID:???0371名無しさん@お腹いっぱい。
01/11/20 00:34ID:???他人を主人公にして自分の思い出を語るのはやめれ。
0372名無しさん@お腹いっぱい。
01/11/20 00:45ID:???あれは小学5年頃の話でしょうか
話について来れなくて気を悪くなされたならごめんなさい。
0373名無しさん@お腹いっぱい。
01/11/20 01:31ID:???0374名無しさん@お腹いっぱい。
01/11/20 01:35ID:???ってことでしょーか?
0375名無しさん@お腹いっぱい。
01/11/20 03:42ID:???369をどう読めばforで挫折したと解釈出来るんだ?
ぼうやはforより先にひらがなを勉強すべき(w
0376名無しさん@お腹いっぱい。
01/11/20 06:49ID:???0377名無しさん@お腹いっぱい。
01/11/20 17:18ID:???あの頃はフロッピーディスクなんて高嶺の花・・・
0378名無しさん@お腹いっぱい。
01/11/21 01:35ID:???例えばstring = "hoge#poyo#1000#comment"、みたいなデータが有ってCommentだけが
不定長だとするとCとかならstring[4] = '\0';とかしてmoveせずにガンガン使えるんだけど
splitだとCommentの最後までループしちゃうし、値をコピーするから
凄く遅そうですよね。commentが10000バイトとかだと結構差が有るんで
何とかしたいんです。
BBSなんかの行解析は大抵splitを使ってるけど・・・・
indexとか使って上手く出来ないですかね・・・・
0379適当に即答。
01/11/21 01:41ID:???0380名無しさん@お腹いっぱい。
01/11/21 07:57ID:???comment以外が固定長なら
substr($string,14,length($string))
でできないかな?
0381名無しさん@お腹いっぱい。
01/11/21 20:46ID:???30代オヤヂ族かよ(w
いいトシして板スレ違いは自粛しようぜ(大爆笑)
0382名無しさん@お腹いっぱい。
01/11/21 22:47ID:???0383名無しさん@お腹いっぱい。
01/11/22 13:24ID:???0384名無しさん@お腹いっぱい。
01/11/22 14:27ID:???0385名無しさん@お腹いっぱい。
01/11/23 06:07ID:rvdfMFcf今Vivi使ってますが試用期間過ぎてるのでウザイです。
シェアの定番は秀丸というのは知ってますがフリーで
いいのありませんか?
あまりいいのなければViviに3000円出そうと思ってるのですが。。
0386_gunzip@vimマンセー
01/11/23 06:39ID:???Viviっていえば、たしかvi互換エディタだったよね?
Windows版vim(gvim)はどうでしょうかね。
本家 http://www.vim.org/
Windows版 http://www.kaoriya.net/(日本語)
0387名無しさん@お腹いっぱい。
01/11/23 06:45ID:???そのためのツールは何て名前でしたっけ?
いくら検索しても見つかりません。
よろしくお願いします。
0388白夜 ◆GiKO.QrM
01/11/23 07:06ID:???パールエディタってのを一応持ってる。
あんまり使わないけど一応フリーなんで。
ttp://www.k-collect.net/
0389名無しさん@XEmacs
01/11/23 07:14ID:MqJMqOjcperlcc
perl2exe
0390名無しさん@お腹いっぱい。
01/11/23 11:53ID:???0391名無しさん@お腹いっぱい。
01/11/23 16:39ID:???Tera Padというのが雑誌で評判よかったのでDLしてみたけど
マルチウィンド出来ないので使いづらかった。
やはりいいやつはお金出すしかないかも。
0392名無しさん@お腹いっぱい。
01/11/23 23:17ID:???…せっかくだから定番だがXEmacsとかMeadowとかxyzzyとか。
0394名無しさん@お腹いっぱい。
01/11/24 00:08ID:2uJfuz0i地味な面構えが邪魔にならなくて素敵。
って、お試しで使い始めたばかりの奴が言うのもなんだけど。
0395正規表現わけわからん
01/11/24 00:08ID:ZE9o/Xh4のってどうやればいいんですか?
0396名無しさん@お腹いっぱい。
01/11/24 01:43ID:???http://pc.2ch.net/test/read.cgi/php/996105815/104-
0397正規表現わけわからん
01/11/24 01:50ID:???まじさんくす!ログ全て読む気になれなかったんで。
0398名無しさん@お腹いっぱい。
01/11/24 02:21ID:QdQjjDaqサイト全体をgzip+tarで圧縮、新サーバーへファイルを転送、解凍
というプロセスでサイトの移転は出来ますか?
パーミッションをそのままでできたらいいな、と思うのですが。
0399名無しさん@お腹いっぱい。
01/11/24 02:30ID:???0400名無しさん@お腹いっぱい。
01/11/24 07:30ID:???日付を乱数に変換したいのですがどうすればいいでしょう?
たとえば01/11/24 02:30をランダムな英数字に暗号化のやり方が
わかりません。
一応自分なりに考えて
日付 = (( 日付 ) + 1 ) * 123;
などのように考えてやってみたのですが
どの日付も同じ結果になってしまって・・・。
だれかヘルプミー(;;
0401名無しさん@お腹いっぱい。
01/11/24 07:46ID:???$salt = "abcde";
crypt($salt, time());
0402名無しさん@お腹いっぱい。
01/11/24 07:53ID:???ちょっと質問していいですか?
そのcryptとはどういう意味を持つ単語でしょうか…。
$salt = "abcde";
crypt($salt, time());
って、$salt = "abcde";で、$saltはabcdeという意味にしてってところまでは
わかるのですが、下のcrypt($salt, time());がよくわからないので・・・。
time()が上で私がいった日付のことで、
で、ランダムにした日付を表示させたい場所に$saltを書くってとこまで理解したのですけど・・・
0403名無しさん@お腹いっぱい。
01/11/24 07:56ID:???cryptはどういう効果を出すんでしょうか。
あと$saltとtimeの間にいれる,もよくわからなくて・・・。
cryptはシャッフル。
,は合わせるという意味で、
シャッフル(abcde 合わせる 日付)
という感じなんですか?
0404名無しさん@お腹いっぱい。
01/11/24 08:19ID:???あ、引数逆だった。 crypt(time(), $salt) でよろしく。
$perldoc crypt
$man 3 crypt
http://www.nlp.ie.niigata-u.ac.jp/~hiro/parole/kh.html
0405これを読んでも。。。結局わかりにくいかな?
01/11/24 16:01ID:???乱数というのは、求める度に違う数になって、別々に出した乱数が同じ数字になることはあり得ないものです。
日付を乱数に変換しても、適当に乱数を求めても、本質的な違いはないはずなんです。
ただ今の普通のコンピューターには本当の乱数を出す機能はありませんので、
「日付を種に、擬似乱数を生成する」ということはあります。(種が日付だけだと、かなり危険ですが。)
でもこれはたぶんおっしゃられていることと違うと思います。
日付から、一見でたらめに見える数を求めるということがしたいのだと思います。
このとき、日付→数 は求められても、 数→日付は求められないようにするのが、
「ハッシュ関数」というものです。
ハッシュ関数の場合、入力が同じである場合、出力は必ず同じものになります。
だから、考えられる全ての日付を入力して再計算をすれば、どの日付から求めたのかは
たちどころにわかってしまいます。
そのような攻撃をちょっとだけ、やりにくくするのが、味付け作業(塩を振る)という作業です。
ただ、saltは4096通りしかあり得ないので、総当たりすればばれてしまうことには代わり有りません。
注意が必要です。
最近は、cryptよりもmd5の方が流行っています。
2chでは、トリップはcryptで、IDはmd5でやっているようです。
数→日付 の再計算ができるようにしておくこともあります。この場合は、
共有鍵暗号や、公開鍵暗号を使うことになります。
0406名無しさん@お腹いっぱい。
01/11/24 16:12ID:???0407名無しさん@お腹いっぱい。
01/11/24 16:53ID:???0409名無しさん@お腹いっぱい。
01/11/24 23:28ID:PCZZBwJCPerlでCGIの勉強をしようと想い、参考書に付属してあった
PerlとApacheというWebサーバをインストールしました。
そしてまず基本の文字を出力すると言うコードを書き、
IEのブラウザから、そのCGIファイルがあるディレクトリを指定したのですが、
ブラウザに表示されず、そのCGIファイルをダウンロードしてしまいます。
IEの設定が間違っているのでしょうか?
解決方法お分かりでしたら教えてください
0410名無しさん@お腹いっぱい。
01/11/24 23:42ID:???貴方はとんでもない思い違いをしています。
参考書をもっとよく読みましょう。
0411409
01/11/24 23:58ID:???もう一度読みましたが分かりませんでした。
このApacheというソフトをインストールし、起動していれば
通常のようにネットに繋いでサーバにアクセスしなくてもいいんですよね?
どうか先ほどの説明して頂けないでしょうか
0412名無しさん@お腹いっぱい。
01/11/25 00:20ID:???0413名無しさん@お腹いっぱい。
01/11/25 01:09ID:ytkqM1hXopen(DATA, "<./honbun.dat");
$bundata = <DATA>;
としてhonbun.datというファイルを$bundataに全て読み込めるのですが
下記のようにファイルパスを絶対参照にするとエラーが出てしまいます。
open(DATA, "<http://www.domain.com/honbun.dat");
下記のようなエラーメッセージです
[an error occurred while processing this directive]
パスを変更しただけで、他は何も変えてないんですが。
ちなみにSSIのincludeを使ってCGIを呼び出してます。
対処法アドバイスお願いします。
0414すみません
01/11/25 01:21ID:2tsqouHYインストールしました。
そこから、その本に書いてあるとおりにプログラムを始めたいのですが、
メモ帳で作っても良い、という風に書いてあったのでメモ帳で書いたのですが。
メモ帳で作ったデータをhello.plという名前で保存して、
MS DOS プロンプトでperl hello.plとしても、
Can't open perl script"hello.pl"〜以下と出てしまいます。
確認しましたが、確かにPerlのインストールはされていたのです。(Cドライブに入れました)
これにはどのような理由が考えられるでしょうか?
0416名無しさん@お腹いっぱい。
01/11/25 02:13ID:zHplANiE>IEのブラウザから、そのCGIファイルがあるディレクトリを指定したのですが、
「アドレス」で指定せずに「ファイル」→「開く」にしたんじゃ?
0417413
01/11/25 02:15ID:ytkqM1hX他のサイトのhtmlファイルを読み込みたいんです(許可はとってあります)
その際、>>413のようにopenでアドレス指定でいいかと思ったんですが、
うまくいかないのです。それ以前に自分のサイト内でも絶対参照でopenしようと
してもエラーが出ます。読めていたファイルが絶対参照にしただけで読めなく
なるのでパーミッションではないと思うんですが。
0418名無しさん@お腹いっぱい。
01/11/25 02:38ID:???あなたが ./hoge.html とか index.html で読めていたファイルの
絶対パスは C:\www\hoge.html や /home/foo/public_html/index.html
で http://bar.com/hoge.html では***ありません***
って言うかそんな事出来たら困るでしょ?
httpd 仮想パス で検索しよう
0419413
01/11/25 02:49ID:ytkqM1hXニュース記事のhtmlから見出し記事を自動抽出しようと思ったんですが。
(くどいですが許可はとってます)
見出しをdatにしてないのでhtmlから読み込むしかないよ〜と言われたもので
そのまま出来るのかなぁと。
調べてはみますが、無理って事なんでしょうか?
0420名無しさん@お腹いっぱい。
01/11/25 03:17ID:???それならLWPモジュール使うといいっす。
use LWP::Simple;
$bundata = get("http://www.domain.com/honbun.dat");
0421名無しさん@お腹いっぱい。
01/11/25 03:18ID:???LWP::Simple と言うモジュールを使えば簡単に取ってこれます。
自分で書くことも出来ますが、、
どっちにしても、サーバがPerl(と言うかユーザ)にSocket接続を許している
のが大前提だけどね
http://x68000.startshop.co.jp/~68user/net/ ここをざっと読んでみて
0422414
01/11/25 06:57ID:DFU5N1cCあ、多分それです。本にもパスがどうとか書いてあったし・・・。
ただ、それについてのやり方が全く具体的に書いてなかったので
分からないのです。。
初歩的すぎて書くまでもないことだったのかもしれませんが、
ちょっと始められなくなってしまってるので・・・
手順を教えていただけないでしょうか?
他のHPのPerlページでも、そこまで基本的なことは載っていないんで・・・
すみません。
0423413
01/11/25 09:56ID:ytkqM1hXLWPモジュールというのは聞いたこともなかったですが調べてみます。
420と421さん別人ですよね?タイミングがすごいなぁ(^^;
0424413
01/11/25 10:08ID:???Cドライブのルートにperlがインストールされてると思うので
CドライブルートにあるAutoecec.batファイルにperlのパスを記述して
みるといいです。メモ帳で開いて大丈夫です。
上のほうにpath "%path%;c:\Perl\bin;"としてみて下さい。
書き換える前に、一応batファイルのバックアップとって下さいね。
書き換えたあとにパソコン再起動してから試して下さい。
0425414
01/11/25 10:16ID:sJfjrujtありがとうございます。
後で挑戦してみますね。
本に
Autoexec.batに以下のような記述をします、
PATH C:\WINDOWS;C:\WINDOWS\COMMAND
SET PATH=%PATH%;E:\USR\PERL5\BIN ←この行を追加する
とかかれていたのですが、
AUTOEXECを開くと
Must Be installed Japanese Mode.
Cannot Install Device Driver.と出てしまいます。
これはどういうことなんでしょう?
日本語版をインストールすることが必要ということなんでしょうか?
0427414
01/11/25 19:45ID:elN1fKSW了解です。ありがとうございます。
連続教えてチャンで恐縮なのですが、MS-DOSを勉強するのに何かオススメの
書籍・サイトってありますか?
検索サイトで調べても、ダウンロードとかについてしか
見つからないので・・・。
0428名無しさん@お腹いっぱい。
01/11/26 12:50ID:z2hJCNpLhttp://www.nara-edu.ac.jp/~asait/latex/msdos.htm
こんなところかな。他にもあるだろうけど。
身近にCGI勉強中で、HTMLとDOSの使い方も同時に学ぶ必要があって
苦労している人がいるからつい気になってしまった。
こういうことは知ってる人がいたほうがいいと思うけど、そういう知り合いは
いないの?
0429名無しさん@お腹いっぱい。
01/11/26 19:19ID:o9/cvZ3VNT3.51ServerでWin32::DDEをuseできるようPerlを導入したいのですが、可能でしょうか。
実はActivePerl5.6.1-630をインストールしようとしてMSVCRT.DLLが足りないといわれ、
何とかインストールしてもPerlCRT.dllが足りないとかいわれてWin32::DDEがuse出来ないのです。
0430429です
01/11/26 19:22ID:o9/cvZ3VWin32環境では必要ないのでしょうか?
0431名無しさん@お腹いっぱい。
01/11/26 21:13ID:???0432名無しさん@お腹いっぱい。
01/11/26 22:11ID:???インストーラはバージョンアップ済み?
0433429
01/11/26 22:37ID:Owo3tZsObatchからインストールです。
>>431 perlcrt.dllがなぜ必要になるのか私も不思議です。
0434名無しさん@お腹いっぱい。
01/11/26 22:58ID:???InstMsi.exeを先にインストールしないとだめだよ〜ん
0435名無しさん@お腹いっぱい。
01/11/27 00:49ID:9VBxm652i-modeはリファラーが取れないのを利用してi-modeとPCを
振り分ける下のようなCGIを書いたのですがうまくいきません。
どこが間違ってるのでしょうか?
ちなみに初心者ですので大勘違いしてたらすいません。
#!/usr/bin/perl
$a1 = $ENV{'HTTP_REFERER'};
if ($a1 eq '') {
print "Location: http://www.aaa.com/i-mode.html\n\n";
}else{
print "Location: http://www.aaa.com/pc.html\n\n";
}
exit;
0436名無しさん@お腹いっぱい。
01/11/27 00:52ID:???PCからだってReffererを吐かない場合は幾らでもあるよ。
0437名無しさん@お腹いっぱい。
01/11/27 01:09ID:???0438名無しさん@お腹いっぱい。
01/11/27 01:26ID:???0439名無しさん@お腹グー
01/11/27 03:17ID:???ttp://www.activestate.com/Products/ActivePerl/download.plex から
リンクを辿ってInstMsi.exeを導入してからMSI versionのActivePerl
5.6.1-630をインストールし直した方が早いだろう。 Win32-DDEはppmで
インストールしろ。
MSVCRT.DLLについて文句言われるならversionが古いんじゃあないの?
NT3.51Serverはアップデートしてあんのかよ。perlcrt.dllはbuild
5XXの時の話だよ。 欲しいならCPANにある、取ってこい。
0440名無しさん@お腹いっぱい。
01/11/27 06:36ID:LKRP0gaEウェブサイト更新時刻情報取得エージェント?(いわゆるアンテナ)を
作るためにはどの言語を勉強する必要があるんでしょうか?
↓こういう感じの奴
http://www.st.rim.or.jp/~kiwamoto/hina/
Perlであってます?
0441名無しさん@お腹いっぱい。
01/11/27 07:10ID:???0442440
01/11/27 07:28ID:???ありがとございます。
ちなみに鯖の条件としては、CGI使えれば問題ないですかね?
0443名無しさん@お腹いっぱい。
01/11/27 07:35ID:???0444名無しさん@お腹いっぱい。
01/11/27 08:03ID:???0446名無しさん@お腹いっぱい。
01/11/27 08:50ID:???読めません。
0447名無しさん@お腹いっぱい。
01/11/27 11:30ID:???犬か何かに見える。
新キャラクター鯖犬誕生! 何の話だ。
0448名無しさん@お腹いっぱい。
01/11/27 11:35ID:???\ ++ __ ノ ・
鯖犬です > ノ ノ \
_____________/
0449名無しさん@お腹グー
01/11/27 13:58ID:???0450名無しさん@お腹いっぱい。
01/11/27 14:09ID:???少しでもメモリの浪費を抑えたいんだけど
そういう場合foreachは使わないほうがいいの?
0451名無しさん@お腹いっぱい。
01/11/27 14:36ID:???フォルダ内に二つのHTMLファイルを用意して
例えば a.htm と b.htm としてですね。
条件によってどちらかを表示させたいんですがどのようにすればいいの
でしょうか?
簡単なようでなぜかつまってます
0452名無しさん@お腹いっぱい。
01/11/27 15:20ID:???んなこたぁない。
>>451
print "Content-Type: text/html\n\n";
if ($jouken == 1) {
open HTML, './a.html';
while (<HTML>) {
print;
}
close HTML;
} elsif ($jouken == 2) {
open HTML, './b.html';
while (<HTML>) {
print;
}
close HTML;
}
0454名無しさん@お腹いっぱい。
01/11/27 15:49ID:???んあ?
my $file = undef;
if (条件) {
$file = 'a.html';
} else {
$file = 'b.html';
}
open(F, $file);
print <F>;
0455名無しさん@お腹いっぱい。
01/11/27 15:56ID:FtCrXKQ90456名無しさん@お腹いっぱい。
01/11/27 19:45ID:???0457クロスボウとやら
01/11/28 11:10ID:4pa3crZc掲示板等のCGIで、投稿記事のIDに
$id = time . $$; # id = UTC秒数 + Perlプロセス番号
としてるものを見つけました。で、質問は2つ。
Q1:この$idはユニークな値であることが保証されるのでしょうか?
Q2:Q1がユニークであると仮定した場合、プロセス番号を付加する
メリットはなんでしょうか?
以上、よろしくデス。
0458名無しさん@お腹いっぱい。
01/11/28 11:38ID:???1秒の間に同じプロセスIDが使われるような異常な環境でない限り大丈夫だと思います。
A2
1秒間に複数の記事投稿処理が行われた場合被ってしまいます。
常時、処理に1秒以上かかる重いスクリプトの場合は大丈夫な場合もあります。
0459名無しさん@お腹いっぱい。
01/11/28 11:47ID:???短期的に見れば pid だけでも十分ユニークです。
pid に時刻を追加することで、長期的にもユニークであることを保証している、と考えた方がいいと思う。
というか、時刻だけってユニークなIDとして使い物にならない。
0460東京地裁は役立たず!
01/11/28 12:19ID:???1 :ひろゆき@暫定管理人 ★ :01/11/01 15:49 ID:???
「削除依頼は公開」の原則に従って削除したものを公開してますー。
ソース。
http://www.dd.iij4u.or.jp/~cap/nissei/
14 :名無しさん@お腹いっぱい。 :01/11/01 15:59 ID:I8TSGCyI
むしろこのGIFを保存しといてそこらにミラー作りまくるのが
2chねらの使命かと
15 :名無しさん@お腹いっぱい。 :01/11/01 16:00 ID:pX4yzwVD
>>10 つか、それがひろゆきのねらいだろ
16 :名無しさん :01/11/01 16:00 ID:4XQtcOuc
オイラはとりあえず保存しといたよ
17 :ひろゆき@暫定管理人 ★ :01/11/01 16:01 ID:???
いやぁ、削除依頼は公開って原則ですから、、
( ̄ー ̄)ニヤリ
18 :va :01/11/01 16:01 ID:+W2rWnl4
同じこと書き込んだら、速攻で削除されるのかな?
0461名無しさん@お腹いっぱい。
01/11/28 12:34ID:8tU8XC0g(B.pl)が実行される仕組みをSSIを使わずに実現することは可能でしょうか?
<IMG SRC="../cgi-bin/B.pl" 〜>とかやってみたのですが、一応B.plは
実行されるものの、「画像無し」の×マークが表示されてまずいです。
どうか知恵をお貸しください。 既出っぽい気がしますが(;´Д`)
0462名無しさん@お腹いっぱい。
01/11/28 12:42ID:???0463名無しさん@お腹いっぱい。
01/11/28 13:31ID:???ディレクトリ html にHTMLファイルとロゴなどのgifやjpegを
いれておきました。そこに .htaccess を置いて
order deny,allow
deny from all
allow from ***.***.***.***
と書いておいてCGIにてIDとパスで認証できた会員だけHTMLを
見せようとしたんです。
ところが、普通に文字は表示されるのですがgifやjpegが表示されない
のです。
普通に表示できないものなのでしょうか?
0464461
01/11/28 13:36ID:8tU8XC0g「CGIで画像を出力する」で検索してやり方を調べ、やってみました。
B.plは
#!perl-path
print "Content-type: image/gif\n\n";
print `cat $imagefile`;
でできました!!!
1x1の画像を作るのはペイントでできたんですね。知らなかったです。
ありがとうございました。
0465名無しさん@お腹いっぱい。
01/11/28 13:47ID:???basic認証使えば?
.htaccess
---
AuthType Basic
AuthName "Password"
AuthUserFile /home/user/.passwd
require valid-user
---
.passwd
---
User1:Password1
User2:Password2
0467名無しさん@お腹いっぱい。
01/11/28 15:22ID:???0469名無しさん@お腹いっぱい。
01/11/28 17:08ID:???このスレで質問します。
携帯専用のサイトをしているのですが、PCから
アクセスできないようにするのにはどうしたらよいのでしょうか?
0470名無しさん@お腹いっぱい。
01/11/28 17:16ID:???せめてこの辺で聞きなさい。
CGIだけど、なんか質問ある?part4
http://pc.2ch.net/test/read.cgi/php/1000804655/
0471名無しさん@お腹いっぱい。
01/11/28 17:25ID:???>>1の
| CGIの質問はこちら【CGIだけど、なんか質問ある?part4】
| http://ebi.2ch.net/test/read.cgi/php/1000804655/l50
を読みなさい。
0472名無しさん@お腹いっぱい。
01/11/28 20:49ID:eYEjqDt2ちょっと凄いループの中とかで、マクロ使うような局面で
inlineに出来ないですよね
0473名無しさん@お腹いっぱい。
01/11/29 03:19ID:???0474名無しさん@お腹いっぱい。
01/11/29 04:46ID:???うんこ野郎には教えられないと思うんですが。
呼びかけるならうんこ野郎以外に向けて呼びかけないと。
0475_gunzip
01/11/29 05:19ID:???どうしても気になるならC/C++で書くよろし
#!/usr/bin/perl -P
#define SWAP(a,b) (a,b) = (b,a)
use strict;
use Benchmark;
our $a = 0, $b = 1;
sub swap($$)
{
@_[0, 1] = @_[1, 0];
}
timethese(1000000, {
"inline" => sub { ($a, $b) = ($b, $a) },
"using macro" => sub { SWAP($a, $b) },
"function call" => sub { swap($a, $b) }
});
0476_gunzip
01/11/29 05:23ID:???Benchmark: timing 1000000 iterations of function call, inline, using macro...
function call: 11 wallclock secs (10.72 usr + 0.00 sys = 10.72 CPU) @ 93283.58/s
inline: 3 wallclock secs ( 3.69 usr + 0.00 sys = 3.69 CPU) @ 271076.17/s
using macro: 4 wallclock secs ( 3.72 usr + 0.00 sys = 3.72 CPU) @ 269179.00/s
0477Perl上級者
01/11/29 07:15ID:???0478名無しさん@お腹いっぱい。
01/11/29 10:45ID:???0480名無しさん@お腹いっぱい。
01/11/29 15:57ID:???@picfile = sort grep {/.jpg/} readdir(DIR);
closedir(DIR);
とした後でJPEG画像表示ってどうすればいいんでしょう?
foreach ( @picfile )
{
print $_,"<br>\n";
}
だとファイル名を表示しますよね?
0481名無しさん@お腹いっぱい。
01/11/29 16:09ID:/dTb+5XA複数台にインストールしなきゃいけなくって、
アーカイブをダウンロードしておいて、それを使ってインストール
したいのですが、猿のようにppm installしていたので
ダウンロードの仕方やファイルの指定方法がわかりません
0482むぎ茶?
01/11/29 16:56ID:Fa8sgCiktime_t が一周して同じ値になるとユニークじゃなくなるよ:D
0483むぎ茶!
01/11/29 16:58ID:Fa8sgCikprint qq|<img src="$_"><br>\n";
はどう?
0484名無しさん@お腹いっぱい。
01/11/29 17:43ID:???なるほろ!ありがとです
0485名無しさん@お腹いっぱい。
01/11/29 18:48ID:???普通にクッキーは食ってくれるんですがブラウザ閉じると死にます。
sub set_cookie{
$c_name = "kunni"; $c_mail = "kumanko";
$name = $FORM{'name'};
$n ='10*60*60*24';
($secg,$ming,$hourg,$mdayg,$mong,$yearg,$wdayg,$ydayg) = localtime(time+$n);
$ww = (Sun,Mon,Tue,Wed,Thu,Fri,Sat)[$wday];
$mong1 = (Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec)[$mong];
$expires = sprintf("%s,%02d-%s-%02d %02d:%02d:%02d GMT",$wwg,$mdayg,$mong1,$yearg,$hourg,$ming,$secg);
print "set-cookie:$c_name=$name;expires=$expires;\n";
}
0486名無しさん@お腹いっぱい。
01/11/29 19:08ID:???どうせKENTのパクるなら全部コピペすれば?
Sun, 01-Jan-2000 12:12:12 GMT
0487名無しさん@お腹いっぱい。
01/11/29 19:19ID:???書き込めたから前の質問はいいわ。
じゃあパクッてないクッキーの記述の条件をおせーてくれ。
無論ソースで実例記述はいらんよ。
こことこことここが違えばパクって無いオリジナルであるって条件。
スカラ変えればいいってもんでもないだろうし、一つ頼むわ。
0488名無しさん@お腹いっぱい。
01/11/29 19:26ID:???0489名無しさん@お腹いっぱい。
01/11/29 19:30ID:???時間取得から寄せ集めprintなんてどこでもやってると思うが。。。
どーでもいいが$C_mail=kumanko;はといあえず書き込んでないから
意味無いね。
0490名無しさん@お腹いっぱい。
01/11/29 19:33ID:???これは何を意味してるんだ?一回しか出てこんけど。
0491名無しさん@お腹いっぱい。
01/11/29 19:33ID:???どう言う意味?$ydayg ぷ
0492名無しさん@お腹いっぱい。
01/11/29 19:36ID:???分かりにくい変数名にしないといかんのだろ。
0493名無しさん@お腹いっぱい。
01/11/29 19:38ID:???0494486
01/11/29 19:40ID:???まあパクって無いってんならそうなんでしょう
>>時間取得から寄せ集めprintなんてどこでもやってると思うが。。。
んな事しなくても、gmtimeに投げてsplitすりゃ良いんで
普通はそうします(w
KENTとは言わんがどっかで拾ったコード使って、変数の中吐き出して
確認も出来ないなら、そのまま使えばよろしいかと・・・
0496名無しさん@お腹いっぱい。
01/11/29 19:42ID:???実力いっぱいいっぱいの典型例>>488みたいなのが
出てくる所を見ると3段階、4段階の質問受けれる程話せそうな奴は
噂の2ちゃんにもいなさそうだな。天秤計測終了。
興味無いから適当に煽って後は放置でいいよ。君に興味無いから(ワラ
>>489
あーそうだよ。すまんね。意味無いからそこ削除するか
printで名前書きの下にもmail用の一行加えといてくれ。
ソッコーで書いたからミスっちまったい。
0497名無しさん@お腹いっぱい。
01/11/29 19:47ID:???アホだと思うが
それを最初にばら撒いたのがKENT氏って事か?
0498名無しさん@お腹いっぱい。
01/11/29 19:49ID:AMvwJSR+>普通はそうします(w
ちょっと溜息。パクってるって言われるくらいそっちのが
メジャーだと思うからシャレきかせたつもりだが。。。
書き方あえて変えてんだから読み取ってネ。じゃ無駄な時間使って
煽ってくれ。バイバーイ低次元。
05003行で済むな 藁
01/11/29 19:56ID:???($wday,$month,$day,$time,$year) = split(/ /,$exptime);
print "$wday, $day-$month-$year $time GMT\n";
ほら、これで満足だろ? GPLだからソース公開しろよ 藁
0501名無しさん@お腹いっぱい。
01/11/29 19:58ID:???悲惨過ぎる・・・
0503名無しさん@お腹いっぱい。
01/11/29 20:52ID:???らくだ位読もうね みなさん
0504名無しさん@お腹いっぱい。
01/11/29 22:30ID:???ぼくは下記のようにやっているのですが,すっごく厨房ぽいです
#!/usr/local/bin/perl
open FILE, $file or die "can't open $file:$!\n";
$cnt = 0;
while(<FILE>) {
$cnt++;
}
close FILE;
print "$fileの行数は$cnt行です\n";
0505名無しさん@お腹いっぱい。
01/11/29 22:48ID:???こんなん。
$cnt+= tr/\n// while read FILE, $_, 1024;
0506名無しさん@お腹いっぱい。
01/11/29 23:04ID:???これ役にたったよ、何も+1900とかしてシコシコ計算する事無いんだね
俺もKENT病だったようだ(´Д`;)
月をハッシュに入れて日本語表示も随分すっきりしました
# つくづく>485は悲惨だと思った
0507
01/11/30 00:27ID:JaJKMNFahttp://home.big.or.jp/index.html?WWW_MENU=m021002h#003
の説明が良くわかりません。
.htpasswd
AuthUserFile /public/pub?/home?/(UserID)/html/secret/.htpasswd
AuthGroupFile /dev/null
AuthName member
AuthType Basic
<Limit POST GET PUT>
require user (UserName)
</Limit>
の設定をして、IDと、パスワードを要求される画面までいきますが・・
アクセス成功できません。Perlのバージョンによって記述が異なるようですが。
$ perl -v
This is perl, v5.7.0 built for i686-linux
です。
このサイトを利用しているかたのアドバイスをいただけないでしょうか?
基本認証はperlとは関係ないよ。
.htpasswdは正確に記述してある?
AuthUserFileにはパスを正確に記述してある?
0509
01/11/30 01:08ID:JaJKMNFaAuthUserFile /public/pub?/home?/hoge/html/cgi-bin/.htpasswd
・・・
こういう感じ
「?」っているのかな。外すと駄目みたい。
Options -Indexes
とした場合、に同ディレクトリにあるファイルに直接アドレス入力すると、
見えてしまうのですが、これを見せない方法ってありますか?
0510名無しさん@お腹いっぱい。
01/11/30 01:14ID:???その辺の説明サイトみながら作れ。
その/public/pub〜〜 って所はpwdって打って出てきたのを入れろ
0511名無しさん@お腹いっぱい。
01/11/30 01:22ID:???0512なにがいけないんだろう?。
01/11/30 01:41ID:2jA/moy4ID:yokohama
Pass:monako
http://www15.big.or.jp/~s-w-/
AuthUserFile /public/pub/home/s-w-/html/cgi-bin/.htpasswd
AuthGroupFile /dev/null
AuthName member
AuthType Basic
<Limit POST GET PUT>
require user yokohama
</Limit>
0513??
01/11/30 01:49ID:???上に書いてるけどtelnetで入ってpwdしてOSの絶対パス書かなきゃダメだって
AuthUserFile はおまじないじゃ無いよ、ISPなんて出鱈目書いてたりするし・・
0514472
01/11/30 01:56ID:???473は僕じゃないよ
_gunzip さん有難う御座いました。ベンチまで取って頂いて。。
Pオプション、知りませんでした 汗;
PERL勉強しないとダメだなぁ。。。
手元のGCCですんなり使えましたけど、何か変な感じです ^^;
取り合えずマクロにする事でちょっぴり安心な結果になりました
今perldoc精読中ですー 感謝!
0515つかれた・・
01/11/30 01:58ID:???ども、pwdは以下なんですけどね。
big15:/public/pub/home/s-w-/html/cgi-bin$ pwd
/public/pub/home/s-w-/html/cgi-bin
0516513
01/11/30 02:21ID:???パス合ってるなら後はファイル出来てる事とパミ確認する位かな
後、LIMITGETとか要らない、テストは最小構成で、これ基本
AuthName,AuthType,AuthUserFile,require valid-user
その辺がOKならサポ板とかで聞いてみれば、Perlは全く関係無いから言わなくてよし
0517513
01/11/30 02:27ID:???401だからファイル見つからないか中身がおかしいっぽい(2.3のUAで確認したよ)
これで作れる?(未テスト)
#!/usr/local/bin/perl
print "Content-type: text/html\n\n<html><body>";
if($ENV{'QUERY_STRING'} eq ''){
$0=~s#.*/([^/]+)$#$1#g;
print "<h2>パスワードを入力して下さい。</h2>";
print "<form method=get action=$0><input type=text name=id size=10></form>";
} elsif($ENV{'QUERY_STRING'} =~ s/^id=//){
open(FH,">./.htpasswd")||print "ファイルを作成出来ません!";
my @salt = (a..z,A..Z);
$salt .= $salt[int(rand(52))] for(0..1);
$crypted = crypt($ENV{'QUERY_STRING'},$salt);
print FH "$ENV{'QUERY_STRING'}:$crypted\n";
close FH;
print "$ENV{'QUERY_STRING'}を暗号化しました! -> $crypted";
}
0518名無しさん@お腹いっぱい。
01/11/30 03:12ID:JcBWdq/s0519名無しさん@お腹いっぱい。
01/11/30 03:20ID:???0520名無しさん@お腹いっぱい。
01/11/30 08:31ID:???煽りのはずなんだけど、なんか可愛い。
0521名無しさん@お腹いっぱい。
01/11/30 08:47ID:???スレ違い。
0522名無しさん@お腹いっぱい。
01/11/30 09:09ID:???なるほど、何で高々現在時刻得る為にこんなに小難しくて解りにくいやり方なんだろう(それも決まりきった様に)
と前から疑問に思っていた。しかも使ってるのはまんまasctimeの返り値だし・・・
クッキーなんて、何故かやたら冗長だし、エスケープもしてないし、
たまにやってると思ったらordとか変な関数使ってて、又ややこしいし
よっぽど強力に推奨してる本でも有るのかと。
0523名無しさん@お腹いっぱい。
01/11/30 09:53ID:???エスケープのやりかたなんてしらんけど、知っといたほうがいいのかな(藁
0524名無しさん@お腹いっぱい。
01/11/30 10:20ID:???プロバのHPスペースでCGIが使えるので使っているのですが、これがPerl4だったりします。
Perl5との違いなどでここは気を付けた方がいいというところはありますか?
とりあえず、「$a ||= 1;」とかやるとエラーが出ました。
いろいろと出来ないことが多いみたいで・・・。
もし、Perl4とPerl5の違いを説明したHPなどがあれば紹介していただけるとたすかります。
・・・できれば日本語で。
よろしくお願いします。
0525名無しさん@お腹いっぱい。
01/11/30 11:59ID:???気をつけるのは動かないのよりfor(0..1000)みたいな爆弾構文だ
0526名無しさん@お腹いっぱい。
01/11/30 13:05ID:???0527名無しさん@お腹いっぱい。
01/11/30 17:44ID:???0528524
01/11/30 18:37ID:???検索してみましたけどちょっとよくわかりませんでした。
もう少し勉強してみます。
for(1..1000)はまずいんですか?
繰り返しが多過ぎるのが理由でしょうか?
>526-527
それはさすがに(w;
サーバー会社のでなくプロバイダについてきたスペースなので・・・。
0529名無しさん@お腹いっぱい。
01/11/30 19:07ID:???for(1..1000)は1,2,3,4,...,999,1000っていうリストを
あらかじめメモリ上に確保してからループに入るから。
1000程度なら爆弾でもないけど。
プロバイダにバージョンアップの要請しちゃダメなんてことはない。
受け入れられるか知らないけど。
つーか、乗り換えるのが吉。
0530名無しさん@お腹グー
01/11/30 19:10ID:Edtr0BUz猿より毛が3本多ければ勿論可能。ppm.batの中身を
解析しろ。難しくないぞ。
お前の能力で出来ないなら、3本毛が少ないんだな、
あきらめろ。 コキ過ぎで逝くなよ。
0531524
01/11/30 19:14ID:???地方ローカルのプロバで接続量は安いのでなかなか乗り換えられなくて。
予算ができたらレンタルサーバーを借りようと思っています。
これ以上はスレ違いなのでここまでで。
for(1..1000)はやはりループが多いのが問題なのですね。
さすがに1000ものループはないですが今後も気をつけるようにします。
ありがとうございました。
0532名無しさん@お腹いっぱい。
01/11/30 19:20ID:???だからループの数じゃなくて「リストをあらかじめメモリ上に確保」
が問題なんだってば。
for($i=1; $i<=1000; $i++)なら何の問題もなし。
0533524
01/11/30 19:23ID:???すみません、ちょっとよくわからなくなってしまいました。
for(1 .. 1000)とやると1000の変数の分の領域をメモリ上に確保してしまう
というような意味でしょうか?
だとしたら、$#list = 1000;みたいなのも同様にまずいですよね?
0534名無しさん@お腹いっぱい。
01/11/30 19:43ID:???> というような意味でしょうか?
御意。
> だとしたら、$#list = 1000;みたいなのも同様にまずいですよね?
領域の確保は発生するだろうね。
1000個の値が必要な配列があるのなら使うだろうし、
なければそんなことやる意味がないとおもうけど・・・
0535524
01/11/30 20:20ID:???なるほど。
親切な説明ありがとうございます。
今更ですが$#list=1000;みたいなバカなものを作っていた自分がいました。
早速修正しようと思います。
ありがとうございました。
アクセス成功できました。
ありがとうございます。
0537名無しさん@お腹いっぱい。
01/12/01 04:31ID:kdHffvH4http://pc.2ch.net/test/read.cgi/hp/1005035374/824-
上のスレで}の後の;を省略している人がいるのですが、
これって文法的に正しいのでしょうか。
テストしてみたら実際動いたのですが…。
0538名無しさん@お腹いっぱい。
01/12/01 06:20ID:???問題ありません。Perlにおいては正しい書き方です。
ただ、俺だったらそのスレの824のようなケースでは省きませんね。
俺が省くのは、{ print $_ } のように、{ } が短い一行になる場合です。
これは単純に美的感覚(?)の問題ですけど。
0539名無しさん@お腹いっぱい。
01/12/01 08:34ID:???インデントとか基本的な所は当然としても
俺みたいに色んな言語をちょろ齧りしてる様な奴のperlのソースはとても汚い
記述に一貫性が無いのに、それでも通ってしまうんだよ。
逆に〜〜言語風の書き方を一貫出来る人のコードは読みやすい
だから俺は、例えばCっぽい記述を強制するStrict_cみたいなのが欲しいんだ(w
0540名無しさん@お腹いっぱい。
01/12/01 21:36ID:Bx/rf8oU1度のスクリプト動作で一回しか乱数を使用しない場合は
乱数の初期化ってしなくてもいいんでしょうか。
0541名無しさん@お腹いっぱい。
01/12/01 23:59ID:???0542名無しさん@お腹いっぱい。
01/12/02 00:03ID:???専門書?
0543名無しさん@お腹いっぱい。
01/12/02 00:53ID:???0544名無しさん@お腹いっぱい。
01/12/02 01:01ID:???0545名無しさん@お腹いっぱい。
01/12/02 08:29ID:???0546名無しさん@お腹いっぱい。
01/12/02 08:30ID:???氏ね
0547名無しさん@お腹いっぱい。
01/12/02 08:46ID:???他の巡回スレも煽り荒らしばかりで嫌になった…。
朝くらい気持ちよく巡回させてくれよ…。
0548名無しさん@お腹いっぱい。
01/12/02 17:47ID:6F2mG0wFそんなモジュールを探しているのですが、標準モジュールで
ありますでしょうか?
0549名無しさん@お腹いっぱい。
01/12/02 18:25ID:???0550名無しさん@お腹いっぱい。
01/12/02 18:26ID:???$b = "/home/user/public_html/php/index.html";
print relative_path($a, $b);
sub relative_path {
my @file = @_;
my @dirA = split /\//, $file[0];
my @dirB = split /\//, $file[1];
while (1) {
last if ($dirA[0] ne $dirB[0]);
shift @dirA;
shift @dirB;
}
my $dir = "../" x $#dirA;
return $dir . (join "/", @dirB);
}
0551名無しさん@お腹いっぱい。
01/12/02 22:48ID:SEeFh0J9web上でcgiにアクセスするとダウンロードのダイアログが出てきて
しまいます。これは何がいけないのでしょうか。
0552名無しさん@お腹いっぱい。
01/12/02 22:53ID:???サーバーによるけど、パーミッションが悪いか、スクリプトにエラーがあるか。
そのスクリプトが動くかどうかは、ローカルでチェックしているよね?
0553名無しさん@お腹いっぱい。
01/12/02 23:21ID:???0554名無しさん@お腹いっぱい。
01/12/02 23:38ID:???アマゾン逝ってよしですか?
0555名無しさん@お腹いっぱい。
01/12/03 00:00ID:???一般から見れば、切らさんように随時チェックせないかん程の本じゃないし、
一二週間待っときゃ入荷されるだろ。
0557名無しさん@お腹いっぱい。
01/12/03 09:14ID:???ただ 84日ぐらい待っとけ・・・とはさすがに思わん。
0558名無しさん@お腹いっぱい。
01/12/03 13:42ID:???みたいな配列の要素の数を数える関数てありますでしょうか。
0559縞栗鼠(シマリス)の親方
01/12/03 13:46ID:v6vCrfM9汚物入れを物色して女子生徒の使用済みタンポン・ナプキン等を
個人的に収集しているというのは事実。
中央高等学院 http://chs-f.com/index.html 中央高等学院福岡校
http://www.chuo-school.ac/
0560名無しさん@お腹いっぱい。
01/12/03 13:58ID:???$count = $#hogehoge + 1; # @hogehoge の 要素数
0562名無しさん@お腹いっぱい。
01/12/03 16:01ID:???いるのですが、htmlのフォームにチェック項目が幾つかあって
全部にチェックが入っていないとcgiで変数が空かどうか調べて
$hogeがチェック入っていません。
というふうにしてcgiでメッセージを出しています。
それで当然htmlに戻るんですが、ブラウザで戻ると
前にチェックした項目が全部チェックがはずれてしまっています。
項目がたくさんあるのでこれを回避したいのですが。
仕様でinputにcheckedを入れていないのがいけないのですが。
0563名無しさん@お腹いっぱい。
01/12/03 16:07ID:???こっちだべ。
CGIだけど、なんか質問ある?part4
http://pc.2ch.net/test/read.cgi/php/1000804655/
0564>>562
01/12/03 16:18ID:???HTMLの段階でJavaScriptかなんか使って
フォーム入力のチェックしたら?
# 厳密にCGIの質問じゃないね
0565名無しさん@お腹いっぱい。
01/12/03 17:39ID:???0566初めてのスクリプト
01/12/03 18:15ID:4NX8xqaD$check_word = $ARGV[0];
$check_file = $ARGV[1];
open(IN, "$check_file");
while ($line = <IN>) {
if ($line =~ $check_word) {
if ($line =~ /(\d+\.*\d+)\s*Mbps/ )
{
$ct++ ;
$speed += $1;
}
elsif ($line =~ /(\d+\.*\d+)\s*[kK]bps/ )
{
$ct++ ;
$tyousei = $1 / 1000;
$speed += $tyousei;
}
}
}
$avr = $speed / $ct;
print "$ct 回 \n";
print "$avr Mbps\n";
0567566
01/12/03 18:16ID:4NX8xqaDスピードテストのサイトのデータを perlで処理するスクリプトを作ってみました。何とか動いているので、感激しているのですが、brush upするために諸先輩のご意見をお聞かせください。
測定回数と平均スピードを表示するものです。
測定サイトは、 http://speed.on.arena.ne.jp/ http://www.broadland.jp/ の2カ所。データは、2種類です。
TARGET home.att.ne.jp
DATE Sun Dec 2 06:25:37 UTC+0900 2001
TIME 4.627 sec
YOU 5432 Kbps
測定サイト http://speed.on.arena.ne.jp/ v2.0.7
測定時刻 2001/12/02 10:54:22
回線種類/線路長 ADSL/-km
キャリア/プロバイダ ACCA 8Mbps/so-net
ホスト1 WebArena(NTTPC) 4.52Mbps(2244kB,4.0秒)
ホスト2 at-link(C&W IDC) 5.3Mbps(2244kB,3.5秒)
推定最大スループット 5.3Mbps(665kB/s)
コメント ACCA 8Mbpsとしてはかなり速いです!おめでとうございます。(1/5)
これで、このように表示されます。
26 回
3.61423076923077 Mbps
課題 小数点以下を第2位くらい、あるいは、任意の桁で表示する。
独学の初心者です。よろしくお願いします。
0568名無しさん@お腹いっぱい。
01/12/03 19:17ID:???http://www.din.or.jp/~ohzaki/perl.htm
0569566
01/12/03 20:01ID:???ありがとうございます。
とりあえず、sprintf を使うことにしました。
後は、時間帯別、日別の平均スピードに挑戦します。
0570名無しさん@お腹いっぱい。
01/12/03 20:08ID:???printf(".2f",$avr);
本持って無いなら
`printf` `format` `perl` 辺りで検索してくれ
0571名無しさん@お腹いっぱい。
01/12/03 20:09ID:???0572バックスペースとのマッチ
01/12/03 20:37ID:sBy63GlFコマンドライン入出力ファイルから、特定コマンドの出力を取り出そうとしています。
(幸いな事に、ファイルにマルチバイト文字は含まれていません。)
コマンド入力の際に、「ミスタッチ→バックスペースで修正」と打たれていた場合に対応しようとし、以下の様に考えました。
1.バックスペースは直前の文字と相殺する。
2.バックスペースがある限り、1.を繰り返す。
以上を実現するため、以下の様なコードを書きました。(デバッグ用のprintも併せて記します。)
while($line =~ m/.[\b]/) {$line =~ s/.[\b]//; print "さば$lineさば\n";}
print "いわし$lineいわし\n";
以下、疑問点です。
疑問点1:
バックスペースが入っている行をこの処理に入れても、さばprintが出ません。
正規表現は合っているでしょうか?(「らくだ本」を見ても、私の頭ではいまいち解りませんでした。)
疑問点2:
いわしprintですが、バックスペースは単なるホワイトスペースとして出力されている様です。
(print出力をファイルへリダイレクトしてみましたが、明らかにホワイトスペースでした。)
私はやろうとしている事が果たしてできるのでしょうか??
蛇足ですが、当方の作業環境のperlバージョンは
This is perl, version 5.005_03 built for sun4-solaris
Copyright 1987-1999, Larry Wall
でした。
0573名無しさん@お腹いっぱい。
01/12/03 22:46ID:???物にはユーザのキーログがそのまま入ってるって訳?
だったらansiの表でも見ながらパーサ書くのが王道じゃ無いの?
→←とか押されたらどうするんでしょ
0574572
01/12/03 23:14ID:+1gWR50Y舌足らずな説明、すいませんです。
「コマンドライン入出力ファイル」とは、
telnet somehost | tee /tmp/log.txt
と打った時の/tmp/log.txt内容をご想像下さい。
バックスペース入力がファイルに残るのは見ているのですが、
カーソルキー入力がファイルに残り、それが入った文字列が有効なコマンド名となるのは試していませんです・・・すいません・・・
例えば、
p ^[[A s -a
みたいな感じになるのでしょうか?(でもこの場合、有効な入力にはならない気が・・・)
0575名無しさん@お腹いっぱい。
01/12/03 23:28ID:wka85RYEソースがおかしいって言ったら突然CGIを語るなら
LINUX勉強しろって言われてPHP、SQLの勉強してはどうだろうか?
と罵倒され、レンタルHTMLって知らないのかと言われたんだが…
0576名無しさん@お腹いっぱい。
01/12/03 23:45ID:???他のところで聞いてくるYO!
0578名無しさん@お腹いっぱい。
01/12/05 01:13ID:9ARk5xac0579名無しさん@お腹いっぱい。
01/12/05 17:18ID:rTg+WPehc:\perlの中? c:\scrとかかな? c:\pl?
スタンダードってありますか?
0580名無しさん@お腹いっぱい。
01/12/05 17:58ID:my6OaWYN0581名無しさん@お腹いっぱい。
01/12/05 19:34ID:???#何でスクリーンセーバだろ? とかちょっと悩んだ w
0582名無しさん@お腹いっぱい。
01/12/05 19:34ID:Lvfs0GBWforeach文で、
foreach(@line){
($_使って処理)
}
というようなことをしたいのですが、たとえば、配列@lineのが30個の要素
を持っていたとして、11番目から20番目まで処理したいとかいうとき
foreach文でそんなことは可能なのでしょうか?それとももっといい方法
があるのでしょうか?
私の少ない知識では、
for (my $i = 10; $i < 20; $i++){
($line[$i]を使って処理)
}
という幼稚な方法しか思いつかないのですが...。
ご教授お願いいたします。
0583_gunzip
01/12/05 19:44ID:???print $line[$_], "\n";
}
などなど。
0584名無しさん@お腹いっぱい。
01/12/05 20:12ID:???foreach(@line[10 .. 19]){
処理
}
0585名無しさん@お腹いっぱい。
01/12/05 23:42ID:???うちは c:\home\pl
0586572
01/12/06 02:54ID:1atXp7qL私の質問に回答をいただけないのは、きっと私の質問そのものに欠陥があったためなのでしょう。
という訳で、消えますが、その前に基本的な質問を発したくございます。
今回の様な極めて初歩的な質問(バックスペースにマッチするサンプルでOKです。)は、どのスレッドで質問すればいいのでしょう?
今回の様な、WebProgramingとは関係ない質問は、どの板で質問すればいいのでしょう?
やっぱり私は、シェル操作そのものに関して無知と思われます(カーソル移動で入力コマンド文字列を変更する技に関して、あまりよく知りません。)が、根本的に知識不足ですね。
書けば書く程鬱・・・Perlはおろか、コマンドラインでキーを打つのすら禁じられた気分であります・・・だって私は、愚者ですから・・・
失礼しました・・・
0587デフォルトの名無しさん
01/12/06 03:12ID:???上にも書いてるけど、キーログの類なら正直Packetstormとかに行って
KEYLOGってすればワラワラ出てくる筈だから、その辺でも見てみれば
マッチングだけなら m/\b/ でいいんだけど、個人的には文字列の解釈(コマンドの引き数とかね)は
正規表現でゴチャゴチャするより、
while(substr(***))って感じで1byteづつ切り分ける方が結構簡単だったりする
漠然としてるけどこんなところ。あんまり質問を見てないけど (^^;
0588名無しさん@お腹いっぱい。
01/12/06 06:24ID:???そのままのperl文を写して掲示板を作成したのですが
まったく機能しません。。(コメントが書き込まれない)
たぶん記述は何回も確認したので間違えてないと思うのですが
よろしければアドバイス願います。
−−−−−−−−−−−−−−−−−−−−−−−−−−−−
#!/usr/bin/perl
print "Content-type:text/html\n\n";
read(STDIN, $str, $ENV{"CONTENT_LENGTH"});
@parts=split('&',$str);
foreach(@parts){
($variable,$value)=split("=");
$value=~ tr/+/ /;
$value=~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("C",hex($1))/eg;
$value=~ s/\r\n/\n/g;
$value=~ s/\r/\n/g;
$cgi{$variable}=$value;
}
$formfile="../chatform.html";
$name = $cgi{"name"};
$memo = $cgi{"memo"};
0589長いので改行は省きました
01/12/06 06:25ID:???<META HTTP-EQUIV="Refresh" CONTENT="0;URL=http://************/chatform.html">
<body bgcolor=silver text=navy>
wait for a second...<P>
EOF
open(FILE, "$formfile");
@oldform = <FILE>;
close(FILE);
$li = undef;
foreach(@oldform){
if(/^<LI>/){
@body=(@body, $_);
$li = 1;
}elsif($li){
@foot = (@foot, $_);
}else{
@head = (@head, $_);
}
}
open(FILE, ">$formfile");
select FILE;
print @head;
print @body;
print <<EOF;
<LI>$name: $memo
EOF
print @foot;
close(FILE);
0590名無しさん@お腹いっぱい。
01/12/06 06:55ID:???記述に間違いが無くてこれなら、こんな本捨てちまえ (いやマジで
つーか全然すぐ分かって無いし
愚痴だけじゃアレだから、openした時は返り値を見れ
open(FH,"hoge")||&Error("Can't open $!");
とか
if(!open(FH,"hoge")){&Error("Can't open $!");}
として
sub Error{print "Content-type: text/html\n\n$_[0]"}
後はひたすらprint分並べて変数の中確認しろ
なるべく小さく、ファイル操作するなら、まずファイルに一文字書き込み
から。
0591名無しさん@お腹いっぱい。
01/12/06 07:01ID:???0592名無しさん@お腹いっぱい。
01/12/06 07:24ID:???とりあえず何となく合ってる風味だからHTML間違えてるとかファイル開いてないとかじゃないの
上からどんどんprintして見ていけば?
0593説明
01/12/06 07:39ID:???書いてるものを選ぼう。
いきなりCGI書かせてCarpやKcatchの説明も無しと言うのは作者が精神分裂症か
サディストかのどちらかです :3=) Byバカボンのパパ
0594名無しさん@お腹いっぱい。
01/12/06 07:39ID:???殆どそのまんま588をコピペしたけど書き込まれたよ。
chatform.htmlが存在しないか、投稿フォームがオカシイんじゃ?
0595名無しさん@お腹いっぱい。
01/12/06 07:59ID:???0596名無しさん@お腹いっぱい。
01/12/06 08:24ID:???これ(↓)試したらどうなります?
$_ = "a\bb\bc\n";
print;
s/[\b]//g;
print;
0598名無しさん@お腹いっぱい。
01/12/06 09:09ID:???『初めてのPerl』やったら、『すぐわかるPerl』を買ったことをすぐに後悔した。
0599名無しさん@お腹いっぱい。
01/12/06 10:04ID:???参項書籍スレッドの方では結構評判いいのにね。
よかったら、その辺のこと、
http://pc.2ch.net/test/read.cgi/php/988809842/
に書いといてくれない?
サマリーに入るかもしれないし。
0600名無しさん@お腹いっぱい。
01/12/06 11:26ID:???100倍良いのは明らかだとは思う。
ただ、ホントにプログラムくむのが初めての人だったら、
一冊目が「初めてのPerl」というのはキツいかもしれない。
そういう場合のみ意味があると思う>すぐわかるPerl
# 大体、「すぐ分かるPerl」の著者は、本の中で「初めてのPerl」
を推薦してるし。
0601名無しさん@お腹いっぱい。
01/12/06 14:32ID:ixzePiV3ファイルを保存するルーチソってこれで問題ないですかね?
open(FILE, ">$file_dir\/$_[0]\.$$");
binmode(FILE);
binmode(STDIN);
while(<STDIN>) {
if ( $_ =~ /^$endline/ && $endline =~ /^--/ ){
last;
} elsif ( /^--/ ) {
$endline = $_;
} elsif ( /^Content\-Type\:\s*(.*)/i ) {
$file_type = $1;
} elsif ( /^\r\n/ ) {
next;
} elsif ( /^Content-Disposition: form-data/i ) {
next;
} else {
s/\r\n//g;
print DB $_;
}
}
close(FILE);
0602601
01/12/06 15:39ID:???cgilib使ったほうがいいのかな
0603ウンコー
01/12/06 15:43ID:8ybpM+Zdhttp://www.puchiwara.com/hacking/
それでもむりなら
裏ニュース。
0604572
01/12/06 19:27ID:wL0DoiFw懲りずに書き込みます。
>>596様のスクリプトですが、私の環境で実行したところ、
c
abc
と出ました。期待値通りの出力です。
以上から考えますと、バックスペース入力は、ファイル内では
\b以外の文字コードとして存在している、という事になります。
viでファイルを開くと「^H」(カーソル移動はこれで一文字分の移動をし、^とHから成る訳ではありません。)と見えるこの文字が何であるのか、
もう少し調べてみます。
それでは。
0605588&589
01/12/06 20:07ID:???当方、初心者なもんで「これでやっと掲示板作成か!」って段階に
来ていたのにできないもんですから、鬱になってました。。
>>594
投稿フォームも全部記述通りに書いたのですが
やっぱり無理でした。。
とりあえず590さんのを見てもう一度考えてみます
0606名無しさん@お腹いっぱい。
01/12/06 23:27ID:dTMUXoewA if((100 <= $total) and ($total < 200))
こういう条件式は@のようにいっぺんに聞いてはいけないのでしょうか。
SQL文は@のやり方でいけたんですけれど。
0607名無しさん@お腹いっぱい。
01/12/06 23:42ID:???htmlでmethodはpostです。
それで渡す値を色々試したいのでurlに?hoge=引数の形で
試すのですがうまく渡りません。
単にurlに引数を渡す場合でもhtmlのmethodをgetに変えなきゃいけないんでしょうか。
0608名無しさん@お腹いっぱい。
01/12/06 23:50ID:???0609名無しさん@お腹いっぱい。
01/12/07 01:34ID:???"\0"をセパレートとしてるけど、これって値事態に
"\0"があったら意味ないよね?
それとも\0ってなにか特殊なの?
0610609
01/12/07 01:37ID:???0611名無しさん@お腹いっぱい。
01/12/07 01:42ID:We0Nr7brperlで処理をすべて1ファイルで記述して
100KBくらいになったCGIは
やっぱり重いですか。
分割したほうがいいですか?
0612名無しさん@お腹いっぱい。
01/12/07 02:09ID:???分割したって同じじゃない?
0613名無しさん@お腹いっぱい。
01/12/07 02:13ID:???>初心者ということで教えてください。
これを書いてしまったことにより無視されるに50円。
0614名無しさん@お腹いっぱい。
01/12/07 02:13ID:???&で切っても&が有ったら意味ない、=で切っても=が有ったら意味ない
普通は&や=より\0使ったリクエストのが少ないだろ
>610
100KBくらいのCGIを書ける頃には分かるから気にすんなw
0615名無しさん@お腹いっぱい。
01/12/07 02:24ID:???>@if(100 <= $total < 200)
>SQL文は@のやり方でいけたんですけれど。
いけないって。DBは何?
SQLなら WHERE $total <= 100 AND $total < 200 って書かないとエラーになるYO!
0616名無しさん@お腹いっぱい。
01/12/07 02:26ID:???WHERE $total >= 100 AND $total < 200
0617名無しさん@お腹いっぱい。
01/12/07 08:27ID:???c
abc
となるなら、端末の設定も問題ないと思います。
また、vi上で^Hと表示され、^とHから成る(カーソルが2カラム分動く)のなら、
その文字はBackSpace(Ascii Code: 0x8)です。
>>596のみのスクリプトを端末ではなくリダイレクトでファイル出力し、その
結果をviで見たら、
a^Hb^Hc
abc
となりますか? od -cxの出力結果でも確認できます。
もし、^Hや\bが正しく出力されているのであれば、問題はスクリプトの別の部
分にあると疑ったほうがよいでしょう。
ちなみに WinNT + ActivePerl v5.6.1で、>>572のコードの先頭に
$line = "a\bb\bc";
を追加した結果をファイルに落として覗くと、
以下の通り期待した結果となります:
さばb^Hcさば
さばcさば
いわしcいわし
0618名無しさん@お腹いっぱい。
01/12/07 10:57ID:yYR0Ii3K0619名無しさん@お腹いっぱい。
01/12/07 12:08ID:???0620名無しさん@お腹いっぱい。
01/12/07 12:17ID:???0621名無しさん@お腹いっぱい。
01/12/07 12:19ID:???0622619
01/12/07 14:43ID:???0623611
01/12/07 15:44ID:???例えば
Perlで書いた掲示板プログラムをみると
管理用.cgiとbbs.cgiというように
分けてあるものと、
管理用も、bbs用も1ファイルで全て記述してある
ものを見かけるので、
実行速度とか関係あるのか、どちらが良いのでしょう?
.cgiは毎回毎回ロードされるのですか?
>>613
>初心者ということで教えてください。
私のような初心者が質問していいスレッドだと
思ったのですよ。無視しないで教えてくれ〜。
0624名無しさん@お腹いっぱい。
01/12/07 15:56ID:???って言う書式を教えてください
0625名無しさん@お腹いっぱい。
01/12/07 16:05ID:???if (ディレクトリが存在しない) {
ディレクトリをつくれ!
}
0626名無しさん@お腹いっぱい。
01/12/07 16:09ID:???[[解決]]
0627名無しさん@お腹いっぱい。
01/12/07 18:24ID:???$tensu{'田中'} = 100;
$tensu{'鈴木'} = 90;
$tensu{'佐藤'} = 100;
といったデータをsortした場合、田中と佐藤のどっちが先に来るかというのは
法則があるのでしょうか?
いつも同じ結果になるので法則があるのだとは思うのですが、その法則とは
どのような法則になっているのでしょうか?
もしご存知の方がいたら教えていただけると助かります。
よろしくお願いします。
0628名無しさん@お腹いっぱい。
01/12/07 18:33ID:???0629名無しさん@お腹いっぱい。
01/12/07 18:43ID:???0630名無しさん@お腹いっぱい。
01/12/07 18:44ID:???定義した順という事は上の例で言えば田中、鈴木、佐藤の順という事ですか?
print "Content-type: text/plain\n\n";
$tensu{'田中'} = 100;
$tensu{'鈴木'} = 100;
$tensu{'佐藤'} = 100;
$tensu{'山本'} = 100;
$tensu{'木村'} = 100;
foreach(sort{$tensu{$a} <=> $tensu{$b}} keys %tensu){
print $_."\n";
}
↑この例で試した場合、
↓のような順で表示されたのですが・・・。
木村
鈴木
山本
佐藤
田中
0631名無しさん@お腹いっぱい。
01/12/07 19:17ID:???スルーされる(筈)だからソートは行われない
print "$_\n" for sort{$a cmp $b}qw(cat rabit dog monkey mona);
日本語をソートしたいならJperlを使おう
0632名無しさん@お腹いっぱい。
01/12/07 19:34ID:???いえ、数字ソートした場合の同値の並び順の法則を聞きたいのですが・・・。
0633名無しさん@お腹いっぱい。 :
01/12/07 19:55ID:???print "$_\n" for sort{$a <=> $b}qw(鈴木 山本 田中 木村);
鈴木
山本
田中
木村
で、何でおかしな並べ替えが行われてるかと言うとkeysを通すからですが
この時keysが返す値の並びは***不定***なので
何から出てくるかは完全に***予測出来ません***
0634名無しさん@お腹いっぱい。
01/12/07 19:59ID:???これが気に入らないならハッシュ法を調べて、値を返す前にソートする様に
keysを改造して下さい :-)
0635名無しさん@お腹いっぱい。
01/12/07 20:17ID:???つまりハッシュテーブル内での記録状態に依存されるという事ですね。
こちら側からはその記録状態を把握できないから法則性を見出す事は出来ないと。
その返答で十分です。
ありがとうございました。
0636JAPU@はにゃ〜ん ◆JAPUTeX.
01/12/07 20:59ID:???tie %moemoe, "Tie::IxHash";
すれば keys %moemoe で "定義した" 順番に返ってくるにょ。
http://search.cpan.org/search?dist=Tie-IxHash
0637名無しさん@お腹いっぱい。
01/12/07 21:00ID:???たいして変わらん。
まず読みやすく書け。
管理がしやすくなるなら分割しろ。
初心者だから〜という考えは捨てろ。
0638名無しさん@お腹いっぱい。
01/12/07 21:07ID:???0639名無しさん@お腹いっぱい。
01/12/07 23:53ID:???0640名無しさん@お腹いっぱい。
01/12/07 23:59ID:XnpIIJ1Q0641名無しさん@お腹いっぱい。
01/12/08 00:09ID:???0642名無しさん@お腹いっぱい。
01/12/08 00:10ID:???使えるの?
0643名無しさん@お腹いっぱい。
01/12/08 00:16ID:???ちゃんと英語読め
0644名無しさん@お腹いっぱい。
01/12/08 00:18ID:???それはシステムの要求項目だ、特に無しって事だから気にすんな
nextに進んでmsiかzipを落せ
0645名無しさん@お腹いっぱい。
01/12/08 00:23ID:9GPXgj8m0646名無しさん@お腹いっぱい。
01/12/08 05:13ID:LmrHjtAGsub func (\%);
{
my %hash = ( key => 'VALUE' );
func(%hash);# <--(先頭に & 記号無しの呼び出し)
}
sub func (\%) {
my $ref = shift;
print $ref->{key}, "\n";# VALUE
}
誰か、サブルーチンを呼ぶ時に &func(%hash); と
した途端、期待通り動かなくなる理由をオシエレ。
一週間悩んだ挙句、このスレの 100-200 あたりを読んで
解決はしたけど、やっぱ理解しないと気持ち悪いのヨ。
0647名無しさん@お腹いっぱい。
01/12/08 05:40ID:D6XloJOW出来てるから、つまり仕様。ってことじゃダメ?
0648646
01/12/08 05:53ID:LmrHjtAGあ、非常によくわかりましたです。
今までは、将来の組み込み関数やファイルハンドルと
重ならないように、全てのサブルーチンにつけてましたが
先頭で宣言しとけば、もし重なった時にはエラーが(多分)
出ますものね。ありがとうございました。
ちなみに文体は変わりましたが本物の 646 です。わらい。
0649名無しさん@お腹いっぱい。
01/12/08 06:24ID:???専用のモジュールもあるんですね。
ありがとうございます。
0650名無しさん@お腹いっぱい。
01/12/08 09:44ID:txIFSrN6本当に初心者なんです。
FFFTPでCGIを転送するときのしくみ
でいい参考資料ありませんか?(汗)
ログありすぎて探したのですが
わかりません。。
0651名無しさん@お腹いっぱい。
01/12/08 09:52ID:???質問の意味が全然わかりません。
とりあえずもうちょっと勉強した方がいいような気はする。
http://tohoho.wakusei.ne.jp/www.htm
0652名無しさん@お腹いっぱい。
01/12/08 09:57ID:???RFC959
0653650
01/12/08 10:40ID:c8d0pxqG日本語も勉強した方がいいみたいです、私。
CGIのアップロードの仕方がわかんないんですが。
0654名無しさん@お腹いっぱい。
01/12/08 11:02ID:???http://www.google.com/search?num=100&hl=ja&q=FFFTP+CGI+%83A%83b%83v%83%8D%81%5B%83h&lr=
お好きなページをどうぞ。
0655572
01/12/08 14:46ID:4/I3dmD1ありがとうございます。
全て解決しました。
結論は・・・私がバグっていたからです。
while($line =~ m/.[\b]) {$line =~ s/.[\b]//;}
を行う位置を誤っていて、
自分でバックスペースをスペースへ変換してから
件の処理を行う様になっておりました。
という訳で、今後も精進致します。
0656名無しさん@お腹いっぱい。
01/12/08 21:49ID:???foreach(%HASH{keys %HASH}){ $_をいじる }
だと何も変わらないので
foreach(keys %HASH){$HASH{$_}= … }
ってコピーしてやってるんだけど,普通の配列を
foreach(@ARRAY){ … }
とやるみたいに直接中身を書き換える方法は無いの?
0657名無しさん@お腹いっぱい。
01/12/08 22:02ID:???keyわからなくなるけどforeach (values %hash)とか
0658名無しさん@お腹いっぱい。
01/12/08 22:22ID:???0659ほらよ
01/12/08 23:13ID:???eachやvaluesはダメよ
0660名無しさん@お腹いっぱい。
01/12/08 23:23ID:???0661名無しさん@お腹いっぱい。
01/12/08 23:29ID:???>>foreach(%HASH{keys %HASH}){ $_をいじる }
何をやりたいのか分からないです :-)
>>foreach(keys %HASH){$HASH{$_}= … }
コピーしてるとは? 一時配列を作りたくないって事?
だったら for(($key,$value)=each %HASH){if($key eq 'hoge')$HASH{$key}='...';}
なら一組のリストしか出来ないけど
>659
なんでリファレンス?
0662これの事かい?
01/12/08 23:37ID:???>the returned list is just a copy. You need to use a hash slice for
>that, since it's lvaluable in a way that values() is not.
>
> for (values %hash) { s/foo/bar/g } # FAILS!
> for (@hash{keys %hash}) { s/foo/bar/g } # ok
0663名無しさん@お腹いっぱい。
01/12/09 02:52ID:CTSZ1Ad/見たんですが、
name1, email1, title1, comment1, …
name2, email2, title2, comment2,
name3, email3, title3, comment3,
…
という感じで、一度に複数投稿できるようなスクリプトを作りたいんです。
(掲示板じゃないんですが、例として)
それで、同ページの「多重ハッシュを動的に作成。」ってあたりをどう
書いたらいいんでしょうか。
%hatugen = (
res1 => { name => "name1の値",
email=> "email1の値",
title => "title1の値",
comment => "comment1の値",
},
res2 => { name => "name2の値",
email=> "email2の値",
title => "title2の値",
comment => "comment2の値",
);
と全部書いてやるるしか自分には出来なくて…。
0664こんな感じかにゃお
01/12/09 04:09ID:???for (<DATA>){
for(split(/,/,$_)){
($key,$value)=split(/:/,$_);
${hash{$i}}{$key}=$value;
}
$i++;
}
for $num (keys %hash){
print "\%{\$hash{$num}} are ... \n";
while (($key,$value) = each %{$hash{$num}}){
print "$key ----> ${$hash{$num}}{$key} \n";
}
}
__DATA__
name:name1,mail:email1
name:name2,mail:email2
name:name3,mail:email3
未テスト
0665名無しさん@お腹いっぱい。
01/12/09 04:09ID:pYGvWQvhそれによって違うんだけど・・・
あとね、この場合普通はハッシュのハッシュは使わない。
配列の配列の方が無難。つまり、
@hatsugen = (
[ "name1", "email1", "title1", "comment1" ],
[ "name2", "email2", "title2", "comment2" ],
. . .
)
って感じ。理由はメモリの節約。
で、
use constant NAME => 0;
use constant EMAIL => 1;
use constant TITLE => 2;
use constant COMMENT => 3;
ってやっておけば、
$hatsugen[0][EMAIL]で最初の発言のメールを取得できるでしょ。
enum モジュール使えばなお可。
http://search.cpan.org/search?dist=enum
#enum標準にしてくれないかな・・・
0666こんな感じかにゃお
01/12/09 04:10ID:???0667名無しさん@お腹いっぱい。
01/12/09 04:52ID:???>665
>上のカンマ区切りのやつはフォームから入力するんかい?それともファイル?
フォームです。
>664 >665さんの回答を自分で試してみてから、
またレスします。 (適当に直せる自信ないけど…)
0668こんな感じかにゃお
01/12/09 05:12ID:???つか俺も知らなかったけどListofListで列挙型使えるのイイ(・∀・)ね
あとシンボリックリンク恐怖症じゃなければ、単純に枝番ふった連装配列
ってのも有りかな・・・
0669名無しさん@Emacs
01/12/09 11:56ID:???ある画像(GIF,JPEG,PNG 等)の
幅と高さを取得できるようなスクリプツはできますか ?
0670名無しさん@お腹いっぱい。
01/12/09 12:31ID:???Image::Size
まだ、使ったことないけど、たしかこれで。
0671名無しさん@Emacs
01/12/09 13:08ID:???サンクスコ!!
0672名無しさん@お腹いっぱい。
01/12/09 18:43ID:???0673名無しさん@お腹いっぱい。
01/12/09 19:43ID:???0674670
01/12/09 19:55ID:???0675名無しさん@お腹いっぱい。
01/12/10 15:59ID:???0676名無しさん@お腹いっぱい。
01/12/10 22:00ID:???if(条件A){処理A;}
elsif(条件B){処理B;}
と書く場合、
「もし条件Aでなければ処理Aをしなさい、あるいはもし条件Bでなければ処理Bをしなさい」は
unless(条件A){処理A;}
elsif(条件B){処理B;}
でよいのでしょうか?
現在、elsifを使うべきかわからない状態です
0677名無しさん@お腹いっぱい。
01/12/10 22:05ID:???>elsif(条件B){処理B;}
これ出来たっけ?(未確認)
否定文並べるか肯定文ならべるかはケース倍ケースdeath
if(条件A){処理A;}
elsif(条件B){処理B;}
は
if(条件A){処理A;}
if(!条件A 且つ 条件B){処理B;}
の略、省略したいから使うだけで悩む事じゃないでふ〜〜
0678名無しさん@お腹いっぱい。
01/12/10 22:20ID:???試してみたら一発じゃん・・・。
俺は出来た。
0679名無しさん@お腹いっぱい。
01/12/11 01:30ID:???0680名無しさん@お腹いっぱい。
01/12/11 01:58ID:???elseの意味を調べてくれ
0681名無しさん@お腹いっぱい
01/12/11 14:09ID:???記入された内容をCSVファイルに追加書き込みしているのですが、
複数行入力を許しているテキストフィールドの内容を書き込む際、
改行コードが邪魔になってしまいます。
書き込む際に改行コードを強制削除したいのですが、
うまく消えてくれません。
$other=~ s/\n/<br>/g;
と他の文字列に置換してみたところ、
改行タグの後ろに結局改行コードが残ってしまいました。
($otherには入力内容が入ってます。)
サーバはNTで、perlのバージョンは5です。
何か良い方法はないでしょうか?
0683名無しさん@お腹いっぱい
01/12/11 15:08ID:???ありがとう。
きれいなデータになりました。
ちなみに
\r?
にはどういう意味があるのですか?
0685名無しさん@お腹いっぱい
01/12/11 15:27ID:???了解しました。
世の中のPerlの本はUNIX前提になっているものが多いんですね。
次はLINUX+PHP+Postgresqlを勉強する予定なので、
またまた文字コードに悩まされそう。
0686名無しさん@お腹いっぱい。
01/12/11 15:45ID:???それと文字数を数えるのってどうやるの?
aだと1、aaaだと3を返すやりかた。
0687名無しさん@お腹いっぱい。
01/12/11 16:01ID:???http://pc.2ch.net/test/read.cgi/php/1000804655/854-855
奇遇だな。
ちょうど同じような質問を見かけたところだ。
0688名無しさん@お腹いっぱい。
01/12/11 16:34ID:???abcでも3を返したいの。そこのリンクは1が帰ってくるでしょ。
0689名無しさん@お腹いっぱい。
01/12/11 16:41ID:???0690688
01/12/11 17:03ID:???0691名無しさん@お腹いっぱい。
01/12/11 17:20ID:P2qcRNJ8<script language="javascript">
<!--
function javascript { 〜 }
// --> </script>
<form name="form1" onsubmit="return javascript()" action="">
<input type="text" name="abc"><input type="submit" name="button1" value="CHECK!">
</form><form name="form2" action="$scriptname">
<input type="submit" name="button2" value="XXXXX">
</form>
HTML
わけあってこうしなければならなくなった。
ようするに、form1で、入力された文字列を、javascriptで処理し、その処理結果を、perlで処理したい、という事。
もしかすると、HTML以前の問題かも。
心の広い方、教えてください。
0692名無しさん@お腹いっぱい。
01/12/11 17:22ID:???マルチポストウザイ。
0693名無しさん@お腹いっぱい。
01/12/11 17:26ID:P2qcRNJ80694名無しさん@お腹いっぱい。
01/12/11 19:28ID:???放置するか回答するの二者択一でお願いしまちゅ
0695名無しさん@お腹いっぱい。
01/12/11 19:28ID:???0696名無しさん@お腹いっぱい。
01/12/11 23:31ID:???マルチ野郎の思う壺じゃないか。
0697名無しさん@お腹いっぱい。
01/12/12 00:04ID:1mlMOGo3$addr = $ENV{"REMOTE_ADDR"};
$host = gethostbyaddr (pack ("C4", split (/\./, $addr)), 2);
この処理で、gethostbyaddr以下が良く分かりません。
$addrに格納されたIPアドレスの『.』を取り去った四つの数字をバイナリ化(?)
したものを・・・?
最後の2が何を表すのか、また他に使える数字にはどんな
ものがあるのか知りたいです。
それとgethostbyaddr関数ってpackとペアに使わなくちゃいけないものなんですか?
0698名無しさん@お腹いっぱい。
01/12/12 00:33ID:???http://www.linux.or.jp/JM/html/LDP_man-pages/man3/gethostbyaddr.3.html
>最後の2が何を表すのか、また他に使える数字にはどんな
定数AF_INETを指します、他に使えるすうじは有りません
>packとペア
勿論、自分でオクテット毎に255^n*xしてもらっても結構です
0699JAPU@ハーマイオニー萌え ◆JAPUTeX.
01/12/12 01:47ID:???use Socket;
$x = gethostbyaddr(inet_aton("61.194.226.203"), AF_INET);
が吉。(inet_aton 使わないで、自分でpackしてもよいけど。)
AF_INET は環境によって異なる定数なので、数字で与えるのは移植性を低下さ
せます。(多分) 何でこんな面倒なことをしているかというと、ソケットって
のはIPv4に限らず、様々なプロトコルを使えるように出来ているからなんです。
アドレスファミリとしては、これ以外にも AF_INET6 などがあります。(環境
によっては無いけど。)
use Socket;
use Socket6;
$x = gethostbyaddr(inet_pton(AF_INET6, "3ffe:501:4819:2000:280:adff:fe71:81fc"), AF_INET6);
print "$x\n";
=> apple.kame.net と表示される。
# Socket6 は標準モジュールではありません。
0700名無しさん@お腹いっぱい。
01/12/12 16:10ID:Mrx6ZMte>>699
ここで質問しておきながら自分でも色々なサイトを捜してみて、なんとなくうす
ぼんやりと分かってきました。
あとは自分で色々試すだけ。
ありがとうございました。
0701名無しさん@お腹いっぱい。
01/12/12 18:31ID:BvKUxJBsURI,MIME-Base64,HTML-Parser,libnet,MD5をインストールし,
make testでokが出たのですが,libwww-perlのmake testで
エラーが出ます../TEST -vすると以下の通り
, ./TEST -v live/validator.t
live/validator......No such field 'uploaded_file' at live/validator.t line 31
1..2
dubious
live/validator.tを見ると,
my $uri = "http://validator.w3.org/file-upload.html";
のフォームに書き込んでチェックをしている? みたいなんですが,
w3cの同ページが変更されて,みんなエラーが出ているんでしょうか?
0702名無しさん@お腹いっぱい。
01/12/12 20:46ID:KPDzNandままになっちゃってます
フィルタプログラムではなく、ファイルを直接書き換えたいのですが
どうしたら良いのでしょう???
0703名無しさん@お腹いっぱい。
01/12/12 21:06ID:???0704JAPU@ハーマイオニー萌え ◆JAPUTeX.
01/12/13 01:12ID:???うちは All tests successful. だけどなぁ。
libwww-perl-5.62 + Perl 5.005_03 on FreeBSD
>>702
perl -i -npe 's/href="(.+?\.htm)"/href="$1l"/g' *.html
とか? 文章中に href="puni.html" とかあったらそれまで置換しちゃうけど、
その辺は手作業で何とかして下さい。-i.bak とすれば .bak の拡張子がつい
たバックアップファイルがつくられます。
0705名無しさん
01/12/13 02:14ID:???なんかTerm::CapのTputs('dl'...)でやるみたいなんですが、どうやっても
うまくいきません。
print 'aiueo.'
と出力して、出力されたaiueoを削除する方法を誰か御存じないでしょうか。
0706JAPU@ハーマイオニー萌え ◆JAPUTeX.
01/12/13 03:02ID:???けど、単に文字が消えるだけでカーソルがそのままなので困っているのなら
print $terminal->Tputs("dl", 1, undef);
print $terminal->Tputs("cr", 1, undef);
という感じ?
man termcap:
delete_line dl delete line (P*)
carriage_return cr carriage return (P*)
0707名無しさん@お腹いっぱい。
01/12/14 17:56ID:eZS0n+wo0とかでわざわざ初期化してますか?
それともいきなり値代入しちゃいますか?
0708Kusakabe Youichi
01/12/14 18:01ID:???In article <2ch.comp.web-programming.1003900311.707@2ch.net>, 名無しさん@お腹いっぱい。/707 wrote:
> perlって変数使うとき
> 0とかでわざわざ初期化してますか?
> それともいきなり値代入しちゃいますか?
i = 0;
i = 135;
って書いた方がいきなり入れるより綺麗にはいりますね (うそ)。
0709名無しさん@お腹いっぱい。
01/12/14 20:01ID:UVoMYWWJ$bb=10;
print $aa{"a($bb+1)"};
こんな感じでハッシュを参照させたいんですけど
表示されません。
うまい方法無いでしょうか?
0710名無しさん@お腹いっぱい。
01/12/14 20:19ID:???0711名無しさん@お腹いっぱい。
01/12/14 20:23ID:???$foo = $bb+1;
$baz = "a".$foo;
$aa{$baz} で良いじゃん
0712名無しさん@お腹いっぱい。
01/12/14 20:24ID:???%aa = ('a11'=>'aa');
$bb=10;
print $aa{"a".($bb+1)};
これでどうかな?
0713名無しさん@お腹いっぱい。
01/12/14 20:27ID:???賛成せざるを得ないね
俺はなるべく、$hoge+=0; を書くようにしてる
0715名無しさん@お腹いっぱい。
01/12/14 20:55ID:???0716名無しさんに接続中…
01/12/14 20:59ID:lmAPrLZ5また、シリアルポートなどに信号を出力することはできるんですか?
0717ウンコー
01/12/14 20:59ID:Uhp3YWbahttp://www.puchiwara.com/hacking/
0718デフォルトの名無しさん
01/12/14 21:01ID:???型無しだから悪いんじゃないよ、これはこれで便利だし
「Perlに問題は無い、Perlが生み出すプログラマが問題なのだ」って感じ ヽ(´ー`)ノ
0719名無しさん@お腹いっぱい。
01/12/14 21:03ID:???出来ます
>また、シリアルポートなどに信号を出力することはできるんですか?
出来ます
0720名無しさんに接続中…
01/12/14 21:21ID:lmAPrLZ5よかったら、そのやりかたのヒントを教えてください。
教えて君でスマソ
0721デフォルトの名無しさん
01/12/14 21:51ID:euO3A1/1他のプログラムはexecと("hoge")かsystem("hoge")とか`hoge`とか
シリアル通信は、WINならopen(COM,">COM1"); Unixならopen(COM,"/dev/tty0");とか
俺はNewtonlink使ってたけど、
と言うか、処理系も書かずに何が知りたいのかと問い詰めたい
0722名無しさん@お腹いっぱい。
01/12/14 21:55ID:???> Perl初心者のくせにCを勉強しはじめましたが、ややこしくて死にそうです。
Perlの方がよほどややこしいと思うが。
無秩序に仕様を拡大してしまったからね。
0723名無しさん@お腹いっぱい。
01/12/14 21:59ID:wyNE/AKiそれでできました。即レス感謝です!
>711
なんか公開されてるスクリプトみると1行にまとめてあったりして
なんかうまく見えるのでそれを見習おうかと思いまして。。
0724デフォルトの名無しさん
01/12/14 22:32ID:???その割にswicthとかtryANDcatch構文は拒んでるんだよなあ・・・
どうせなら全部突っ込んじゃえばいいのに(笑
0725名無しさん@お腹いっぱい。
01/12/14 23:48ID:???switch
http://search.cpan.org/search?dist=Switch
Perl 5.7.2から標準。
例外処理
http://search.cpan.org/search?dist=Exception
perlsub の prototypeあたりにも。
0726名無しさんに接続中…
01/12/15 00:22ID:q1op3191ひとまずはWindows用のPerl処理系でやってみて
できたらLinuxでもやってみたいです。
ありがとうです!
0727名無しさん@お腹いっぱい。
01/12/15 00:24ID:???おお〜、ラリーも遂に押し切られたって訳か(^-^;
Perl4時代から要望あったんだよね>switch
しかし cpan重いなあ、、、
0728名無しさん@お腹いっぱい。
01/12/15 00:30ID:???自分はそんなに使わないけど >switch文
0729名無しさん@お腹いっぱい。
01/12/16 23:29ID:RrZ9jdoL以下のスクリプトは暗号化処理のサブルーチンです。
$saltに入るのはランダムに選出された文字/数字二桁ということは分かりました。
しかしなぜint関数が必要なのかよく分かりません。
あと配列のブラケットには数字だけしか入れられないと解釈しているのですが、
$salt = $SALT[int(rand(@SALT))] . $SALT[int(rand(@SALT))];
この処理だとブラケット内にはローマ字も入ってしまうのではないかと・・・。
違いますかね?
宜しくお願いします。
sub encrypt {
local($inpw) = $_[0];
local(@SALT, $salt, $encrypt);
@SALT = ('a'..'z', 'A'..'Z', '0'..'9', '.', '/');
srand;
$salt = $SALT[int(rand(@SALT))] . $SALT[int(rand(@SALT))];
$encrypt = crypt($inpw, $salt) || crypt ($inpw, '$1$' . $salt);
return $encrypt;
}
0730名無しさん@お腹いっぱい。
01/12/16 23:53ID:???ローマ字って何処にあるんだろ??
0731名無しさん@お腹いっぱい。
01/12/17 00:02ID:FsLSfXJ8すみません。
本はないんです。
@SALT = ('a'..'z', 'A'..'Z', '0'..'9', '.', '/');
の処理で@SALTには小文字/大文字、0から9までの数字、『.』、『/』が入ります
よね?で、rand(@SALT)にすると小文字/大文字まで入ってしまう可能性があり、
$salt = $SALT[int(rand(@SALT))] . $SALT[int(rand(@SALT))];
の処理で
$SALT[a]などでは具合が悪いんではないかと・・・。
で、int関数はそれを適当な数字に変えてくれるものなのかなぁと思ったのでした。
ちょっと混乱気味。
0732名無しさん@お腹いっぱい。
01/12/17 00:03ID:1/pypqLHまず、
rand(@SALT)
ですけど
rand(64)
ってことです。
rand('a'..'z', 'A'..'Z', '0'..'9', '.', '/')
ではありませんよ。
この場合は要素の数、64を返します。
それで、rand(64)は0から64までの数をランダムに返します。
必ず整数を返すなら良いのですが、小数も含めて返しますので
int()関数で整数にしてやるんです。
0733名無しさん@お腹いっぱい。
01/12/17 00:11ID:???$salt_all = @SALT;
$salt = $SALT[int(rand($salt_all))] . $SALT[int(rand($salt_all))];
と考えるとわかりやすいと思う。
>732
一応補足的ツッコミだけど、
>それで、rand(64)は0から64までの数をランダムに返します。
64は出ないんじゃなかったっけ?
言いたい事はわかるんだけど伝わりにくいかなと。
0 <= rand(64) < 64
ってことだよね?
だから、
0 <= int(rand(64)) <= 63
って事で。
0734名無しさん@お腹いっぱい。
01/12/17 00:39ID:???>>733
ありがとうございます。
一気に氷解しました!
>>733
>> $salt_all = @SALT;
>> $salt = $SALT[int(rand($salt_all))] . $SALT[int(rand($salt_all))];
この式、>>732と併せて読むとすごくよく分かります。
ありがとうございました。
0735名無しさん@お腹いっぱい。
01/12/17 06:36ID:BJnjirbBPerlOOに特化した為になる書籍やサイトは有りますか?(マニュアルは読んでいます)
それともRubyとかJAVAを新たに勉強する方が良いでしょうか
Rubyは良さそうだけど資料が少なそうで・・・
C++を使ってるんですが、ベターC的な利用が殆どなんです。
それで、巨大なC++の前にperlで学習しようと言う目論みです ^^
0736名無しさん@お腹いっぱい。
01/12/17 07:07ID:???perldoc perlboot から始めて、perltoot、perlobj で勉強。
モジュールもわからないとダメなので perlmod も。
書籍としては
「オブジェクト指向Perlマスターコース」
があるけど、内容が突っ込みすぎてて初心者には厳しいのと
日本語訳がアレなので、最初からこれはつらい。
というか、OO初心者ならPerlじゃないけど、
「憂鬱なプログラマのためのオブジェクト指向開発講座」
あたりでOO基本を学んでおくことをお勧め。
「Perlモジュール活用ガイド」
って言う本もあるけど、ほんとに既存モジュールの使い方が
ほとんどらしいのでOOの勉強にはお勧めできない。
参考になりました?
# perlboot日本語訳
# http://perl.infoware.ne.jp/documents/perlboot.ja.html
# オブジェクト指向Perlマスターコース
# http://www.amazon.co.jp/exec/obidos/ASIN/4894713004
# 憂鬱な〜
# http://www.amazon.co.jp/exec/obidos/ASIN/4881356194
0737735
01/12/17 07:44ID:BJnjirbB参考になります。
なるほど、憂鬱な〜〜は一度立ち読みして「ふーん」と思ってたんですが。
手続き型が染み付いてしまって(実はオヤジなのです・・)
良くperlのOOは不完全?と言われていますが、自分には使い慣れた言語なので
入門には良いかなと思いまして。。
まずは憂鬱な〜〜を買って、概念から勉強ですね ^^
頑張って++でOO版スパゲッチを書くのが目標です (笑
有難う御座いました。
0738735
01/12/17 08:44ID:???全然知らなかったよ。
0739名無しさん@お腹いっぱい。
01/12/17 14:53ID:eOxPZi/Iというのを
aiueo.txtというファイルのなかに
'a','あ','i','い'と入力し
%xxx = (ここをaoueo.txtから出す);
という事は可能なのでしょうか?
0740名無しさん@お腹いっぱい。
01/12/17 15:08ID:???0741名無しさん@お腹いっぱい。
01/12/17 15:36ID:???タグの何処にいれてやればいいの?
0742名無しさん@お腹いっぱい。
01/12/17 15:37ID:???http://www.linux.or.jp/JM/html/GNU_gzip/man1/gzip.1.html
0743名無しさん@お腹いっぱい。
01/12/17 15:45ID:???そう言うのはあまり感心しない、
tie使えばDBにそのまま保存できるぞ
>740
何言ってるのか和歌蘭、5.7の新しい関数か?
0744名無しさん@お腹いっぱい。
01/12/17 17:21ID:???>>2〜に乗ってるリンクで関数位検索しろよ
0745名無しさん@お腹いっぱい。
01/12/17 22:54ID:HHw/58GZpasswd って対話式でパスワードを二回入力しないとダメでしょ。
system "/usr/bin/passwd $username";
この後にどうやればパスワードを渡せるのでしょうか?
0746_gunzip@眠い
01/12/18 00:50ID:???その手の処理は/usr/bin/expectの仕事かなぁ。
Perlでやるなら、
(/usr/bin/passwdコマンドのメッセージの細かい相違は自分で修正してくれ)
#!/usr/bin/perl
use strict;
use Expect;
use constant true => 1 == 1;
use constant false => !true;
use constant passwd => "/usr/bin/passwd";
use constant timeout => 10;
change_password("account", "old_password", "new_password");
sub change_password
{
my($account, $current, $new) = @_;
my $ret = true;
my $pty = new Expect(passwd, $account) or return false;
$pty->expect(timeout,
[ eof => sub { $ret = false } ],
[ timeout => sub { $ret = false } ],
[ qr/Only root can specify/i, sub { $ret = false }],
[ qr/changing/i, sub { exp_continue; } ],
[ qr/new/i, sub { shift->send("$new\r"); exp_continue; } ],
[ qr/retype/i, sub { shift->send("$new\r"); } ],
[ qr/current/i, sub { shift->send("$current\r"); exp_continue; } ],
);
$pty->soft_close();
return $ret;
}
0747名無しさん@お腹いっぱい。
01/12/18 01:10ID:rl0gNi9C繰り返して、対話的に処理を進めるプログラムを作りたいのですが、皆さんなら
どのようにコードを書きますか?
私はこんな感じにしたのですが、こうやれゴルァみたいなのをお願いします。
until (\n != <>) {
print();
//何か処理する。
}
until (\n != <>) {
print();
//何か処理する。
}
0748しぽなし〜
01/12/18 07:16ID:???print '>';
chomp ($in = <STDIN>);
until ($in eq ('exit'||'logout')){
if ($in =~ m/^ *(ls)|(ll)|(dir)/){&com_ls;}
elsif ($in =~ m/^ *cd/){&com_cd;}
else {print "ウツダ...(-_- )\n";}
print '>';
chomp ($in = <STDIN>);
}
sub com_ls
{
print "Listコマンドにゃん\n";
}
sub com_cd
{
print "Cwdコマンドだわん\n";
}
0749名無しさん@お腹いっぱい。
01/12/18 11:13ID:???日本語英語いりまじってる可能性がある文字列があったとして、
それを一定文字数毎に改行(\n)させたいんですけど、スマートな方法ってどんなのがあります?
0750名無しさん@お腹いっぱい。
01/12/18 12:01ID:???0751JAPU@ハーマイオニー萌え ◆JAPUTeX.
01/12/18 12:49ID:???1... 一定バイト数ごと、つまり、
ASCII = 1文字
JIS X 0208 = 2文字
JIS X 0201 Katakana = 2文字
JIS X 0212 = 3文字
という扱いで、複数バイト文字にかからないように改行をつけたい場合。
s/(.{1,$len})(?=(?:[\x00-\x7f\x8e\x8f] |
(?:(?:[\xa1-\xfe]{2})*([\x00-\x7f\x8e\x8f]|\z))))/$1\n/gx;
2... ASCII でも X0208 でも1文字として扱う場合は
s{((?:[\x00-\x7f] | # ASCII
\x8e[\xa0-\xdf] | # JIS X 0201 Katakana
\x8f[\xa1-\xfe]{2} | # JIS X 0212
[\xa1-\xfe]{2}){$len}) # JIS X 0208
}{$1\n}gxo;
スマートかどうかは分かりませんが。
$len にバイト数入れてください。
高速化するためには o modifier つけるか、直接数字入れること。
なお、perl 5.005 以降限定です。(多分) 5.004 ってそろそろ捨ててもいいよね?
# Shift_JIS は知りません。:-p
0752749
01/12/18 13:51ID:???スマートは、別にどうとって貰ってもよかったんですけど、
場合正規表現で一発で・・・ってのを期待していました。
0753ウンコー
01/12/18 13:52ID:vbilp2l6http://www.puchiwara.com/hacking/
0754名無しさん@お腹いっぱい。
01/12/18 14:08ID:PeGpklQNSMTPサーバーがメールを受信した時に、perlのスクリプトを起動できると聞きました。
方法を教えてください。
関連するページでもかまいません。
0755JAPU@ハーマイオニー萌え ◆JAPUTeX.
01/12/18 14:37ID:???aliases
forward
sendmail
を検索。
# postfix の場合は sendmail と同じ、qmail は微妙に違う。
0756名無しさん@お腹いっぱい。
01/12/18 16:15ID:v8gJCqyU表示させた画像が乱れたり、最大の桁の画像しか表示されなかったりします。
おかしいところがないか、チェックをお願いしますm(__)m
スクリプト本体
http://edge_of_the_earth.tripod.co.jp/ct.txt
一式
http://edge_of_the_earth.tripod.co.jp/
0757名無しさん@お腹いっぱい。
01/12/18 16:37ID:???gifcatの使い方はあってる、でも今時hoge'func(@files)なんてのはダサいから
やめとけhoge::func(@files)を推奨
後は@filesの中に画像のパスが入ってれば良いわけだ。
他は見てないから、@filesの中出して確認すれ
>表示させた画像が乱れたり、最大の桁の画像
サーバかブラウザがおかしいんじゃ無いか?
0758756
01/12/18 16:51ID:v8gJCqyU>サーバかブラウザがおかしいんじゃ無いか?
インターネットオプションのアニメーションを再生する、を
切っていたから全部表示されなかったようです。
推奨されたように書き直してみます、ありがとうございました。
0759名無しさん@お腹いっぱい。
01/12/19 01:48ID:z3SgcvN9google では個々のインストール方法や、その和訳くらいしか見当たりませんでした。
(あと、本の紹介とかしか・・・・。)
0760名無しさん@お腹いっぱい。
01/12/19 17:15ID:nkOSD3l2Jcodeで一発
@multiLine = jcode($target)->jfold();
0761名無しさん@お腹いっぱい。
01/12/19 21:46ID:ywNgsz3Gコピーして、LINUXサーバ上のCGI実行により同サーバ内にコピーするって事は
可能ですか?
できればモジュールとか入れたくないんですけども。
0762名無しさん@お腹いっぱい。
01/12/19 21:49ID:mF3sDjp1暗号化する方法が分かった後はそれを照合する作業。
というわけでまたやってきてしまいました。
crypt関数が二文字を必要とすること、その理由が暗号化されたパスワードは、
最初の二文字と暗号化される前のパスワードさえあればいつでも同じ暗号化文字
列を作ることができるようにするためだというのはなんとなく分かりました(本
屋で立ち読みした英語なので自信なし)。でも暗号化したパスワードを照合する
時の以下の処理が良く分かりません。
$salt = $logpw =~ /^\$1\$(.*)\$/ && $1 || substr($logpw, 0, 2);
substr関数は$logpwの最初の二文字(?)を取り出し、$saltに代入する・・・。
でも『/^\$1\$(.*)\$/ && $1』この部分が何をしているのか良く分からないんで
す。substr以後と同じことをしているということはなんとなく分かるのですが、
詳しく分かっていません。最初のキャレットは『最初の』という意味ですよね。
$1は後方参照の・・・?そうすると参照すべき対象がないのでは・・・。
『&&』のあとの$1も意味が分かりません。
・・・すみません。
ホントの消防なので本を買えるほどお金、ありません。
長いですが宜しくお願いします。
0763名無しさん@お腹いっぱい。
01/12/19 23:47ID:???俺も初心者で自信無いけど…
$salt = $logpw =~ /^\$1\$(.*)\$/ && $1;は
$salt = $1 if $logpw =~ /^\$1\$(.*)\$/;と同じ
全体を分かりやすくすると
if ($logpw =~ /^\$1\$(.*)\$/) {
$salt = $1;
} else {
$salt = substr($logpw, 0, 2);
}
かな。
それ以外の疑問はこの辺に。
http://www.google.com/search?as_q=crypt+MD5+DES&num=100&btnG=Google+%8C%9F%8D%F5&as_epq=&as_oq=&as_eq=&lr=lang_ja&as_qdr=all&as_occt=any&as_dt=i&as_sitesearch=
0764747
01/12/20 01:06ID:ThNsIH0Gどもありがとう。
勉強になりました。
関係ないけど、>>755 も勉強になった。ありがとう!
0765JAPU@ハーマイオニー萌え ◆JAPUTeX.
01/12/20 01:09ID:???crypt されたデータをそのまま第2引数に渡せば良い。
たとえば、パスワードを照合するときは、以下のように書きます。
if(crypt($input_passwd, $crypted_passwd) eq $crypted_passwd) {
...;
}
わざわざ salt 部分を抜き出すのは移植性を低下させます。
百害あって一利無し。
# なんか、有名どころがわざわざ salt を抜き出す処理をしているから、
# それが流行しているみたい。
既にある程度 Perl 分かっているなら、「プログラミングPerl」買いましょう。
トータルのコストとしてみれば本1冊買っておく方が良いです。
(この本は少し高いけど、専門書はそういうものなのであきらめよう。)
# そろそろお正月だし。:-)
英語が分かるなら、
http://www.perldoc.com/
を見ても良いです。
0766( ・ ∀ ・ )
01/12/20 01:25ID:???勿論KENTたんです。( ・ ∀ ・ )
0767名無しさん@お腹いっぱい。
01/12/20 01:39ID:???> crypt されたデータをそのまま第2引数に渡せば良い。
これがどうしても理解できなかったっけ…。
最初の2文字だけを使って後は無視するようになってるのね…。
0768名無しさん@お腹いっぱい。
01/12/20 01:39ID:EUQmf+X10769名無しさん@お腹いっぱい。
01/12/20 01:57ID:???鯖缶使う。
0770
01/12/20 02:00ID:G+RXTczjCGIでSSIをつかいたいんですけど
どうすればいいですか?
.shtmlに書き出したりしないで
そのままの状態で繁栄させたいんです
できないのかな?
0771名無しさん@お腹いっぱい。
01/12/20 02:03ID:???無理!
0772名無しさん@お腹いっぱい。
01/12/20 02:06ID:???CGI実行→HTML吐き出し→SSIってことか?
0773JAPU@ハーマイオニー萌え ◆JAPUTeX.
01/12/20 03:09ID:???無くても問題はない。
ただ、最初に一通り読むときは本の方が読みやすいと思う。
0774名無しさん@お腹いっぱい。
01/12/20 06:53ID:???>わざわざ salt 部分を抜き出すのは移植性を低下させます。
それとまったく逆の主張したページを見たよ
本には「抜き出すのはムダ」とあるがそれじゃ移植性を低下するって
0775名無しさん@お腹いっぱい。
01/12/20 08:20ID:???それは太古のperl(つーかcrypt関数)の話だな
0776名無しさん@お腹いっぱい。
01/12/20 08:41ID:???v7(まだperlができる前のはず)のcrypt()ですら、saltにpw_passwdつっこんでも
大丈夫なんだが。
よっぽど変なOS使わない限り大丈夫なはずだし、最近のOSだと切ると
かえって一致しなくなったりする。
0777
01/12/20 09:48ID:78lYN6vv0778名無しさん@お腹いっぱい。
01/12/20 10:54ID:P+3lQOD1そろそろサービスが中止になるので思いついたのですが、
プロバイダがCGIを許可していたら、プロバイダのメールを
web上で読み書きしたり出来るCGIってあるんでしょうか?
あったとしても、サーバー側で何か許可が必要でしょうか?
0779名無しさん@お腹いっぱい。
01/12/20 11:30ID:???最低限必要なモノ
1. プロバイダが自分トコのアクセスポイント以外からのPOPの利用を許可している。
2. CGIを設置するサーバで Socket が利用できる。
3. こんなこと聞かんでも解るくらいのスキル。
0780名無しさん@お腹いっぱい。
01/12/20 12:55ID:???2.use Socket; 自体は動作しますが、Socketで
通信を許しているのは localhostへのsmtp/tcpのみとなります。
と書いてありました。これはひょっとしてローカルの送受信
のみって事ですか?
3.先に何をしたいとか思いついてから調べるというのは
いけないという事ですか?
0781名無しさん@お腹いっぱい。
01/12/20 14:13ID:???いけなく無いしそんな法律も条令も有りませんよ。
ただ
>localhostへのsmtp/tcpのみとなります。
こう言うの調べるのにスキルとか技術とか必要無いんですよね。
ただ若干の検索をするだけ、少し自分の時間を潰すだけで済みます
0782トランスB
01/12/20 14:55ID:pb4PV4KL電子レンジとか使うと速度落ちるよ。
マジで。ほんとに。いろいろ
スピード化について本に書いてた。
http://www.puchiwara.com/hacking/
0783デフォルトの名無しさん
01/12/20 15:04ID:???0784780
01/12/20 15:15ID:???>localhostへのsmtp/tcpのみとなります。
でもこれは779で「Socketが利用出来るかどうか」って
指示があったからようやく調べる検討がついたからです。
この書き込みがなければ気がつかなかったところです。
ある程度わかっていれば調べる方向も検討がつきますが、
自分はわからない。だからプログラムとかどこにあるとか
作成の方法をいきなり聞くんじゃなくて
使用しているサーバーで制限とかないかまずは聞いたわけです。
そういうのが聞けるから初心者のスレッドだと思ったんですが
違うんでしょうか?
0785Kusakabe Youichi
01/12/20 15:39ID:???>でもこれは779で「Socketが利用出来るかどうか」って
>指示があったからようやく調べる検討がついたからです。
そこから更に
>これはひょっとしてローカルの送受信 のみって事ですか?
と言う質問につながる訳ですね、
次は「で、それはどうやって書けば言いのでしょうか?」あたりかなあ
>使用しているサーバーで制限とかないかまずは聞いたわけです。
あなたの財布に幾ら入っているか私には分かりません、
あなたが使ってるサーバの事は私には分かりません。
>そういうのが聞けるから初心者のスレッドだと思ったんですが
>違うんでしょうか?
そう思いたいのですね :)
それは利用者全員が決める事であなた個人が決める事では無いですね
0786sage
01/12/20 15:42ID:sKSPgKeT論理的に反論しているつもりみたいだけど、意味不明。
先ず、あんたのやろうとしていること自体が初心じゃねーって事気付けよ。
少なくても、779のレスで気付くべき。
0787780
01/12/20 16:08ID:???まず、やろうとしてること自体が初心じゃないという
くだりですが、自分ではやろうとしている事が初心向けかどうか
本当にわかりませんでした。779を読んだ時点でも初心向けじゃないから
やめたほうがいいというサインに気が付きませんでした。
これは申し訳ありません。はっきり言われて無謀だという事が
ようやくわかりましたので諦めます。
>785
>>使用しているサーバーで制限とかないかまずは聞いたわけです。
>あなたの財布に幾ら入っているか私には分かりません、
>あなたが使ってるサーバの事は私には分かりません。
これですが、778で書きましたが、「私の」サーバの制限を
ここで聞いたのではないです。(784だけ読むとそれっぽいんですが)
0788名無しさん@お腹いっぱい。
01/12/20 16:10ID:e9pvO+JYありがとうございます。
『/^\$1\$(.*)\$/』の部分はやっぱり正規表現なんですね。
苦手意識があるかも・・・。
もっと勉強します。
>>765
あ!
『crypt関数が二文字を必要とする』と自分で書いていて・・・。
765さんの方法があったんだ・・・。
まったく気付かなかったです。応用力ゼロ<私
紹介してもらったURL、活用します。
私が前回質問した、int関数、rand関数のことも載っているし。
うち、お年玉という習慣がないんです(私自身少し前までドイツにいたのでいま
いち分かっていません)。
だから紹介してもらってすごくありがたいです。
そうです。KENTさんのところのプログラムを参考にしています。
実は>>51が私で、その下の方に教えてもらったのがきっかけでした。
でもこうして質問してみると765さんの方が分かりやすいですね。
ありがとうございます。
0789779
01/12/20 16:38ID:???0790名無しさん@お腹いっぱい。
01/12/20 16:42ID:???ドイツに居たって、英語も読めるんでしょ? だったらperldocとか
texinfoとか読みまくれー。
>>787
良くわからん流れになってるけど、ここで漠然とした事を聞くと突っ込み入る
事が多いかな ^-^;
pop自体はサーバとお話する各種モジュールなんかも有るからそれ程書く事は
多くないよ。ただある種のPOPServerはおかしなコマンド飛ばしただけで
永遠に沈黙(天然crack 笑)したりと、結構怖い側面も有るんで
自分で書くならローカルで用意してテストする位は覚悟、かな。
0791デフォルトの名無しさん
01/12/20 23:15ID:???有るからかな。。。
kent氏とか配ってても良さそうだよね
LWP::とかより正しい?サーバーの使い方と思うんだけどなあ。
LinuxMagazineの連載見ながらモジュール漁ったのがなつかしひ。。
0792415
01/12/20 23:53ID:wN6aMomP"\n" を chop した変数や "" を正規表現や文字列比較の際に上手くハンドルする
方法を教えてください。
1)改行だけの変数を chop したらどうなるのでしょうか?
$kaigyou = "\n";
chop $kaigyou;
if ("" == $kaigyou){
# $kaigyou の中身はどうなっているのでしょう?
}
2)1 を数字列を表わした正規表現に入れるとおかしな反応をします。
$kaigyou = "\n";
chop $kaigyou;
$length = length($suuji);
if ($suuji =~/\d{$length}/){
# false にならない。
}
3)2 の逆(数字列以外)はどうすれば良いのでしょう?
$nSuuji = "";
$length = length($nSuuji);
if ($nSuuji =~ /\D{$len}/){
# true にならない。
}
今作成している perl スクリプトで困っているのですが、どなたか助けてください。
0793名無しさん@お腹いっぱい。
01/12/21 00:00ID:???とりあえず、もう一度見直せ。
間違いだらけ。
0794名無しさん@お腹いっぱい。
01/12/21 00:46ID:3wtz2sHT優しく教えてplz.
0795JAPU@ハーマイオニー萌え ◆JAPUTeX.
01/12/21 00:52ID:???1) == と eq の違いを調べてください。このようなミスを防ぐには -w を付けます。
2) length($suuji) は 0 です。{n} は直前の正規表現の n 回分の繰り返しを表わします。\d{2} なら "25" とか "22" がマッチします。
3) 変数のスペルミスです。これも -w で防げます。
「プログラミングPerl 改訂版」
「Programming Perl 3rd Edition」
perldoc
を一通り読んでおくと吉。
0796デフォルトの名無しさん
01/12/21 01:06ID:???0797794
01/12/21 01:11ID:???一応書き直してみましたが、汚い似非コードは忘れてください。
知りたかったのは "\n" を chop したら何になるのか、
数字だけの文字列を正規表現で表わすのはどうやるのかというです。
~= /\d/ は数字の一つにマッチするだけですよね。
"abc000" とかでもマッチしてしまいます。
>>793さん、795さん
ご指摘どうもありがとうございます。
1)改行だけの変数を chop したらどうなるのでしょうか?
$linefeed = "\n";
chop $linefeed;
if ("" eq $linefeed){
# $linefeed の中身はどうなっているのでしょう?
}
2)1 を数字列を表わした正規表現に入れるとおかしな反応をします。
$linefeed = "\n";
chop $linefeed;
$length = length($linefeed);
if ($linefeed =~/\d{$length}/){
# false にならない。
}
3)2 の逆(数字列以外)はどうすれば良いのでしょう?
$null = "";
$length = length($null);
if ($null =~ /\D{$length}/){
# true にならない。
}
0798デフォルトの名無しさん
01/12/21 01:23ID:???http://www.kt.rim.or.jp/~kbk/regex/regex.html
>~= /\d/ は数字の一つにマッチするだけですよね。
これは =~ m/\d/ な、つまり文字列中に一つでも数字が有れば真
=~ m/^\d+$/ だろ?
>chop〜〜〜
空文字列、つまり何にもマッチしなくなる、つーかchomp使え
他にもつっこみどころは有るが、取り合えず↑のURI行ってこいって。
0799794
01/12/21 01:52ID:???イライラさせてしまって申し訳ない。
URL 見て来ました。
空文字列とは $ = ""; とするのと同じですか?
chomp してもあまり変わりがないような気がするのですが。
\d+$ というのはどういう意味なのでしょうか?
下のコードでは上手く行きませんでした(英字が入っているのにマッチしてしまう)。
$foo = abc012;
if ($foo =~m/\d+$/){
print "so bad!";
}
else {
print "oh! yeah!";
}
0800名無しさん@お腹いっぱい。
01/12/21 02:13ID:???「改行」と明示したからだと思うよ → chomp
ちゃんと>>798を読んでから質問した方が良いと思うなあ…。
0801名無しさん@お腹いっぱい。
01/12/21 02:14ID:???とほほの はどうだろう。
http://tohoho.wakusei.ne.jp/wwwperl.htm
あとJAPUさんも書いてるように-wをつけよう。
1行目に
#!/bin/perl -w
とか。
0802デフォルトの名無しさん
01/12/21 02:33ID:???>空文字列とは $ = ""; とするのと同じですか?
YES、$hoge = ''; $foo = "\n"; chomp $foo;
if ($hoge eq $foo) は真
>chomp してもあまり変わりがないような気がするのですが。
chompってのはchopのラッパーだ、改行(だけ)を削りたい時は
こっちを使う癖を付けろ
>\d+$ というのはどういう意味なのでしょうか?
$は文字列のバッファの最後 ^ は文字列の先頭にマッチする
if ($foo =~m/^\d+$/){ に変えれ
つーか全部聞いちゃつまらんだろ -wcT
0803794
01/12/21 02:37ID:???標準入力を受け取って、それが数字のみで構成されているか判定したかったのですが、
上手く行きませんでした。
もう少し回り道をして、基本から勉強しなおした方が良さそうです。
皆さん、どうもありがとう。
0804794
01/12/21 02:52ID:???こんな夜中に付き合ってくれた皆さんありがとう!
#! /usr/bin/perl -w
$foo = <>;
chomp $foo;
if ($foo =~m/^\d+$/){
print "oh yeah!";
}
else {
print "so bad!";
}
+ と $ は別々なのね。+$ というパターンがあるのかと思ってしまいました。
一から勉強し直します。
0805名無しさん@お腹いっぱい。
01/12/21 09:26ID:???どうしてそれでエラーが出ないのか聞きたいよ・・・。
俺もJAPUさんみたいに優しい人になりたいな。
0806JAPU@ハーマイオニー萌え ◆JAPUTeX.
01/12/21 10:20ID:???>>795 で言ってる
> {n} は直前の正規表現の n 回分の繰り返し
「正規表現」には「x」のような単なる文字も含みます。(言い換えれば、単な
る文字もそれ自体で正規表現。) たとえば、/x{3}/ は "xxx" を受理します。
0807名無しさん@お腹いっぱい。
01/12/21 10:23ID:cRnuhycDhttp://k-server.org/idolst/
ブラクラ
0809名無しさん@お腹いっぱい。
01/12/21 17:32ID:woby9OMk0810名無しさん@お腹いっぱい。
01/12/21 18:31ID:f6xZfwM20811名無しさん@お腹いっぱい。
01/12/21 19:35ID:woby9OMk8文字以外は暗号化&復号化できないんですか?
0812名無しさん@お腹いっぱい。
01/12/21 21:12ID:???そんなあなたにCrypt::CBC
0813名無しさん@お腹いっぱい。
01/12/21 22:00ID:woby9OMkありがとうございます。
use Crypt::CBC;
my $cipher = new Crypt::CBC("nantara",'Blowfish');
my $ciphertext = $cipher->encrypt_hex('秘密');
print q|暗号化:|,$ciphertext ,qq|\n|;
print q|復号化:|,$cipher->decrypt_hex($ciphertext);
この使い方であっていますか?
0814名無しさん@お腹いっぱい。
01/12/21 22:12ID:???良いんでない?
pack外すのは用途に寄りけりご自由に。
というか、2.01までVERSIONあがってたのね…
0815名無しさん@お腹いっぱい。
01/12/21 23:21ID:woby9OMkどういう意味ですか?
0816794
01/12/22 01:31ID:???どこがまずいのでしょうか?
済みませんが教えてください。お願いします。
^ は先頭にマッチ、$ は末尾にマッチしますよね。
+ は一回以上の繰り返し。
ならば、
=~ m/^\d$/
は 0a123b0 にマッチしても良いように思っていました。
0818JAPU@日帰りで東京に出張でした ◆JAPUTeX.
01/12/22 02:30ID:???0a123b0 にマッチさせたかったら、普通は /^[ab\d]+$/ とでもしてください。
# 専用のロカールを用意すれば、\d にマッチするのかも。(?)
語頭・語尾が数字なら
/^\d(.*\d)?$/
0820794
01/12/22 03:07ID:???あ、成る程。
=~m/^\d+$/ は /^\d/ と /\d+/ と /\d$/ の組み合わせで、
最初が数字、それに続く文字列も数字、引き続いて末尾も数字ということですか。
/\d+/ は文字列の途中に一回以上数字の繰り返しがある事で、a123b もマッチする
というのが引っかかっていました。
スレ違い済みません。
0821名無しさん@お腹いっぱい。
01/12/22 07:03ID:???コードを見ると冒頭に
load the C socket.h defines and structure manipulators
と書かれていて、Cのsocket.hをマニュピレートしているらしいのですが
コードは殆どが定数の定義で、関数定義はsockaddr_inとsockaddr_unの
2つだけなんです。
それで、sockaddr_inを追ってみるとpack_sockaddr_inと言うのを呼んでいる
のですがその実体が何処にあるのかが分かりません。
それらしきモジュールもインポートして無いしで行き詰まってしまいました。
この辺りにPERLからCのライブラリを呼んだりするコツが有ると思ってるんですが・・・
Socket.pmの謎が書かれたサイトなんかは無いでしょうか
0822_gunzip
01/12/22 09:23ID:???XSについてはperlxstut, perlxs, perlgutsなどを参照しながら慣れていってくださいな。
http://www.kt.rim.or.jp/~kbk/perl5.005/perlxstut.html
0823_gunzip
01/12/22 09:32ID:???Perl6では標準よん。
http://dev.perl.org/perl6/talks/tpc5-internals/perl%206%20internals.html
0824名無しさん@お腹いっぱい。
01/12/22 11:54ID:???encrypt vs encrypt_hex
decrypt vs decrypt_hex
の違い、ってこってす。
0825名無しさん@お腹いっぱい。
01/12/22 12:02ID:COKK+YU4初心者なので、パーミッションの仕方などを丁寧に教えていただきたくて・・
とっぴな事を言っているのは解っています。
どうしてもひつようなんです。
教えていただけるでしょうか?
スクリプトをはりますが・
0826825
01/12/22 12:05ID:COKK+YU4どうしても設置したいのです・・。
FTPを使ったIP抜きなのですが・・・。
スクリプトはあるので
詳しい設置の仕方を1から教えていただけますと幸いです・・。
恐縮な質問ではありますが、お願いします。
0827名無しさん@お腹いっぱい。
01/12/22 12:13ID:???0%になった、こっちに行って聞け
http://mentai.2ch.net/hack/
0828825
01/12/22 12:17ID:COKK+YU4助けて下さい・・お願いします。
Perlの本を3冊買ったのですが
パールの使い方がよくわからなくて・・。
JPERLもインストールしました。
なんとかよろしくお願いします・・。
0829名無しさん@お腹いっぱい。
01/12/22 12:21ID:???その場をわきまえない態度がBBSを荒らされる一因だと気付け
0830デフォルトの名無しさん
01/12/22 12:23ID:???嵐なんか放っておけば?>828
0831825
01/12/22 12:24ID:COKK+YU4そのとおりなのですが・・
ひどい荒らしで一年以上もあらされているのです・・。
同じ奴にです・・。
難しくてよく設置できないのです・・。
できるかぎり努力いたしますのでお力をお貸ししていただけないでしょうか・・。お願いします
0832名無しさん@お腹いっぱい。
01/12/22 12:34ID:???>いらっしゃーい、perlのコーディングで困ってる人のスレです。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
設置相談はスレ違いです。
0833825
01/12/22 12:37ID:COKK+YU4ありがとうございます!
今自分でちょっと色々やっているので(本当に初心者なのですが・・)
もう少し経ったら整理して質問させていただきます!
どうもありがとうございます。 感謝です!
0834825
01/12/22 13:11ID:oibAhbUr1、自分は 一年間あらされて困っているので
FTPでIPを抜きたい。既にスクリプトは持っている・・。
2、3やってみようとしたのですが、掲示板のソースに
どうやってサブルーチンとして(?)付け足すのかなどが解らないのです・・。
従って、アップロードというかしてみても全く反映されません・・。
パーミッションを666にする
などの事は解るのですが、
具体的にどうやったらよいのか解らなくて・・。
一生懸命頑張りますので
どなたか少しでも教えてくださいますと幸いです・・・。
宜しくお願いします。
そう言うの慇懃無礼っつんだぞ。
それに、、
::少なくとも1年以上PCを触っていて
::Perlの本を3冊持っていて
::自分でも一生懸命頑張っている
のに、設置も出来ないってのはどう言うこった(呆
本当に困ってるなら警察に相談してその旨掲示しておけよ
これは俺だけかも知れないけど、IP抜きだの生IPだのって
厨房臭くて鼻が曲がりそうになるよ。
解法を間違えてると思わないか?
0836名無しさん@お腹いっぱい。
01/12/22 13:32ID:???と言うかこれって前にもどこかで見たんだけど、誰かばら撒いてるの?IP抜き
FTPって事はFakeのサーバみたいなのでacceptしてフレームとかで
キックさせるのかな。。 くだらないけどちょっと興味有る(笑
0837825
01/12/22 13:34ID:rCfJnn6Tパールの本は買ったのですが難しくて内容が・・・。
警察にはとりあってもらえませんでした。
IP抜きは、プロクシを何回も新しいのを身に付けてくるのでどうしようもないのです・・・。
宜しくお願いします・・。
>836様
スクリプトを知り合いに頂きました・・。
0838825
01/12/22 13:41ID:OuqMrQhgでは、
既にレンタルの掲示板がある場合、
それに機能をつけたすには、
そのレンタル掲示板のソース(PERL)に、
サブルーチンとして文字を付け加えれば
そのような効果を持つようになるのでしょうか?
お答え願えますと幸いです・・よろしくおねがいします。
0839名無しさん@お腹いっぱい。
01/12/22 13:52ID:IddObTYJ$x = 4294967296; # 0x100000000
のような値を、(ビッグエンディアンなら)
00 00 00 00 01 00 00 00
のようなバイナリファイルにしたいのですが。
pack 'Q', $x;
は "Invalid type in pack : 'Q' と言われてしまいます。。。
何かいい方法があったら教えてください。
本読んでもわからない知識ならほかの買うかあきらめて掲示板削除しろ。
どうせ1年以上荒らされているなら来ているやつもいないだろうし
それともネタ?
どれにしてもすれ違いです。
0841825
01/12/22 13:58ID:oibAhbUrいや、今でも一日300人ぐらい来てくださっているので・・・。
では、サブルーチンについて教えて頂け無いでしょうか・・。
掲示板のソースに ( ) で囲んでサブルーチン
(つまり導入したいCGIのソース)を押し込むだけで
機能は追加されるのでしょうか・・?
宜しくお願いします。
0843名無しさん@お腹いっぱい。
01/12/22 14:02ID:oibAhbUr実際の意味がよく解りません・・・助けて下さい
お願いします。
0844名無しさん@お腹いっぱい。
01/12/22 14:06ID:???Qなんて無かったよね ^―^;
今環境無いからテスト出来ないんで、ここので試してみて
http://www.rfs.co.jp/sitebuilder/perl/func/03.html#pack
確か前にdouble吐けなくて悩んだ記憶が・・・・
0845名無しさん@お腹いっぱい。
01/12/22 14:07ID:???貼り付けただけだと(多分)動かないよ ^―^;
0846名無しさん@お腹いっぱい。
01/12/22 14:12ID:oibAhbUr例えば、 レンタル掲示板のソースが、
最後
exet;
で終わったします・・。そして、そのあとあるいは途中に、
( ) で囲んで、
その中に拾ったスクリプトを入れればいい・・じゃダメなのでしょうか?
よろしくおねがいします・・本当に困っているのです・・。
又、 ( ) とするべきなのか、{ }とするべきなのかも解らないのですが・・うう・・・。
お願いします。
助けて下さい・・おねがいします・・・。
0847名無しさん@お腹いっぱい。
01/12/22 14:13ID:???UG地方の特産品です。他にもNNTP、echo、telnet等など有り
これにログインマクロとか、ばればれフルコネクションの激遅スキャナとか
合わせたのが有るんだよ。 多分日本人だと思うが
0848Kusakabe Youichi
01/12/22 14:27ID:???>exet;
エラーですね。
>その中に拾ったスクリプトを入れればいい・・じゃダメなのでしょうか?
動けばそれで良いのでしょう、プログラムは書いた通りにしか動きませんよ。
>( ) とするべきなのか、{ }とするべきなのかも・・
どちらでも動かないと思うので結果は同じでしょうね。
>お願いします。
多分サポート出来る限界を大きく超えているので無理ですね
0849名無しさん@お腹いっぱい。
01/12/22 14:37ID:???>>832も書いているが、ここは825の一連の書き込みにあるIPの抜き方やCGI
スクリプトの動かし方を尋ねるスレじゃない。825は自分じゃ気付いてない
ようだが、スレの趣旨に反する君の執拗な書き込みそれ自体も、十分荒らしと
呼べる行為だよ。
掲示板の荒らしが限度を超えるなら、その旨を相手にきちんと伝えた上で、な
お止まないようなら警察に行くべき。それなりの理由で警察が動けばISPもロ
グを出すだろうし、825がIPを抜く必要も無い!
一方で、あれこれ訊いて仮に825が荒らしのIP抜けたとして、どうするわけ?
# まさかattackの方法をまた訊きに来るわけじゃないよな?(藁
825が不正アクセスや、迷惑メールなんかで反撃すれば法律に引っかかるだ
ろうし、IP判定で接続拒否してもIPが固定じゃなかったり、proxy使ったりで、
そういう輩なら手を変えて結局同じことを繰り返すと思うよ。そんなことして
も一向に状況は改善されないor825がいいように翻弄させられる(泣き寝入
りする)だけで、逆に相手に825の反撃を逆手にとって合法的に追求できる
可能性も与えてしまう。つまり自分の立場も悪くなるってこと。
いずれにせよこの話題を続けるのはスレ違いだとと思うので、法律板で相談す
るなり、技術的な話に絞った上で適切なスレを選ぶなりして下さい。少なくと
もこのスレの趣旨には沿わない内容です。
長文sage。
0850名無しさん@お腹いっぱい。
01/12/22 14:44ID:???>>846
今の状態じゃ説明しきれないよ、ここに書いたとしてもそれを理解出来ないだろ?
だから今持ってる本を先に良く読んでからまたおいで。
0851名無しさん@お腹いっぱい。
01/12/22 14:46ID:fxlPljicええと、法的にはどうにもなりません。
掲示板嵐は犯罪でもなんでもないので、(名誉毀損などなければ。)
それはムリな話です・・。
プロバイダに文句を言われればやめるので、あるいはアカ取り消しですし・・。
以後も、同様のユーザーをすぐにログを洗ってもらえるようになりますし・・。
アタックなんてできません・・。
今色々やっています・・またあとできます・・。同か宜しくお願いします皆様。
0852839
01/12/22 14:49ID:IddObTYJどうもです。いろいろ試して、
$l1 = int($x/0xffffffff);
$l2 = $x % 0xffffffff;
print pack 'LL', $l2, $l1;
これで、求めるものが出ているような気もしますが
あんまり自信もなし。。。
Q は、 perldoc -f pack すると
q A signed quad (64-bit) value.
Q An unsigned quad value.
(Quads are available only if your system supports 64-bit integer values _and_ if Perl has been compiled to support those. Causes a fatal error otherwise.)
とあって、これしかねぇ〜と喜んだのですが。。。
Win32ではサポート外だったようで。ハァ
0853名無しさん@お腹いっぱい。
01/12/22 14:50ID:???0854名無しさん@お腹いっぱい。
01/12/22 14:57ID:oibAhbUrすみません。
今パッと取った掲示板なのですが、このサイトは
フリーで一切HTMLなどをいじっていません・・。無料BBSです。
簡単に作れてしまうサイトです。
この掲示板で、自分でCGIをつけたしたりすることは可能でしょうか?
教えて下さいお願いします。
0855名無しさん@お腹いっぱい。
01/12/22 15:01ID:???0856Web板初心者スレ886
01/12/22 16:15ID:???Perlに関して教えて下さいと言う質問かと思ったので
こっちに回したのですが、とんでもない厨だったようですね。申し訳ない。
http://pc.2ch.net/test/read.cgi/hp/1007538322/884-
0857名無しさん@お腹いっぱい。
01/12/22 17:17ID:???0858名無しさん@お腹いっぱい。
01/12/22 22:57ID:???$x に 64bit int 入れてちゃんと動いてる?
実は double になってるかもよ。
0859名無しさん@お腹いっぱい。
01/12/22 23:34ID:t/VCgPdO英語名にするとか
名前の前に_をいれるとか。どう?
ちなみに先頭に_をいれとけば予約語とかぶる事って無いですよね?
0860名無しさん@お腹いっぱい。
01/12/23 00:58ID:MEqShOBiあるサブルーチンで出た結果を$resultに代入したとします。
これは必ず
return $result;
としなければならないのでしょうか。
returnの使い方がいまいち分かりません。
どういう時に使うもの/使わなければならないものものなのでしょうか。
perldocをみてもよく分かりませんでした・・・。
宜しくお願いします。
0861age
01/12/23 01:01ID:kSQE2xUF0862名なひ
01/12/23 02:13ID:M1oj4o+APerlのサブルーティンは戻り値返さなくてもよかったと、思う。
return();省略したら最後に評価した式が勝手に戻り血にできる、ようなきがした。
0863名無しさん@お腹いっぱい。
01/12/23 03:01ID:???規約だけ守れば好きなようにやればいい
コーダのレベルは大体この辺で分かるけどな(笑
0864名無しさん@お腹いっぱい。
01/12/23 03:45ID:???ローマ字にしておくほうがまだ救いがある。
0866名無しさん@お腹いっぱい。
01/12/23 15:31ID:cDgNamdEprint $_;
}
と、
print <IN>;
ってメモリ消費量違ったりするんでしょうか?
0867分からないくせに生意気なことを言ってみる
01/12/23 15:35ID:???Perlでメモリーを気にするのはナンセンス
0868名無しさん@お腹いっぱい。
01/12/23 15:43ID:???returnって関数なの?
0869868
01/12/23 15:45ID:???0870名無しさん@お腹いっぱい。
01/12/23 15:46ID:???0871名無しさん@お腹いっぱい。
01/12/23 15:47ID:???いや、関数らしいぞ。プログラミングPerl改訂版(JP)の237ページに載っている。
0872名無しさん@お腹いっぱい。
01/12/23 15:51ID:???0873名無しさん@お腹いっぱい。
01/12/23 15:51ID:???0874名無しさん@お腹いっぱい。
01/12/23 15:56ID:???他の言語とは意味が違うとしか思えないよ。
0875名無しさん@お腹いっぱい。
01/12/23 15:58ID:???ifやforも関数にすればよかったのにね。 (w
0876JAPU ◆JAPUTeX.
01/12/23 16:05ID:???過度にメモリを気にするのはナンセンスだけど、ある程度は考えようぜ。(苦笑)
(>>866 の場合は while 使うのが吉。)
0877名無しさん@お腹いっぱい。
01/12/23 23:28ID:???突っ込み隊が一杯釣れそうだな (・∀・)
0878名無しさん@お腹いっぱい。
01/12/24 01:49ID:???まだドキュメント読んでる最中なんで、可否が解れば幸いです ^^
0880名無しさん@お腹いっぱい。
01/12/24 04:33ID:???0881名無しさん@お腹いっぱい。
01/12/24 05:44ID:???有るか無いか聞いてどうすんの?
>いらっしゃーい、perlのコーディングで困ってる人のスレです。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
0882名無しさん@お腹いっぱい。
01/12/24 06:24ID:uH077O8Q常套手段って有りますか
例えば上限を5とすると、5を超えるとsleep秒待ってリトライ
と言う感じで実装したいのです
0883821@v(・ v ・)v
01/12/24 08:10ID:???Socket.xs、ちょっと開けて読んでみましたけど、難解ですねー
と言うかこれってスパゲッティー?
頑張りますー 、ありがとうっす。
0884名無しさん@お腹いっぱい。
01/12/24 15:39ID:CE1hGHz4具体的な方法をご存知の方がいらっしゃいましたらご教授お願い致します。
0885名無しさん@お腹いっぱい。
01/12/24 16:03ID:n/gVuaksJSで書き出せば可能かと。
0886名無しさん@お腹いっぱい。
01/12/24 16:10ID:???何でSSIなん? つーかJavaスクはWEB製作だろっつの >ム板さん
Googleで「Javascript」「Set-Cookie」で検索してヒットしたものを
SSIでexeccmdすれば良いの、ソースは検索すれば100万件位出てきます
0887田イ戈
01/12/24 17:44ID:???<meta http-equiv="Set-Cookie" content="cookiename=cookievalue">
か。Perlとは関係ないのでスレ違い。
JavScript を execcmd って何だろう?
0888名無しさん
01/12/24 17:56ID:???<meta http-equiv="Set-Cookie" content="cookiename=cookievalue">
って何だろう?
0889名無しさん@お腹いっぱい。
01/12/24 18:01ID:???0891884
01/12/24 21:50ID:zH2D792Bexeccmdでパールで作ったCGIを呼び出すのですが、
それをクッキーに食べさせる方法を聞きたかったのであります。
JAVAスクリプト使うか
<meta http-equiv="Set-Cookie" content="cookiename=cookievalue">
を使えばいいのですね。
JAVAスクリプトはまだやったことがないので
後者を使ってみます。
どうもみなさんありがとうございましたm(__)m
0892名無しさん@お腹いっぱい。
01/12/25 00:55ID:SHv7CWw6てやるのと@data = <FILE>
とかに代入して処理するのだと@dataの方が
メモリ使わなかったりするのですか?
0893892
01/12/25 00:59ID:SHv7CWw6@dataの方がメモリ使ったりするのですか?
0894名無しさん@お腹いっぱい。
01/12/25 01:02ID:???します。
0895名無しさん@お腹いっぱい。
01/12/25 01:04ID:???少し上のレスくらい読んでみたらどーよ。
0896892
01/12/25 01:19ID:SHv7CWw6どうもありがとうございます。
読んでたんですけど、低次元なレベルなもので
代入だと別なのかも・・・と思いまして。
0897892
01/12/25 03:25ID:qZ0BU43GWHILEで処理してる間に(これは読み取りのみで開いた)
別の処理が書きこみしても大丈夫でしょうか?
例えば
#処理1
open (FILE,./file.dat)
while(<FILE>){〜〜〜;}
close FILE;
#処理2
open (FILE,">./file.dat")
print FILE $hogedata;
close (FILE);
みたいな感じでAさんが処理1をやってる場合に
Bさんが処理2をやるというのは問題無いですか?
0898892
01/12/25 03:27ID:qZ0BU43Gclose (FILE);です。
0899名無しさん@お腹いっぱい。
01/12/25 04:08ID:???0900遅いか
01/12/25 07:28ID:???ファイルハンドルはリストコンテキストだと全てを(メモリに)読み込み
スカラーコンテキストだと一行読み込みます。
foreach(){}の()とか配列、リストを左辺に置く代入文は右辺は
リストコンテキストで評価されます。
面倒なときはscalar(オブジェクト)で強制的にオブジェクトをスカラーで評価できます。
while(<IN>){}は$_=<IN>の省略なのでスカラー評価でメモリは抑え目です。
0901名無しさん@お腹いっぱい。
01/12/25 07:44ID:???問題ある。
同時に1つのファイルを読み書きすると
おかしなデータを読み込むかもしれない。
処理1側で @data = <FILE>; とやっていてもダメ。
flock関数について調べると吉。同時に読み書きできないようにできる。
蛇足だけどPerl5くらいから,組み込まれたり事前に宣言されている関数は
open FILE, '> ./file.dat';
close FILE;
みたいに ()無しでも使える。
0902イヤーソ
01/12/25 12:56ID:???0903名無しさん@お腹いっぱい。
01/12/25 16:46ID:mgSxI3Lqそれを順に並び替えて(123、132、213、231・・・・・のように)
全パターン出力する書き方を教えてください。
よろしくお願いします
0904名無しさん@お腹いっぱい。
01/12/25 17:17ID:???0905903
01/12/25 17:27ID:???@a="A","B","C";
を
画面上で
ABC
ACB
BAC
BCA
CAB
CBA
の表示させたいのです。
よろしくお願いします。
0906名無しさん@お腹いっぱい。
01/12/25 17:36ID:???それってPerlの話?それともアルゴリズムの話?
Perlの話なら、とりあえず疑似コードかCでアルゴリズム書いてみ。
0907名無しさん@お腹いっぱい。
01/12/25 17:37ID:???もし分かったら二度と戻ってくるな
もし分からなかったらお前は正真正銘完全完璧にプログラムには
向いてないからやっぱりもどってくるな、諦めろ
0908名無しさん@お腹いっぱい。
01/12/25 17:43ID:???0909名無しさん@お腹いっぱい。
01/12/25 17:46ID:???&permutation( [], 1 .. 999999 );
sub permutation{
my $stack = shift;
unless( @_ ){
print "@$stack\n";
return;
}
for( my $i=0; $i<@_; $i++ ){
push @$stack, $_[$i];
&permutation( $stack, @_[0..$i-1], @_[$i+1..$#_] );
pop @$stack;
}
}
何で皆怒ってるの?
0910名無しさん@お腹いっぱい。
01/12/25 17:46ID:???0911903
01/12/25 17:46ID:???はてはて?
0912名無しさん@お腹いっぱい。
01/12/25 17:49ID:???お前みたいに相手の言っていることも性格に読み取れないようなヤツは
正真正銘完全完璧にプログラムには向いてないからやっぱりもどってくるな、諦めろ(p
0913デフォルトの名無しさん
01/12/25 17:53ID:???0914名無しさん@お腹いっぱい。
01/12/25 20:23ID:Ca6wsnSBNET::FTPモジュールが入ってるかどうか確認するにはどうしたらいいでしょう?
0915名無しさん@お腹いっぱい。
01/12/25 20:31ID:???押すとパスクラックしてくれるCGIの作り方教えて
0916892
01/12/25 20:45ID:Is9/IN8sレスありがとうございます。
度々申し分けないのですが、
#処理1
open (FILE,./file.dat)
while(<FILE>){〜〜〜;}
close FILE;
〜〜〜〜〜〜〜〜; #この処理は重要では無いので
〜〜〜〜〜〜〜〜; #処理1で空データを読み取ってしまっても構わない
#処理2
open (FILE,./file.dat)
while(<FILE>){〜〜〜;}
close FILE;
#処理3
open (FILE,">./file.dat")
print FILE $hogedata;
close (FILE);
上のような一連の流れの場合、処理1ではそのまま読み取って(ロック無しで)
処理2で再度読み取り、この読み取ったデータを元に処理3で
ファイルに書きこむ場合は処理2の前でロックすれば良いのでしょうか?
あと私の覚えてる範囲だとロック処理を行う理由は
別のユーザーが実行したプロセスが
ユーザー1のプロセスがファイルに書きこんでる最中に
ユーザー2が読み取ると空のデータを読み取ってしまい
このデータを元にファイルに書きこむと空データになってしまう。
それを防ぐためにロック処理をしてる。
と覚えてるのですが、他にも理由というのはあるのですか?
0918名無しさん@お腹いっぱい。
01/12/25 22:57ID:???ただの紳士協定です。
有るプロセスが排他ロック(LOCK_EX)すると他のプロセスは排他ロック(LOCK_EX)
が出来なくなるだけで、共有ロックは勿論、読み込みも書き込みも自由に出来るということです
今書いてるのはCGIみたいですが、ややこしければ深く考えずに2行目でロックして
exitする前にアンロックでも大抵は十分です
0919名無しさん@お腹いっぱい。
01/12/25 23:00ID:JNXKMJjKそうですか。スクリプトの内容というか、
よく上のような場面の処理1で、ロックがかかってるか
調べてから読み取った方が良いのかな?
と考える場面があったので(mkdir方式でロックしてます)
レスありがとうございます。
0920名無しさん@お腹いっぱい。
01/12/25 23:00ID:???処理時間1分とかなら別ですよ :-)
0921名無しさん@お腹いっぱい。
01/12/25 23:16ID:???perldoc -l Net::FTP
とか
perl -e "use Net::FTP"
など
処理1はどうでもいいわけでしょ?
処理2〜3で扱うデータとの整合性が必要ないならそれでいい
ただタイミング的に(別プロセスとの関係で)おかしいデータを取り得るって
ことじゃないの?
それがいやなら(=整合性は要らなくても正しいデータが欲しいなら)処理1の前に
ロックしてしまえと
0924名無しさん@お腹いっぱい。
01/12/26 00:46ID:???∧_∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
ピュ.ー ( ・∀・)< わーぃ♪
=〔~∪ ̄ ̄〕 \________
= ◎――◎
0925名無しさん@お腹いっぱい。
01/12/26 00:51ID:gQqjt0L+それはそうと>>815
できないこともないけど1度やったら捕まるね。
0926名無しさん@お腹いっぱい。
01/12/26 00:53ID:???0927名無しさん@お腹いっぱい。
01/12/26 01:59ID:ONuCP+Nn$hash{__PACKAGE__} = "hogehoge";
だと、"__PACKAGE__"と言うキーのハッシュ値ができてしまいます。
今は、
$packagename = __PACKAGE__;
$hash{$packagename} = "hogehoge";
と2行で書いているんですが、もう少しスマートな書き方はありませんか?
0928名無しさん@お腹いっぱい。
01/12/26 02:46ID:xizBefjbdefined $hash{'keyname'}
とかそーゆーんじゃなくて?
0929名無しさん@お腹いっぱい。
01/12/26 03:20ID:???$hash{__PACKAGE__}は $hash{"__PACKAGE__"}と
等価だから、基本的にはそのやり方しかないんじゃないかなぁ。
$hash{''. __PACKAGE__} =1;とかでもいけることはいけるけど。。。
0930名無しさん@お腹いっぱい。
01/12/26 03:42ID:???そうですね。
レスありがとうございます。
0931914
01/12/26 03:52ID:FVfGl49Uありがとうございます。
0932名無しさん@お腹いっぱい。
01/12/26 08:23ID:???$hash{+__PACKAGE__}
0933JAPU ◆JAPUTeX.
01/12/26 09:36ID:???LOCK_EX されると、LOCK_SH で flock を呼び出したときもブロックされます。
(もちろん、LOCK_NB ビットも立てた場合はそのまま失敗する。)
通常、書き込みを伴う処理については LOCK_EX を、読み込みのみの処理のと
きは LOCK_SH を指定します。これだと、書き込みするときは他のプロセスか
ら読み書き両方できず、読み込みする場合は他のプロセスから読み込みのみ可
能となります。
あと、open FH, "> ..." とした場合はその瞬間にファイルサイズが 0 になっ
てしまうので、ロックする意味がないです。>> とか +< で open しておいて、
truncate とかするのがよい。
蛇足ながら、ファイルをクローズ、またはプロセスが終了した時点でロックは
解除されます。
0934名無しさん@お腹いっぱい。
01/12/26 14:44ID:???func ($foo,$hoge,$poyo,$baz,$biz);
のように長い引き数が有る関数の呼び出しで、func内で@_に入った値を
任意の名前にエイリアスする方法は有りませんか?
少し前まで直接$_[3] = '100'; の様に代入してたんですが、とても読みにくいので
今はリファレンスを貰ってます
でも、これでも参照外しが大変なので、せっかく参照呼出しなのだから
何か良い方法が無いかなと思ってしまって・・・
よろしくお願いします。
0935名無しさん@お腹いっぱい。
01/12/26 14:48ID:Y7QEtnjdfunc内で
my (*foo,*hoge,*poyo,*baz,*biz) = \@_;
の様にして一発でエイリアスを張る事って出来ないですかね。。。
0936名無しさん@お腹いっぱい。
01/12/26 15:12ID:???Perl って Call by reference じゃないと思うけど。。
0937名無しさん@お腹いっぱい。
01/12/26 15:44ID:???print S "Referer: $ENV{'HTTP_REFERER'}\r\n";
print S "User-Agent: $ENV{'HTTP_USER_AGENT'}\r\n\r\n";
だけで十分ですかね?
やっぱり全部送ってやったほうが良いでしょうか?
また、そう言う場合もっとすっきりやる方法はありませんでしょうか?
0938名無しさん@お腹いっぱい。
01/12/26 15:46ID:???0939名無しさん@お腹いっぱい。
01/12/26 16:33ID:???my ($out, $in1, $in2) = (0 .. 2);
sub foo{
# $_[ $in1 ] と$_[ $in2 ] を使って何か演算をする
$_[ $out ] = $result;
return 1; # 成功
}
}
こんなのはどうだろうな。まぁ馬鹿げているが。
0940名無しさん@お腹いっぱい。
01/12/26 16:39ID:???事前にこんなようなの書いとけばできる。
sub func(\$\$) {
local($one,$two) = @_;
}
0941名無しさん@お腹いっぱい。
01/12/26 17:40ID:o9s6aZoqひょっとして 頻繁に起動されるスクリプトでLOCK_SHを使っている場合,
LOCK_EXを掛けようとすると延々待たされますか?
0942名無しさん@お腹いっぱい。
01/12/26 17:48ID:???そんな彼方にはプロセス丸ごと排他を推奨
0943名無しさん@お腹いっぱい。
01/12/26 17:50ID:???LOCK_SHしてるやつがいなくなるまで待つ。
だからクリティカルセッションはなるべく短めにすること。
0946934
01/12/26 19:03ID:Y7QEtnjd押し切るとlocal使う事になりそうですね、、、
Call by referenceはCの様に関数間で値をmoveするんじゃなくて、
見かけ上、引き数が呼び出し先に突き抜けてくるという意味で書きました
これはプロトタイプでも解決出来ないですよね、、、、
取り合えずconstな値はローカルにコピーして、書き換える時は@_を直接
書き換えることにします (でもやりにくいなぁ・・・
0947940
01/12/26 19:14ID:???sub swap(\$\$) {
local(*one,*two) = @_;
($two,$one) = ($one,$two);
}
でリファレンス渡しになる。
使う時はswap($aaa,$bbb); みたいに書く。
0948名無しさん@お腹いっぱい。
01/12/26 19:52ID:???参照呼出しで合ってる、俺も前にちょっと考えてenumしたりしたけど結局大きい変数とかは $_[] に書いてるよ
0949916
01/12/26 21:06ID:???>open FH, "> ..." とした場合はその瞬間にファイルサイズが 0 になっ
てしまうので
データが空になる瞬間を間違えて覚えてました。
レスありがとうございます。
0950JAPU@コミケも近いですね ◆JAPUTeX.
01/12/26 21:15ID:???LOCK_SH (shared) だけならいくらでも同時に可能。読み込みだけの時はこれ
だけ使っておけ。
LOCK_EX (exclusive) は他のプロセスが LOCK_EX / LOCK_SH しているとダメ。
LOCK_NB (non-blocking) を指定していなければ、他のロックしているプロセ
スがロックをやめるまで待ち続けます。書き込みを伴うときはこれ使っておけ。
説明悪い?
LOCK_SH は LOCK_SH のみと共存可能。
LOCK_EX は LOCK_EX とも LOCK_SH とも共存不可能。
って書いた方がいいのかな。
>>944
なんでそんな結論になるかなぁ...
0951941
01/12/26 21:46ID:???「別のスクリプトから書き込む時にLOCK_EXを掛けようとすると延々〜」って書いてたつもりでした。。。
0952名無しさん@お腹いっぱい。
01/12/27 02:01ID:K1xvVgg1などで0〜10まで順に実行している時
0〜10の値は何に格納されているのですか?
http://tohoho.wakusei.ne.jp/wwwperl1.htm#Tokushu
ここを見たのですが、乗って無いみたいなので。。。
お願いします。
0953952
01/12/27 02:06ID:K1xvVgg1foreach(@array){
てした時に何回目なのかを格納する変数を教えて下さい。でした。
951だと$_
てなっちゃいますね。すいません。
0954んとねんとね
01/12/27 02:22ID:???0955名無しさん@お腹いっぱい。
01/12/27 02:27ID:K1xvVgg1これだけいろいろな特殊変数があるのに!意外だ…。
ではforeach(@array){
$tmp++;
とやって数えるしかないのですね。。。なるほど。
即レス感謝です。
ありがとうございました。
0956かもかも
01/12/27 04:31ID:GPy3eH+bfor ( $[ .. $[+$#a ){
print "id= $_, value= $a[$_]\n";
}
0957名無しさん@お腹いっぱい。
01/12/27 05:20ID:06m3pfEiなるほど〜。変数では無いですけど、
そういう方法もありますね。
# $[+$#a
# ここでなんで$[を足すのかがまだわからんですけど
レスどうもです。
0958かもかも
01/12/27 05:26ID:STachx1UなのでR!
0959名無しさん@お腹いっぱい。
01/12/27 05:40ID:???0960名無しさん@お腹いっぱい。
01/12/27 09:06ID:???0961そろそろ次スレを・・・
01/12/27 09:38ID:???0962名無しさん@お腹いっぱい。
01/12/27 10:23ID:???$[ は足さなくてよい。ていうか、足しちゃだめ。
$#aで、$[ をバイアスとする@aの最後の添え字の意味になる。
perldoc perldataでは、以下のように説明されている
scalar(@whatever) == $#whatever - $[ + 1;
>>958
デフォルトの$[ == 0だから動いただけ。
local $[ = 1;
を965の先頭に入れて動かしてみ。
てことで、>>958新スレよろしく!
0963えいじ
01/12/27 19:20ID:VRi8wtO1print OUT "あいうえお\n";
close(OUT);
でfilename.txtが新規作成されるんですけど
http://www.****.com/ のトップのディレクトリだけは
新規作成されません。
どうしたら解決できるかご存知の方おられますでしょうか。
よろしくお願いいたします
0964名無しさん@お腹いっぱい。
01/12/27 19:51ID:???にしてエラーを見てみ
0965名無しさん@お腹いっぱい。
01/12/27 19:54ID:???0966名無しさん@お腹いっぱい。
01/12/27 19:54ID:???0967名無しさん@お腹いっぱい。
01/12/27 20:16ID:???同意します。
0968名無しさん@お腹いっぱい。
01/12/27 20:22ID:???なんだ。そういう勘違いをしていたのか。
0969名無しさん@お腹いっぱい。
01/12/27 20:26ID:???0970名無しさん@お腹いっぱい。
01/12/28 01:03ID:???わざわざAA張って煽る事すらウザイ
0971名無しさん@お腹いっぱい。
01/12/28 04:07ID:OJh+njZn再接続しても同一ユーザーだと特定する方法ってないんですか?
0972名無しさん@お腹いっぱい。
01/12/28 04:12ID:???0973名無しさん@お腹いっぱい。
01/12/28 04:18ID:???パソコン初心者板で聞いてみて。http://pc.2ch.net/pcqa/index.html
0974名無しさん@お腹いっぱい。
01/12/28 05:07ID:???おいそれは屁理屈に近いだろ。このくらい教えてやれよ。
0975名無しさん@お腹いっぱい。
01/12/28 06:33ID:???有るよ
0976有るなら
01/12/28 14:25ID:???0977プッ返し げら
01/12/28 14:30ID:???0978名無しさん@お腹いっぱい。
01/12/28 15:17ID:???どうしてもうまく改造できません..。
よければアドバイス願いします。
0979名無しさん@お腹いっぱい。
01/12/28 15:27ID:???そのこととPerlとどんな関係があるんだ?
0980名無しさん@お腹いっぱい。
01/12/28 15:29ID:???if($filename=~m/\.mid$/)
print "Content-Type:audio/midi";
0981980
01/12/28 15:30ID:???0982980
01/12/28 15:31ID:???if($filename=~m/\.mid$/){print "Content-Type:audio/midi\n\n";}
0983978
01/12/28 16:12ID:???先生!ありがとうございます!!
ある、画像アップロード掲示板を使用しているのですが
それはイメージ(GIFやJPEG)画像しかうpできないんです。
それじゃーとりあえず982の記述を適当に書き込んだら良いのでしょうか?
0984982
01/12/28 17:06ID:???>>983
コードを見ればどこかに受け入れ可能な拡張子を判断するところがあるだろ?
そこに.midを付け加えればOK
09861000
01/12/28 21:18ID:???0987sage
01/12/28 22:53ID:???0988sage
01/12/28 22:53ID:???0989sage
01/12/28 22:53ID:???0990sage
01/12/28 22:53ID:???0991sage
01/12/28 22:53ID:???0992sage
01/12/28 22:53ID:???0993sage
01/12/28 22:53ID:???0994sage
01/12/28 22:53ID:???0995sage
01/12/28 22:53ID:???0996sage
01/12/28 22:53ID:???0997sage
01/12/28 22:53ID:???0998sage
01/12/28 22:53ID:???0999sage
01/12/28 22:53ID:???1000sage
01/12/28 22:53ID:???10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。