- Perlについての質問箱 63箱目
857 :デフォルトの名無しさん[sage]:2014/11/21(金) 13:00:33.65 ID:zygDXSz1 - >>856
これで気づかないっていう人はいいね。 潜在的なバグが発現したことがないってことだ。相当運がいいよ。 いきなり答えを言うのもなんかつまらないので まずはヒントを。 >>853のコードを実行すると、paramの仕様によっては %aの中身は以下のようになることがあるんだ。 %a = ( key1 => 1, key2 => [1, 2], key3 => 3, 4 => 5, undef => "a", 'ARRAY(0x217efc8)' => 1 key4 => ) ※ 最後キーはあるが値がないので、Reference found where even-sized list expectedの警告になる
|
- クロージャって何がいいの? [転載禁止]©2ch.net
187 :デフォルトの名無しさん[sage]:2014/11/21(金) 13:13:28.47 ID:zygDXSz1 - >>186
ご愁傷さまです。
|
- [転載禁止] 生産性が低いC++で頑張るために必要な知識©2ch.net
96 :デフォルトの名無しさん[sage]:2014/11/21(金) 13:33:53.02 ID:zygDXSz1 - 君と一緒にねるねるねーるね
|
- Perlについての質問箱 63箱目
860 :デフォルトの名無しさん[sage]:2014/11/21(金) 14:06:55.37 ID:zygDXSz1 - コンテキストって凄いもののように思えるかもしれないけど、
実は単なる引数や名前変えることで代用できちゃう。 my $ret = foo(param1, param2); → foo('scalar', param1, param2); → foo(param1, param2); my @ret = foo(param1, param2); → foo(list', param1, param2); → foo_multi(param1, param2); こっちのほうがはるかにわかりやすい
|
- Perlについての質問箱 63箱目
861 :デフォルトの名無しさん[sage]:2014/11/21(金) 14:13:31.65 ID:zygDXSz1 - >>859
他人が作ったモジュールなら仕様を勘違いしていることがあるし、 チームで作っているのならなおさら。 仕様変更で複数の値が買えるようになることだってある。 それに戻ってくる値が一個だけならちゃんと動く。 つまりバグを起こしやすいって話をしている。 例えばこう書いていれば問題なく動く。 my $value1 = $self->param('name1'); my $value2 = $self->param('name2'); my $value3 = $self->param('name3'); my %a = ( key1 => $value1 key2 => $value2. key3 => $value3. ); しかし、一旦テンポラリ変数に入れる必要ないじゃんと思って 直接参照するとバグになる。いや、たまたま値が一個しか帰らなければ 正しく動く。しかし複数の値が変えるとバグになる。 単なるエラーならまだいいが、インジェクション系のセキュリティホールになることだってある。 ユーザーがキーを上書きすることが可能だからだ。
|
- Perlについての質問箱 63箱目
862 :デフォルトの名無しさん[sage]:2014/11/21(金) 14:18:59.72 ID:zygDXSz1 - 例えば、HTTPのヘッダは通常同じ名前のものが複数出てきたりしない。
だから1個だと勘違いしやすい。 そして入力した値を%aのような連想配列に入れるようなコードを書くと ユーザーが任意のキーを作成することが可能になる。 HTTPのパラメータも同じ。 http://example.com?search=abc searchは一個しか来ないとおもいきや複数渡せる。 http://example.com?search=abc&search=def このように通常は一個しか来ないものに対して 複数送ることで最悪セキュリティホールになる。
|
- Perlについての質問箱 63箱目
864 :デフォルトの名無しさん[sage]:2014/11/21(金) 20:40:06.64 ID:zygDXSz1 - >>863
そんなことは知ってる その仕様がバグの元だと言ってる。
|
- Perlについての質問箱 63箱目
865 :デフォルトの名無しさん[sage]:2014/11/21(金) 20:40:55.90 ID:zygDXSz1 - バグの元である上に、大したメリットがない。
|