Perl 初心者コーナー Part22
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
03/04/15 10:15ID:???【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
1:自分はこう言う事がしたい。
2:それでこんな風にやってみたが・・・
3:それだとこんなエラーが出て上手く行かなかった。
最低でも1と3が無いと誰も答えられないよ。
良い回答は良い質問から。一緒に勉強しましょう。
CGIだけど、なんか質問ある? Part 10
http://pc2.2ch.net/test/read.cgi/php/1048686475/
参考書籍の話題は、【Perl,CGI】参考書籍 第三版
http://pc.2ch.net/test/read.cgi/php/1030209573/
その他の雑多な話題は、【CGIに依存しないPerlの話題一般/Part2】
http://pc.2ch.net/test/read.cgi/php/1030548610/
スクリプトの改造依頼は、【 スクリプト改造工房 PART 6 】
http://pc2.2ch.net/test/read.cgi/php/1047806915/
過去ログやお勧めサイトは >>2-10
0360nobodyさん
03/04/27 00:23ID:BGNE0ecdできますかねぇ?
0361nobodyさん
03/04/27 00:27ID:???print "$key $value \n " ;
}
とか
foreach $key ( keys( %data ) ) {
print "$key $data{$key} \n "
}
0362bloom
03/04/27 00:29ID:3nPIuagT0363355
03/04/27 00:34ID:AWb8yDTesyntax error at ./util.pl line 28, near ")["
syntax error at ./util.pl line 45, near "}"
と、perlは逝っております。
0364nobodyさん
03/04/27 00:38ID:???foreach $key (sort {$a cmp $b} keys %data) {
printf "$key $data{$$key} \n;
}
0366nobodyさん
03/04/27 00:41ID:???foreach $key (sort {$a cmp $b} keys %data) {
print "$key $data{$key} \n;
}
ゴミが混じってしまった
0367355
03/04/27 00:59ID:AWb8yDTesyntax error at ./util.pl line 28, near ")["
これは、「foreach ( split( /;/, $_)[0] ) {」をいっています。
syntax error at ./util.pl line 45, near "}"
これは、util.plの最後の「}」です。
0371nobodyさん
03/04/27 01:09ID:???>Use of uninitialized value in split at ./util.pl line 27.」
↓
>思うに、$_[0]が初期化されていないと言いたいんでしょうが
は本当か?
0373nobodyさん
03/04/27 01:19ID:???0374( ´Д`)/< 先生!!こんなのが有りますた。
03/04/27 01:34ID:???http://www.yamazaki.90.kg/zenkaku/index.html
http://www.yamazaki.90.kg/hankaku/hankaku08.html
http://yamazaki.90.kg/hankaku/hankaku10.html
http://www.yamazaki.90.kg/hankaku/hankaku01.html
http://yamazaki.90.kg/hankaku/hankaku03.html
http://www.yamazaki.90.kg/hankaku/hankaku02.html
http://yamazaki.90.kg/hankaku/hankaku09.html
http://www.yamazaki.90.kg/hankaku/hankaku06.html
http://yamazaki.90.kg/hankaku/hankaku04.html
http://www.yamazaki.90.kg/zenkaku/index.html
http://www.yamazaki.90.kg/hankaku/hankaku05.html
0375355
03/04/27 01:37ID:AWb8yDTeいやはや、申し訳ないです。ド初心者なもんで。
>>371
どうやら、それ以外にマズーな所が有るようですね。
大体、どう考えても、本来エラーは出ないと思うんです。
頭を冷やしてきます。
レスをしていただいた皆様、ありがとうです。
0376355
03/04/27 01:39ID:???0378nobodyさん
03/04/27 02:16ID:???0380nobodyさん
03/04/27 05:22ID:a4qvC/X7use constant HOGE => ('hoge'=>'aaa','hoge2'=>'bbb','hoge3'=>'ccc');
foreach(HOGE){
print;
}
■これだと、キーを指定しての値表示ができるけどループさせられない。
use constant HONGE => {'hoge'=>'aaa','hoge2'=>'bbb','hoge3'};
print HONGE->{'hoge'};
どうにかしてループOK、個々の値抜き出しOK
な方法は無いでしょうか?
0381250
03/04/27 05:43ID:???use constant HONGE => ('hoge'=>'aaa','hoge2'=>'bbb','hoge3'=>'efh');
%hage = HONGE;
print $hage{'hoge'};
use constant HOGE => {'hoge'=>'aaa','hoge2'=>'bbb','hoge3'=>'efh'};
$hage = HOGE;
foreach(keys(%{$hage})){
print $hage->{$_};
}
CONST使わなければよいってのは駄目なん?
0382380
03/04/27 05:51ID:a4qvC/X7ありがとうございます。
その方法でできました。
けど、他の変数に代入せずに表示させるというのは無理なんですかね?
CONST使わなければ良いんですけど勉強の為という事で。。
0383380
03/04/27 05:55ID:???定数として扱うなら変数にぶち込むより、なにかが良いらしい、というのと
へっぽこな自分にとってはなんかかっこ良く見える(結構なウエイトを占める)
というのも理由の一つですw
0384250
03/04/27 06:04ID:???{
my $hage = {'hoge'=>'aaa','hoge2'=>'bbb','hoge3'=>'efh'};
foreach(keys(%{$hage})){
print $hage->{$_};
}
}
とか定数だとこうやっちゃうことが多いから、使う所無かったりします
0386nobodyさん
03/04/27 06:35ID:MIfRpB250387世界にひとつだけの花(コピペ推奨)
03/04/27 11:28ID:???●とにかく神経質で気が小さい、了見が狭い(臆病、二言目には「世間」(「世間」と言っても、一部のA型を中心とした一部の人間の動向に過ぎない))
●他人に異常に干渉して自分たちの古いシキタリを押し付け、それから少しでも外れる奴に対しては好戦的でファイト満々な態度をとり、かなりキモイ(自己中心、硬直的でデリカシーがない)
●妙に気位が高く、自分が馬鹿にされるとカッと怒るくせに平気で他人を馬鹿にしようとする(ただし、相手を表面的・形式的にしか判断できず(早合点・誤解の名人)、実際にはたいてい、内面的・実質的に負けていることが多い)
●権力・強者には平身低頭だが、弱者に対しては八つ当たり等していじめる(強い者にはへつらい、弱い者に対してはいじめる(特に人が見ていない場合))
●あら探しだけは名人級でウザく、とにかく否定的(例え10の長所があっても褒めることをせず、たった1つの短所を見つけては貶す)
●基本的に悲観主義でマイナス思考に支配されているため性格が鬱陶しい(根暗)
●何でも「右へ習え」で、単独では何もできない(群れでしか行動できないヘタレ)
●少数派の異質・異文化を理解しようとせず、あるいは理解を示さず、排斥する(差別主義者、狭量、視野が狭い、多数派=正しい と信じて疑わない)
●集団によるいじめのリーダーとなり皆を先導する(陰湿かつ陰険で狡猾)
●他人の悪口・陰口を好むと同時に、自分は他人からどう見られているか、人の目を異常に気にする(自分がそうだから容易に他人を信用できない、ポーズだけで中身を伴っていない、世間体命)
●たとえ友達が多くても、いずれも浅い付き合いでしかなく、心の友達はおらず孤独(心の感度が低く、包容力がなく、冷酷だから)
●頭が硬く融通が利かないためストレスを溜め込みやすく、また短気で、地雷持ちが多い(不合理な馬鹿)
●たとえ後で自分の誤りに気づいても、素直に謝れず強引に筋を通し、こじつけの言い訳ばかりする(もう腹を切るしかない!)
●男は、女々しいあるいは女の腐ったみたいな考えのやつが多い(例:「俺のほうが男前やのに、なんでや!(あの野郎の足を引っ張ってやる!!)」)
0388nobodyさん
03/04/27 19:17ID:???use constant HASHREF => {hoge => 'aaa', hoge2 => 'bbb', hoge3 =>'efh'};
print ${{+HASH}}{hoge};
# print {+HASH}->{hoge};は出来ない…
foreach (keys %{HASHREF()}) {
print HASHREF->{$_};
}
foreach (keys %{+HASHREF}) {
print HASHREF->{$_};
}
0389nobodyさん
03/04/27 20:30ID:AxMzTUBkとかありますよね?
このように、?aならαという処理をする、?bならβという処理をする
というふうにするにはどうすればいいのでしょうか?
あと、これってGET,POST関係ありますよね?
トクトクです。動作可能かもお願いします
0390nobodyさん
03/04/27 20:35ID:???*.cgi?a だと$ENV{QUERY_STRING}に"a"が入ってる。
$ENV{REQUEST_METHOD}はGETになる。
0391nobodyさん
03/04/27 20:38ID:AxMzTUBkありがとうございます。
$ENV{QUERY_STRING}は環境変数だからGET POST関係ないですね。
$ENV{REQUEST_METHOD}がGET専用ということですか?
0394nobodyさん
03/04/27 20:49ID:AxMzTUBkわざわざプログラム板からご苦労です。( ´,_ゝ`)
0395nobodyさん
03/04/27 20:52ID:???違う$ENV{REQUEST_METHOD}はGETなら"GET"が、POSTなら"POST"が入ってる。
で、何がしたいの?自分でスクリプトを組みたいのか、
どっかから拾ってきたやつを動かしたいのかどっちだ?
0397nobodyさん
03/04/27 20:54ID:AxMzTUBk丁寧にありがとうございます。
自分で組んでいるんです。
中身がopenなら、テキストにipを書き込み、
closeならcloseと書き込むスクリプトです。
自宅鯖の公開中かどうかというのを表示するスクリプトです。
0398_
03/04/27 20:55ID:???http://www.yamazaki.90.kg/hankaku/hankaku02.html
http://www.yamazaki.90.kg/zenkaku/index.html
http://www.yamazaki.90.kg/hankaku/hankaku05.html
http://yamazaki.90.kg/hankaku/hankaku10.html
http://www.yamazaki.90.kg/hankaku/hankaku08.html
http://yamazaki.90.kg/hankaku/hankaku03.html
http://www.yamazaki.90.kg/hankaku/hankaku07html
http://yamazaki.90.kg/hankaku/hankaku01.html
http://www.yamazaki.90.kg/hankaku/hankaku06.html
http://yamazaki.90.kg/hankaku/hankaku04.html
http://www.yamazaki.90.kg/hankaku/hankaku09.html
0399nobodyさん
03/04/27 20:58ID:???連休でCGI作ろうっていう学生が多いんだろうが、自分で努力する前に聞こうとする奴が多いのは萎えるな。
>>1も読めないような奴が多い。
まぁ、そんなバカでも挑戦しようと思える程、Perlが優しいってことなのかもしれないが。
0401nobodyさん
03/04/27 21:01ID:???しかも悪びれる様子もない。
0402nobodyさん
03/04/27 21:04ID:AxMzTUBk間違えてプログラム板にカキコしてしまい、こちらに書き直しました。
申し訳ありませんでした。
0403nobodyさん
03/04/27 21:06ID:???半角英数だけなんだったらデコードする必要は無いよ。
その後の処理は$ENV{'QUERY_STRING'}にどんな値が入っているか分かれば簡単ですよ。
0404nobodyさん
03/04/27 21:10ID:AxMzTUBkありがとうございました。マルチポストでご迷惑おかけしました。。
0405404
03/04/27 21:46ID:AxMzTUBk#!/usr/bin/perl
open(FILE, ">ip.txt");
$addr = $ENV{REMOTE_ADDR};
$mode = $ENV{QUERY_STRING};
if($mode eq 'open'){print FILE "$addr\n";}
elsif($mode eq 'close'){print FILE "close\n";}
close(FILE);
open(FILE2, "ip.txt");
$data = <FILE2>;
if($data =~ /\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/){
&connection;
}
else{
&unconnection;
}
0406404 続き
03/04/27 21:47ID:AxMzTUBk{
print "content-type: text/html\n\n";
print "<html><head><title>公開中</title></head>\n";
print "<body><a href=\"http:\/\/$data\"><font color=\"blue\">公開中です。</font></a>\n";
print "</html>\n";
exit;
}
sub unconnection
{
print "content-type: text/html\n\n";
print "<html><head><title>非公開中</title></head>\n";
print "<body><font size=\"2\" color=\"red\">非公開中です。</font></body>\n";
print "</html>\n";
exit;
}
とすると、.cgiに?つけないでアクセスしたらテキストファイルの中身を消してしまいます。
どうしてでしょうか?
0408404 続き
03/04/27 21:55ID:AxMzTUBk分かりました。一晩かんがえてみます
0410404 続き
03/04/27 22:22ID:AxMzTUBkopen(FILE, ">ip.txt");
の時点できえるんですよね。。。
うーん。どうするべきか・・・
0411動画直リン
03/04/27 22:29ID:3nPIuagT0412404 続き
03/04/27 22:32ID:AxMzTUBk$addr = $ENV{REMOTE_ADDR};
$mode = $ENV{QUERY_STRING};
if($mode eq 'open'){
open(FILE, ">ip.txt");
print FILE "$addr\n";
close(FILE);
}
elsif($mode eq 'close'){
open(FILE, ">ip.txt");
print FILE "close\n";
close(FILE);
}
open(FILE, "ip.txt");
$data = <FILE>;
if($data =~ /\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/){
&connection;
}
else{
・
・
・
・
0413__
03/04/27 22:34ID:???http://www.yamazaki.90.kg/hankaku/hankaku02.html
http://www.yamazaki.90.kg/zenkaku/index.html
http://www.yamazaki.90.kg/hankaku/hankaku08.html
http://yamazaki.90.kg/hankaku/hankaku10.html
http://www.yamazaki.90.kg/hankaku/hankaku05.html
http://yamazaki.90.kg/hankaku/hankaku03.html
http://www.yamazaki.90.kg/hankaku/hankaku07html
http://yamazaki.90.kg/hankaku/hankaku01.html
http://www.yamazaki.90.kg/hankaku/hankaku06.html
http://yamazaki.90.kg/hankaku/hankaku04.html
http://www.yamazaki.90.kg/hankaku/hankaku09.html
0415404 続き
03/04/27 23:12ID:AxMzTUBkまだ初めて間もないもので・・・・
1ヶ月・・かな
0416nobodyさん
03/04/28 00:33ID:???0417nobodyさん
03/04/28 01:21ID:Gjra4FR3ようなプログラミングはPerlやPHPではできないのでしょ
うか。
初心者過ぎて申し訳ございません。
0418nobodyさん
03/04/28 01:24ID:???リアルタイムに「上から順番に」表示するだけ(単純に表示を遅らせるだけ)なら
できなくもないが、基本的には無理。
HTTPの仕様。
というかスレ違い。
0419nobodyさん
03/04/28 01:25ID:???表示って何を?
http:はコネクションレスだからアクセスに対して結果を
受け取ったら終わりだぞ
JavaScriptはスクリプトのコードを受け取って自分のPC上で
動いているからリアルタイムに動いているような動作をするだけだ
0420nobodyさん
03/04/28 01:59ID:???Htmlソースを書き出してくれるモジュールってありませんか?
0421nobodyさん
03/04/28 02:07ID:???Perlモジュールについて
http://pc2.2ch.net/test/read.cgi/php/997829243/l50
こっちのテンプレや過去ログ探して見たら?
0422nobodyさん
03/04/28 02:18ID:???このスレでは無理ぽ
0424nobodyさん
03/04/28 02:43ID:Gjra4FR3そうですよね。
厨房過ぎて恥ずかしい次第です。
カウントダウンの表示とかは、JavaScriptとか
アプレットとかFlashとかでクライアント操作
させて、指定時刻になったらcgiに渡す操作を
するしかないのですよね。
厨房質問に答えていただき有難うございました。
0425sage
03/04/28 02:45ID:Gjra4FR3質問にわざわざ答えていただき有難うございます。
そしてsage忘れてすみません。
やはり厨房丸出し。。。
0429nobodyさん
03/04/28 23:24ID:???掲示板などを配布してる所ってありませんか?知ってたら教えてください。
0430nobodyさん
03/04/28 23:59ID:???よーわからん。
例外処理って何がしたいのさせたいの?
そもそも「例外処理」の意味自体もはき違えてそうだけど。
いやその前にスレ違いだな。藁
0431nobodyさん
03/04/29 00:09ID:???もうちょっと上品に(致命的な)エラーを伝えたいなーって思って…
具体的なやりかたを教えて、、って書いてもいいんですが、もしそういうのがあれば
いちいち説明してもらわなくてもいいからいいかなって思って。。
0432nobodyさん
03/04/29 00:14ID:???まずは日本語を正確に伝えられるようになってくれ。
0433nobodyさん
03/04/29 00:21ID:???自分がやりたいのは、どのerror()で強制終了しても、後始末をすることを
考慮に入れてるスクリプトが全然無いから、そういうのを自分で作るということ。
それが広まれば、少しは、そんなことを考慮に入れたものが作られるようになるかなって思ったから。
0434bloom
03/04/29 00:29ID:23csOg+c0436ライラ
03/04/29 03:30ID:???BBSを付けたいのです。
それで、この2chのBBSをまねようと思うのですが、
どこで、どうやればいいのですか?
出来れば、分かりやすく教えて下さい。
0437nobodyさん
03/04/29 03:38ID:???誰かが、ものすごい勢いで2ch型掲示板を探すスレ
http://pc2.2ch.net/test/read.cgi/php/1023589390/
0438ライラ
03/04/29 04:14ID:???0439nobodyさん
03/04/29 04:25ID:???改造したいのか?
でなければどう実装されていようがどうでもいいはずだけど。
PerlにこだわらなければRubyで書かれたものを探せば見つかるんじゃないかな。
0440bloom
03/04/29 04:29ID:23csOg+c0441nobodyさん
03/04/29 05:37ID:???どこまで慎重にエラー処理するかはプログラムやそれで
扱うデータの重要度にもよる。
ランタイムエラーを起こす可能性がある箇所を全て把握
するには結構な知識が必要だし、そもそもいつシグナルが
飛んできて殺されるか分からん。トラップにコストをかける
意義があるか無いかを判断した上で、要らんと思ったら省く。
まぁどんなスクリプトを見てきた上で、「後始末をすることを
考慮に入れてるスクリプトが全然無い」という感想を持つに
至ったかは知らんが。(w
0442nobodyさん
03/04/29 06:37ID:???ttp://ssl.ohmsha.co.jp/cgi-bin/menu.cgi?ISBN=4-274-06420-4
0444nobodyさん
03/04/29 10:02ID:j97vjhfHdie使え
0446nobodyさん
03/04/29 16:00ID:qzwrs6CUprint $kurae; # 暗殺
=cut
【電磁波?】パナウェーブって何よ?【白装束】@お祭りch
http://live5.2ch.net/test/read.cgi/festival/1051521132/l50
[タマちゃん]謎の白装束軍団に対抗して黒装束オフ2@突発OFF
http://life2.2ch.net/test/read.cgi/offevent/1051588043/l50
=cut
0448nobodyさん
03/04/29 16:15ID:???$abc{xxx} / $abc{'xxx'}
添え字が英数字だけの場合、「''」をつけない場合のデメリットってありますか?
今まではつけるようにしていたんですが、
特にデメリットがないなら、別に付けなくてもいいかなと・・・。
0449nobodyさん
03/04/29 16:19ID:qzwrs6CUPerl5.8未満の場合、JPerl使わないと正規表現に一部日本語が使えなかった筈
0450nobodyさん
03/04/29 16:20ID:7QU29USV0451nobodyさん
03/04/29 16:33ID:???しっかり読もう。
0452nobodyさん
03/04/29 17:10ID:jjc4BdFLメーリングリストのCGIを使ってるのですが、
メールアドレスに + などが含まれるとうまくいきません(当たり前ですが)
対処法はあるでしょうか?
0454nobodyさん
03/04/29 17:22ID:???どのみち、0-9 a-z A-Z _ - . * 以外の文字を使われると破錠する。
詳しくは、URLエンコードでググって。
0455独り言
03/04/29 17:26ID:???プログラミングPerl改訂版の4章(リファレンス)を読んでも全然意味がわからないよ。
C言語のポインタとか分かってる方が理解が早いのかな?(Cは全然知らんが)
リファレンスがスッキリ分かる書籍とかないかなぁ。
以前、オブジェクト指向ってどんなんかなぁと思って、
PerlとかJavaのそれ関連の本読んで全然意味が分からなかったことがあったが、
Rubyプログラミング入門って本を読んだらちょっと理解できたことがあったな。
それを読むまでは、
オブジェクト?はぁ?
メソッド?はぁ?
クラス?はぁ?
って感じだったんだが、その本では、自動販売機を例にしていて
すごく分かりやすかったなぁ。
クラスとは自販機の設計図です。
オブジェクトはそれをもとに作られた自販機そのものです。
メソッドは自販機のボタンです。と。
オブジェクトは機能とデータを持っていて、メソッドで機能を呼ぶと。
自販機だったらボタンを押す(メソッド)とジュース(データ)が出てくる(機能)と。。。
ちょっと感動したもんだ。
そんな感動するような、リファレンスの解説があったら読みたいもんだ。
0456nobodyさん
03/04/29 22:34ID:???自販機そのものはインスタンスだろ
0457nobodyさん
03/04/30 00:12ID:???リファレンスとは、Cのポインタ相当。
変数に入ってるデータのメモリアドレスを返す。
変数の中に、長文の文字列が入ってるとする。
それを、サブルーチンに引数として渡す場合、すべての長文の文字列をコピーする。
リファレンスで渡すと、文字列の先頭のアドレスだけを渡す。
文字列は、連続したアドレスに入ってるので、先頭のアドレスが分かれば、文字列すべてがわかる。
・・・わかるか?
0458250
03/04/30 01:20ID:???ってかけるとカッコいいしとかいってみる・・・
■ このスレッドは過去ログ倉庫に格納されています