CGI を書くときには 有名なとほほさんの
http://www.tohoho-web.com/cgi/wwwperl.txt のように
環境変数を直接読むのが普通です。
ただ、近頃は、CGI.pm を使うの方法も増えているようです。
でも、聞いた話によると、CGI,pmを読み込む分、環境変数を直接扱うより遅くなるそうですし、
使えない環境もあるそうです。
なんか、CGI.pmのマニュアル見ても難しそうだし、結局、CGI.pmを使うメリットというのは何なのでしょう?
有名なって…
目を覆いたくなるような悲惨なスクリプトだな。
開いた瞬間に拒絶反応起こしたwwwww
とほほさんより有名なサイトを作れない雑魚どもは黙れ
528 :
523:2006/01/12(木) 01:32:10
スレ違いすみませんでした。
WEBプログラミング板で聞き直します。
でも、とほほさんのスクリプトって、そんなに酷いのでしょうか?
みんなここを見て勉強しているはずですけど。
とほほさんより良いサイトがあれば教えてください。
>>526 >とほほさんより有名なサイトを作れない雑魚どもは黙れ
とほほにもKENTにもWeb裏技にも世話になったし感謝もしてるけど
今となってはどうしようもなく汚く移植性にも再利用性にも欠ける
最悪スクリプトなのは確かだ。
かつては先生として、今は反面教師として役に立っているwww
再利用性があれば良いってもんでもないけどな
と、移植性や再利用性が自己目的化して、本来の目的を
達成できない大量のJavaだけプログラマを見ていると思う
531 :
523:2006/01/12(木) 01:45:10
昔は良かったけど近頃は酷くなったということなのでしょうか?
技術力がマイナス成長したということ?
あまり、あり得ない気がするのですが。
ここが悪いというのであれば、反面教師でないサイトを具体的に教えてもらいたいのですが。
533 :
523:2006/01/12(木) 02:01:11
テンプレにあった
http://www.site-cooler.com/kwl/perl/ を見てみましたが、とほほさんのところが悪くて、ここが良いといわれる理由がわかりません。
そもそも、OLE使って Excel を使うとかソケット使ってメールを送るとか、難しいことは書いてあるのに、
肝心のCGI の説明が全くありません。
普通にCGIを使うだけならとほほさんのところが一番良いように見えるのですが。
本に関しては、今すぐ見れないので何とも言えないのですが....
>>533 自分が良いと思ったら他を否定してないで信じて学べ。
とほほで勉強してPerlでいろいろ作って2年ぐらいしたら
KENTやとほほ流のやり方の限界がきっと見えてくる。
すぐ正解を求めないで、もっといろいろ勉強することだ。
とりわけ、こんなところにカキコしている暇があるなら
1ステップでもコードを書いたほうがいい。そしてコードを膨らませて
取り返しの付かないような失敗もするべきだな。
とほほさん最高!!
煽りしかできない根暗オタクどもは逝ってよし!
私的にPerお勉強サイトはsmartが一番良いと思うけどね。
537 :
523:2006/01/12(木) 02:51:36
>534
http://www.site-cooler.com/kwl/perl/ を否定するつもりは有りませんでした。
もし、否定しているように見えたのならすみません。
# どちらかというと、否定されているのは とほほさん のような....
でも、マジで、どの辺がどうダメなのか具体的に教えて欲しいのです。
ダメだダメだといわれるのに、どこが悪いかわからないと、勉強しようがないじゃないですか?
# とほほさんに対する単なるヒガミってことは無いですよね?
>>537 >>529とかに書いてある。推測だけど、今となっては…ってのは
何にも知らない頃はわからなかった悪いところがわかるようになった、ってことでは。
入門編としてはわかりやすいと思うけど門から先に入るにはちょっとね。
ここはとほほさんを妬むクズの溜まり場
まともな話ができるWebProg板に行こうぜ!
初心者でもわかりやすく説明するにはあれぐらいが妥当じゃないか。
KENTもPerl初心者の頃は行単位の処理がわかりやすかった。
$hoge = "/foo/bar";
use lib $hoge;
のようなことをしたいのですが、このようにすると
use lib $hoge; のとこどでエラーになってしまいます。
use lib 変数というのはできないのでしょうか?
WebProg板ではあのコードが御神体
>534
そんなことを言っていると、とほほを手本にした糞スクリプトが大量に発生してしまう。
(既に大量発生しているのだが)
確かに、向上心のあるヤツならがんばって、そのうち限界が見えて来るかもしれない。
だが、ほとんどの人間はがんばりもせず、やり方に疑いも持たずに糞スクリプトを日々生産するだけだ。
>541
use が実行されるタイミングは、$hoge="/foo/bar"より前になるので、できない。
>>543 若いものがその体たらくではわしらの時代もまだまだ安泰じゃのう。
ガッハッハッハ
───大原巌@月下の棋士
板違いの話は相手する方も問題だな。無視しろよ。
板違い質問に対しては誘導以外はレス不可とテンプレに書いてくれ。
わけがわからない質問者よりわかってる分悪質だ。
カカオかよwwwwwwwwww
>>537 とほほの方法は非常に仕組みを理解しやすい反面、環境変数決め打ちなので
・参照できない、或いは存在しない環境変数
・参照した結果なにも入っていない環境変数
を判定できない。
具体的なところではCONTENT_LENGTHやCONTENT-TYPEはCGIの場合
POSTでデータが送信されないとそもそも存在しないわけだが、
件のスクリプトでは存在して空文字列が入っているように見えてしまう。
また、
・指定していないが実は存在する環境変数
・サーバのバージョンアップなどで新しく追加された環境変数
もキャッチアップできない。
print "Content-Type: text/plain\n\n";print "$_ = ",$ENV{$_},"\n" for (sort keys %ENV);
こんなワンライナで、参照可能な全環境変数を確認できるし、
Content-Typeにtext/plainを利用すればタグ出力も不要だし
ターミナルからコマンドで確認する場合も楽だ。
(1行目を読み飛ばせば良いだけだからな)
まずそんなことはないと思うが絶対無いとは言い切れない
「どこかの環境変数に"</xmp>"という文字列が入っていたら?」
「どこかの環境変数に悪意のvbsやJavaScriptが入っていたら?」
という潜在問題への対処でもある。
こういうのは本やWebを読んでるだけじゃダメでたくさんスクリプト
書いて、ハマって、解決しないと身に付かないし、そもそも経験則
なので、blogなどに散見されるがまとまったFAQにはなりにくいんだ。
>>607 じゃ売ればいいじゃん
♪高値で掴んで走り出す 行く先もわからぬまま
暗い夜の帳の中へ
これ以上損し出したくないと 損切った昨日の引けに
自由になれた気がした その日の夜
perldoc perldebug してみたところ、デバッガの起動例として、
> $ perl -d -e 42
というのがありました。
この 42 って一体何なんでしょうか?
「銀河ヒッチハイクガイド」と関係ありますか?
553 :
デフォルトの名無しさん:2006/01/12(木) 16:12:56
data.txtとdata1.txtを単純に以下のように連結しdata3.txtに書き出す方法を教えてください。
よろしくお願いいたします。
data.txt data1.txt
1,山田,A 1,山田さん,10
2,鈴木,B 2,鈴木さん,15
data3.txt
1,山田,A,1,山田さん,10
2,鈴木,B,2,鈴木さん,15
1. おもむろにテキストエディタでdata.txtを開く
2. 置換で行末に , を付ける
3. data1.txtを開き、全て選択してコピーする
4. data.txtに矩形貼り付けする
5. 名前を付けて保存でdata3.txtを作成する
Excel
冬休みの宿題か?
#!/usr/bin/perl
use strict;
use warnings;
use IO::File;
my %data1= parse('data1.txt');
my %data2= parse('data2.txt');
my @keys= unique( keys %data1, keys %data2 );
my $fh= new IO::File('data3.txt','>');
for( sort @keys ){
my $key= $_;
my @data1= @{ $data1{$key} || [] };
my @data2= @{ $data2{$key} || [] };
print $fh join(',',map {nval($_)} ($key,@data1[1..2],@data2[0..2]))."\n";
}
sub nval{defined $_[0] ? $_[0] : ''}
sub unique{my %t;grep !$t{$_}++,@_}
sub parse {
my $file= shift;
my $fh= new IO::File( $file ) || die("$file:$!");
my %r= ();
while(<$fh>){
chomp();
my @data = split /,/,$_;
$r{ $data[0] }= \@data;
}
return wantarray ? %r : \%r;
}
557 :
553:2006/01/12(木) 16:36:17
558 :
553:2006/01/12(木) 16:43:58
>>556 おーっ すごーい。
556さん 感動です。感謝申し上げます。
宿題ではないです。有り難うございました 。
そんなもん paste -d, data.txt data1.txt で終わりじゃねーか。
>>559 Perl のスレだからな。
open eyes, pop or die;
open mind, pop or die;
chomp, print, print "\054".
<eyes> for @your = <mind>
ポエムキタ-
なんか無理に問題を難しくしてないか?
open IN1,"data.txt"; open IN2,"data1.txt"; open OUT,">data3.txt";
while(<IN1>){chomp; print OUT $_ . ',' . <IN2>;}
close OUT; close IN2; close IN1;
じゃダメなのか?
まあこんなことは俺も迷わず
>>559と同じことをするけど。
1列目がIDでマージするのかと(日ごろそういう作業が多いので)勝手に思い込んでましたOTL
567 :
523:2006/01/12(木) 23:42:17
>549
確かに前半部分は
print "Content-Type: text/plain\n\n";print "$_ = ",$ENV{$_},"\n" for (sort keys %ENV);
で済むし、書き方がスマートで無いことはわかりました。
スレ違いなのに、ありがとうございました。
568 :
523:2006/01/12(木) 23:43:51
スレ違いなのはわかっていますが、最後に一つだけ教えてください。
とほほさんのコードで、もっともよく使うのは以下の部分です。
if ($ENV{'REQUEST_METHOD'} eq "POST") {
read(STDIN, $query_string, $ENV{'CONTENT_LENGTH'});
} else {
$query_string = $ENV{'QUERY_STRING'};
}
@a = split(/&/, $query_string);
foreach $a (@a) {
($name, $value) = split(/=/, $a);
$value =~ tr/+/ /;
$value =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("C", hex($1))/eg;
print "$name = $value\n";
$FORM{$name} = $value;
}
これが最悪とおっしゃる方々に質問です。
これを、最良の書き方をすればどうなりますか?
WebProg板で普通のコードが最悪とまで言われているのがいまだに理解できないのです。
「最悪」「反面教師」とまで言っておきながら、どこが悪いのか549以外は指摘しないし、
とほほさんを否定するばかりで、とほほさん以上のサイトを紹介してくれないですし。
とほほ信者うぜぇ
>>568 それは別に普通のコードだと思うけど…
妙にmap{}とか使ったりしてるコードの方が読みにくい
ま、色々なスレを数年ROMれば分かるようになる。
>568
この板にいるのは口先で悪口言っているだけで、実際自分では何もできない煽りばっかりなんだから、
あんまりまじめに相手するなよ。
>>568 コーディングに限った話をすればフォーマットの"C"が無駄なくらいだな
Content-Lengthの最大値が無いのでメモリ食い潰し
DoS攻撃を受けるな
readのエラーチェックが無いから入力が途中で切れたり
したらCGIの内容によっては大変なことになるかもね
>>568 > これが最悪とおっしゃる方々に質問です。
> これを、最良の書き方をすればどうなりますか?
自分で「最良の書き方」を考えても車輪の再発明どころか
劣化版ができあがるだけなので世の中で広く使われている
モジュールを使います。Perlに限ったことではありません。
ブラウザ別Cookieの解析やマルチパートが必要になったら
それもとほほの実装をコピペして使わないといけない。
てゆうかあるのか?w
フォームの値はデコードしてるのに名前はデコードしないのか
た
し
ま
り
参
て
盛り上がっ
580 :
デフォルトの名無しさん:2006/01/13(金) 02:01:46
とほほって有名なのか?全然知らんかったけど.
で
>>568 のコード現代的な Perl としてはいまいち.
簡単にいって,
1. use strict; がない (コンパイル時のチェックがきかない)
2. CGI, CGI::Util モジュールの再実装
3. my を使ってない,あと変数名がいまいち
がだめ.いま perldoc 見れない環境だからうろおぼえでかくけど普通↓だろ.
use strict; # この行がないのは基本的にだめ
use CGI;
use CGI::Util;
my $q = CGI->new;
my @names = $q->param;
foreach $name (@name) {
my $value = CGI::Util::unescape($q->param($name));
print "$name = $value\n";
$FORM{$name} = $value;
}
581 :
580:2006/01/13(金) 02:04:06
あぁぁぁネボけて挙げてしまった…もうねるわ
処理内容としても一対一で翻訳したので微妙だがなー
582 :
551:2006/01/13(金) 02:32:32
>>552 読んでもよくわからないのですが・・・
一応確認なのですが、
42 でなくても、 0 でも 1 でも 100000 でも効能は変わらんのですよね?
>>(512+64+4+2)
もう1回読め。
584 :
583:2006/01/13(金) 04:40:07
>>568 なんでperl4から5に移り変わる前後に思考停止してそれ以上向上しようとしない人達を
信じてこだわっているのか自分にはよくわからないんだけど...
膨大なモジュールの中から標準モジュールとして選ばれ、多く人から検証されているモジュールをなぜ否定するんですか?
そしてより少ない人からしか検証されていないコードを良しとするのですか?
広く知れ渡っている設計モデルやデザインパターンを否定し、あえてスパゲッティーになりやすい冗長ないコードを書き続けるのはなぜですか?
なぜ、バグの混入が少しでも少なくなるように提供されそして、使う事を推奨されているてる機能を使わず、
たびたびバグを発生させるのですか?(使っていてもバグは発生するのに...)
なぜ、同じコードを何度も(コピペだろうけど)書こうとするのですか?
なぜ、10行コーディングすれば済むプログラムをわざわざ100行かけてコーディングしようとするのですか?
色々考えそして経験していけばそのうちわかると思う。
586 :
551:2006/01/13(金) 05:02:43
587 :
551:2006/01/13(金) 05:07:41
あ、 perl 5.005 の頃から 42 とあるので違いますね。
まあとりあえず数字に深い意味はないことがわかったので良しということで。
590 :
549:2006/01/13(金) 12:44:01
>>568 説明すると長くなるから
ttp://perldoc.jp/docs/perl/5.6.1/perlfaq9.podの How do I decode a CGI form?の項を1000回読め。
とほほのコードがどうしてまずいのかがよ〜く解るだろう。
ついでにCGI.pmはpure perlだから読んでみるとよかろう。
もし君が解読しきれなくても本当に正しくフォームデコード
するというのはどんなに大変なことなのかぐらいは解るだろう。
CGI/util.pmのunescapeメソッドを読むだけでも君は
ここで「とほほのコードはWebProg板では普通のコード」
と言い切ってしまったことをとても恥ずかしく思うようになるはずだ。
cgi.pmのマニュアルがよく解らないというのはオブジェクト指向や
参照渡しがよく解ってないからじゃないのかな。
cgi.pmにはcgi-lib.plもどきの関数インターフェースもあるので
Webを漁って探してみてくれ。日本語訳もあるよ。
まあ頑張れ。
なんだ?ここはCGI.pm信者ばっかなのか?
あんなクソ重くて不要な機能テンコ盛りのモジュールのどこがいいんだか
こればかりは車輪の再発明させてもらったよ
プギャプギャ━━━━m9(^Д^≡^Д^)9m━━━━ッ!!!!
信者とかそうじゃないけどな
やりたいようにやればいいんじゃない?プゲラッチョ
信者ということにしてしまわないと自分の居場所がないんだよ。
そっとしておいてやれ。
595 :
591:2006/01/13(金) 14:37:17
だってあんなクソモジュール、信者以外の誰が使うの?
マジで教えてほしいんだけど、頼む
俺もCGIモジュールはあんま好きじゃないな
だからって自分で書いたらその糞よりもっと糞になっちゃうような気がするんだが
軽けりゃいいのよぉ
こうしてセキュリティホールが日々生まれているわけだな
どこまでセキュリティホールって言うんだか
私も CGI.pm は重い、というか、あまり使わない機能がてんこもりな気がしています。
かと言って車輪を再発明するのはいやなので、既存ので良いのがあれば良いのですが、
基本的な機能だけの機能限定版とか、必要なときに必要な機能だけを use するとか、
そういうのでおすすめなものがあれば教えていただきたいです。
一昔前のマシンスペックならまだしも
今時重いとか何言っちゃってんの?
うちのサーバは一昔前のスペックですが
■テストコード
use strict;
use warnings;
use Benchmark qw(:all);
## テスト2ではコメントアウトをはずす
# use CGI;
# use CGI::Lite;
my $count= 10000;
sub use2 {
delete $INC{ my $pkg = shift };
eval "use $pkg;";#テスト2ではコメントアウトする
return $pkg;
}
sub func {my$p=use2(shift);my$o=$p->new();}
timethese($count, {
'CGI'=> sub {func('CGI')},
'CGI::Lite'=> sub {func('CGI::Lite')}
});
1;
__END__
■テスト環境
OS :CentOS4.2
CPU:AMD Duron 1GHz
MEM:256MB
■テスト結果1
Benchmark: timing 10000 iterations of CGI, CGI::Lite...
CGI: 9 wallclock secs ( 9.18 usr + 0.00 sys = 9.18 CPU) @ 1089.32/s (n=10000)
CGI::Lite: 6 wallclock secs ( 5.94 usr + 0.00 sys = 5.94 CPU) @ 1683.50/s (n=10000)
■テスト結果2
Benchmark: timing 10000 iterations of CGI, CGI::Lite...
CGI: 3 wallclock secs ( 3.18 usr + 0.01 sys = 3.19 CPU) @ 3134.80/s (n=10000)
CGI::Lite: 1 wallclock secs ( 0.66 usr + 0.00 sys = 0.66 CPU) @ 15151.52/s (n=10000)
秒間1000回以上実行できるんですけど...重いですかね?
塵も積もればなんとやら
オーバーヘッドを考えてない馬鹿発見
お前も釣りが好きだな
>CPU:AMD Duron 1GHz
>MEM:256MB
高スペック杉
>>604 use される時や new() の中でやってる処理の内容が全然違うから
そんなの比較しても何の意味も無いよ。
オレはTemplate Toolkit使ってるのでCGI.pmのオーバヘッドなんてゴミみたいなもんだぜ。
use CGI;
($u, $s) = times();
print $u + $s, "\n";
これで十分なベンチだろ
ちなみに俺の環境(Cel2.4G + 512MB ActivePerl5.8 WinXP)だと
0.14〜0.155で安定しとる
CGI自体のオーバーヘッドに比べればネコパンチ程度だよ。
塵も積もればはわかるが事実上デフォルトなモジュールなんで
なるべく使うようにしてる
multipartなんかの処理も論理的に書かれてるし。
それとコンソールから
./abc.pl mode=preview&name=taro
でフォームと同様に値を取れるのでデバッグ時にも便利。
CGI.pm自体は仕方が無いけど
他モジュールでCGI.pmへの依存度が高いのはなんだかなとは思う
それこそCGI::Applicationなんかquery、header、cookie位なんだからリファクタして欲しい(他人任せ)
では次のご質問どうぞ。
いずれにしても自分で書くのはクソという結論には変わりない
とほほのコピペともなれば尚更無意味
あっ、でも遊びで書いてる人はいいのかな
>>610 それのどこが高スペックなんだ・・・
今時ノートPCでもそれ以上あるし、サーバ用途ならむしろ
低スペックだっつーの
ああ言えばこう言う
622 :
523:2006/01/13(金) 23:33:37
CGI.pm を使う最良のコードになるかを示して欲しかったのですが、
「CGI.pm を使う」というだけで、実際にCGI.pmを使ったコードを
書いたのは 結局 >580さんだけですね。
この >580 のコードには
>574 さんの指摘した「Content-Lengthの最大値が無いのでメモリ食い潰し」
>575 さんの指摘した「readのエラーチェック」
>578 さんの指摘した「フォームの値はデコードしてるのに名前はデコードしないの」
というのは対応済みなのでしょうか?
>585 「そしてより少ない人からしか検証されていないコードを良しとするのですか?」
google で検索した結果
とほほ CGI の検索結果のうち 日本語のページ 約 338,000 件
CGI.pm の検索結果のうち 日本語のページ 約 32,000 件
一桁以上違いますね。
「知名度は質と比例しない」と言われてしまえばそれまでですけど。
623 :
523:2006/01/13(金) 23:34:09
とはいえ、何となく、CGI.pmを使ったほうが良いという理由もわかってきました。
以前は「勉強しろ」「何年か使い続ければわかる」「それぐらいもわからないのか」
と言った抽象的な精神論みたいなコトばっかり言われて、どこが悪いのか、
さっぱりわかりませんでした。
どこが悪いかも指摘せずに、そんな言い方をされても、簡単には納得できないのは
普通だと思います。
間違っているかもしれませんが、自分の理解としては、
とほほさんのやり方は「最悪」と言うよりも......不完全?...というか、足りない?..
...というか漏れがある?....みたいな雰囲気なんですね。
でも、なんで有名サイトはCGI.pmを使っってないんでしょう?
とほほさんとか KENT とか、みんなCGI.pm を使ってません。
偉そうなことを言ってるけど、CGI.pm使ってるのはまだまだ少数派だからな。
以前より衰えたとはいえ、主流はまだまだとほほ系だよ。
Perl 5.8 が主流になりつつある今、
敢えて 5.005 をひきずったコードを参考にすることはないっしょ。
5年前なら「とりあえず KENT やとほほのコードを見れ」で良かったかも知れんけど。
>623
>でも、なんで有名サイトはCGI.pmを使っってないんでしょう?
>とほほさんとか KENT とか、みんなCGI.pm を使ってません。
なんであんなサイトがなぜ有名なのか、こっちが聞きたい。
>>623 CGI.pmがデフォで置かれてないサーバもあるし、みんながそうしているから。
今はどうなっているか知らないけどURI unescapeもなぜか効率の悪くて汚いコードが驚くほど出回ってた。
CGI界の不思議。
628 :
520:2006/01/13(金) 23:45:51
>521
cygwinのshellで実行しているので、それなないです。
>522 よくエラーメッセージを読んで解決しました。
open passwd, "../../etc/passwd"#<-----------------相対パス
or die "How did you get logged in ? ($!)";
while (<passwd>) {
chomp;
if (/^Administrator/) {
print "eureka!";
}
}
相対パスじゃないとダメみたいです。
絶対パスはなんでダメなんでしょう。
これはcygwinのperlの仕様なんでしょうか?
スレ違いならごめんなさい。
>>521 >cygwinのshellで実行しているので、それなないです。
perl -v で確認したのか?
>>626 どういうサイトのほうが有名になるべきなのか教えていただけますでしょうか?
もういいじゃない
ずっととほほのコード使ってればいいと思うよ
どうせ中学生の趣味プログラミングだろうし
その昔、BASICのGOTOプログラミングに夢中になった
子供たちと同じだと思えば実に微笑ましい
632 :
580:2006/01/14(土) 01:12:01
>>622 基本的に貴方の示したコードを 1:1 に直訳しただけですからね.
CONTENT_LENGTH -> $CGI::POST_MAX=1024; # 1024 バイトに制限
read のエラーチェック -> 十分ではないですが,標準でされてます.
デコード -> CGI::Util::uscape() 使ってください
正直とほほとか KENT とかは一瞥しただけでコメントしかねますが,
かわりにオススメの Perl 入門を…
1. Learning Perl(O'reilly 入門 Perl)
Windows ユーザーなら Win32 のほうを.2. 以降は結構高度なので,まずこれを飽きるまで読むといいですよ.
2. Programming Perl(邦訳:プログラミング言語 Perl )
3. Advanced Perl (邦訳:実用 Perl プログラミング)
4. Object Oriented Perl (邦訳:オブジェクト指向 Perl マスターコース)
今は Perl Best Practice を読んでます.これはすごくイイ.
633 :
580:2006/01/14(土) 01:12:55
あぁぁぁ,また age ちゃった…もう消えまつ
>とほほ CGI の検索結果のうち 日本語のページ 約 338,000 件
なんで"日本語のページ"?
簡単な判断基準を教えてやろう use string; がなかったら読む価値なしの場合がほとんど
何故とほほが有名かというと、本当に正しく作らないと
困るような重要なWebプログラムは、そもそもPerl+CGIで
書かれないから。例外はいくつもあるけどね。MovebleTypeは
Perlだっけ。
だから、PerlのCGIプログラムを探すと必然的にどうでもいい
コードばかりザックザック出てくるわけですw
ハカーに攻撃されても困らないからいい! ちょっと負荷が
掛かったらポシャルくらいは別に気にしない! プログラムの
メンテナンスなんて不要! バグなんて知るか! そういう
場合はとほほ式のプログラムを作るといいでしょう。
あ、皮肉じゃあ無いですよ。適材適所ってことです。
×string ○strict
mod_perl使わない程度の開発案件とか
1年くらいで使わなくなる程度の案件なら
冗長(というかいい加減に)書くこともあるし
時と場合だよねぇ
>>623 > 以前は「勉強しろ」「何年か使い続ければわかる」「それぐらいもわからないのか」
> と言った抽象的な精神論みたいなコトばっかり言われて、どこが悪いのか、
> さっぱりわかりませんでした。
知りたい側が成長しなきゃ理解できないことのほうが世の中多いんだよ。
「今の自分がどんなに未熟でも、説明のほうがちゃんとしていればどんな物事も理解できるはず」
っていう間違った信念持ってない?
>それぐらいもわからないのか
これでどういう成長を期待してるんだかw
オフトピだが、>640に一言。
知らせる側がきちんと説明しないと理解してもらえないことの方が世の中多いんだよ。
「説明がどんなに酷くても、自分が正しければ相手は理解するはず」
っていう間違った信念持ってない?
たいていの場合、どんなに正しくても、権限を持っているお偉いさんたちに、わかりやすく説明できないと、
予算が取れないのですよ。
逆に、どんなに間違っていても、わかりやすく説明して、納得してもらえると、あっさりハンコもらえる。
君も大きくなって、苦労したららわかると思うよ。
>>640 > 以前は「勉強しろ」「何年か使い続ければわかる」「それぐらいもわからないのか」
> と言った抽象的な精神論みたいなコトばっかり言われて、どこが悪いのか、
これで伸びる奴も居れば、辞める奴もいる。
まあ発奮させるにしても下手な煽り方ではあるな。
644 :
520:2006/01/14(土) 05:40:07
>629
申し訳ありません、嘘ついていました。
perl -vで確認したところ、
This is perl, v5.8.6 built for MSWin32-x86-multi-thread
(with 3 registered patches, see perl -V for more detail)
Copyright 1987-2004, Larry Wall
Binary build 811 provided by ActiveState Corp.
http://www.ActiveState.com ActiveState is a division of Sophos.
Built Dec 13 2004 09:52:01
略)
Active State社のものでした。
さらに、パスは
/cygdrive/c/Perl/bin/perlでした。
私は、cygwinのperlでなく、Active〜のを使っていたようです。
それが原因か調査してみます。
645 :
640:2006/01/14(土) 06:44:45
>>642 > っていう間違った信念持ってない?
持ってないよ。
ていうか、唐突にまったく関係ない話を始められても困っちゃうな。
646 :
640:2006/01/14(土) 07:14:32
>>643 といっても仕方ないんだよな。
学習者の理解度より数段階先の話や、経験から思い知ったことへの対策の重要性を、
「現時点の学習者」に技術面で理解させ、納得させるのは至難だもん。
その辺は学習者にコツコツとステップアップしてもらうしかない。
ちなみに君のすぐ上に、主人公もゴールもまったく異なる話を始めて俺に噛み付いてる人が
いるんだけど、この人のラスト一行って、ものを理解するための必要事項として
「経験を積む」ことを挙げるという、俺の主張とまったく同じ内容になってるんだよね。
一体何に噛み付きたかったんだろw
647 :
523:2006/01/14(土) 08:24:49
>580さん
とほほ方式はココがダメ!と指摘されているのに、CGI.pm方式で書いても、
同じ問題が残っているように感じたので質問させてもらいました。
・CGI.pmで書いても書き方によってはとほほ方式で指摘された問題が残る場合がある。
・ただし、その問題解決のための関数は既に用意されている。
ということですね。
オススメの Perl 入門まで教えていただき、ありがとうございます。
(邦訳って...なにか、英語の原書を薦められてるような気も....)
週末、O'reilly 入門 Perl を買ってきます。
これまでの意見で一番参考になりました。ありがとうございました。
648 :
523:2006/01/14(土) 08:28:08
>>640 成長しないと理解できないことが多いことは痛いほど承知してます。
ただ、2chで全く理由を示さないまま否定されても、
単なる煽りなのか、本当に問題があるのか判断できないのです。
たとえば、2chで
「Perl はダメだ。 Rakuda のほうがいい。理由? そんなの勉強すればわかる」
と言われて、Perlをやめて Rakuda を勉強する人は少ないと思うのです。
実際、まだみなさんの説明が完全に理解出来ているとは言えません。
でも、568 以降の書込はきちんと悪い理由を示してもらっているので、
煽りではなさそうだということがわかったし、なんとなくCGI.pmを使った
ほうが良さそうだとも思えるようになりました。
これからCGI.pmの使い方とか勉強していこうと思います。
いつか、理解できるようになったら、とほほ方式を頭ごなしに否定するのでなく、
「この点がこんな風に悪いんだよ」と説明できるようになりたいです。
スレ違いの上、チラシの裏ですみませんでした。