- 1 名前:デフォルトの名無しさん mailto:sage [2008/09/21(日) 12:22:12 ]
- "The duct tape of the Internet" こと、Perlについての質問箱です。
"There's more than one way to do it" ということで、 Perlの奥深さについて皆で語り合い、追求してまいりましょう。 CGIについての質問は板違いです。WEBプログラミング板でどうぞ。 CGIとPerlの区別がつかない人もWEBプログラミング板に行ってください。 ( WEBプログラミング板 pc11.2ch.net/php/ ) CGIの質問は答えが Perlと全然関係ない話に帰着する場合が 多かったりするのでWEBプログラミング板に行って聞いたほうが得ですよ。 このスレでは(CGI以外の)純粋にPerlのみに関係する質問を取り扱っていこうと思います。 スレ違いの質問にはスルーか、速やかな誘導をお願いします。 www.perl.org/get.html ● 2008/09/21 現在の最新版(安定版): 5.10.0 ● 2008/09/21 現在の開発版: 5.9.5 ▼ 前スレ Perlについての質問箱 37箱目 pc11.2ch.net/test/read.cgi/tech/1218449440/ リンク集は>>2-3 Perl 日本語処理の基礎の基礎 >>4 過去スレは>>5-6 あたり
- 604 名前:デフォルトの名無しさん mailto:sage [2008/12/03(水) 13:26:44 ]
- >>603
www.kt.rim.or.jp/~kbk/perl-5.8/perlfaq7.html#what_s_the_difference_between_calling_a_function_as__foo_and_foo__ perldoc.jp/docs/perl/5.10.0/perlsub.pod
- 605 名前:デフォルトの名無しさん mailto:sage [2008/12/03(水) 13:54:41 ]
- >>604
ありがとうございました。 よくわかりませんでしたが・・・。付けるに超したことはないのかな。
- 606 名前:デフォルトの名無しさん mailto:sage [2008/12/03(水) 15:36:25 ]
- >>605
組込み関数を全て覚えてて関数名ダブらない自信があるんなら付けてなくてもいいけど、 それまでは付けた方が良いってリャマの人が言ってた! アンパーサンドなしじゃ関数名がダブったら組込み関数の方を呼びに行っちゃうからね。
- 607 名前:デフォルトの名無しさん mailto:sage [2008/12/03(水) 17:05:47 ]
- PBPでは付けるなって言ってるな。
(サブルーチンのリファレンスが欲しい時以外)
- 608 名前:デフォルトの名無しさん mailto:sage [2008/12/03(水) 17:33:41 ]
- CPANあたりみても"&"つけてない方が圧倒的に多いし、使えるからといって
組み込み関数とだぶった名前つけたら読みにくくなるだけじゃないか。 あと、サブルーチン呼び出しの&の有無は完全に等価ではなくて、プロトタイプ まわりや引数を省略したときの振る舞いなんかが違うので注意な。 sub f(\@) { my($x) = @_; print join(",", @$x), "\n"; } @array = (1, 2, 3); f(@array); # 1,2,3 &f(@array); # 空文字列 sub g { my(@x) = @_; print join(",", @x), "\n"; } sub g1 {g;} sub g2 {&g;} g1(1,2,3); # 空文字列 g2(1,2,3); # 1,2,3
- 609 名前:デフォルトの名無しさん mailto:sage [2008/12/03(水) 17:43:06 ]
- いや普通は付けないが
Perl初心者は慣れるまでは付けるようにしておけ、 という事だよリャマ本
- 610 名前:デフォルトの名無しさん mailto:sage [2008/12/03(水) 18:52:12 ]
- バッドノウハウ論議って楽しいよな
- 611 名前:デフォルトの名無しさん mailto:sage [2008/12/03(水) 21:10:02 ]
- 初心者っぽく見えるから俺はつけない
- 612 名前:デフォルトの名無しさん mailto:sage [2008/12/03(水) 22:10:49 ]
- シンタックスハイライトのついたエディタ使えば組み込みとダブるなんて
意識して書かない限りやらないだろ・・・
- 613 名前:デフォルトの名無しさん [2008/12/04(木) 12:16:49 ]
- >>608
> sub f(\@) { > my($x) = @_; > print join(",", @$x), "\n"; > } > > @array = (1, 2, 3); > &f(@array); # 空文字列 この結果、ひどいな。。。 いや、昔の perl だと普通か。。。
- 614 名前:デフォルトの名無しさん mailto:sage [2008/12/04(木) 12:40:56 ]
- >>613
プロトタイプ指定は「組込関数のように振る舞える」のが肝なので、 わざわざ & を付けて区別するのは何を意図してるの?って感じだ。 ヘンな言葉遣いをすればヘンに解釈されるってだけじゃん。
- 615 名前:デフォルトの名無しさん mailto:sage [2008/12/04(木) 14:10:34 ]
- >>614
初心者が 「慣れないうちは&をつけとこっと」 って思って勉強が進む。そのうち関数プロトタイプのことを知り、試す。 「あれ?」 っていうストーリー。
- 616 名前:デフォルトの名無しさん mailto:sage [2008/12/04(木) 16:17:28 ]
- &も()も必ず付ける。それが俺のジャスティス。
- 617 名前:デフォルトの名無しさん mailto:sage [2008/12/04(木) 16:19:21 ]
- 必ずつける人はPythonにでも行った方が幸せになれる
- 618 名前:デフォルトの名無しさん [2008/12/04(木) 17:02:44 ]
- ppm install DBD-mysql
するとないって言われるんだが・・俺だけ?? 情報求むm(_ _)m
- 619 名前:デフォルトの名無しさん mailto:sage [2008/12/04(木) 18:12:16 ]
- ――なにが幸せかわからないのです。本当にどんな辛いことでもそれが正しい道を
進む中での出来事なら、峠の上り下りもみんな本当の幸いに近づく一歩ずつですから。
- 620 名前:デフォルトの名無しさん mailto:sage [2008/12/04(木) 18:33:06 ]
- >>618
「DBD-mysql PPM リポジトリ」でググッて好きなページを参照して。
- 621 名前:デフォルトの名無しさん mailto:sage [2008/12/04(木) 21:58:48 ]
- 1から99までに含まれる奇数を出力するプログラムを書いてみたんですけど
これ以上短くすることは可能ですか? print$_%2?"$_ ":()for 1..99
- 622 名前:デフォルトの名無しさん mailto:sage [2008/12/04(木) 22:08:38 ]
- $_%2&& print for 1..99
- 623 名前:デフォルトの名無しさん mailto:sage [2008/12/04(木) 22:22:24 ]
- print $_*2+1,' 'for 0..49
- 624 名前:621 [2008/12/04(木) 22:46:56 ]
- >>622
即レスありがとうございます なるほど!! でもそれだと半角スペースがないですよね? できれば半角スペースは入れたかったんですけど… >>623 ありがとうございます 普通に足していく方法ですか 確かに短くなりますねw うまく説明できないんですけど演算を上手くつかって短くしたいんですよね 説明不足ですみませんでした
- 625 名前:デフォルトの名無しさん mailto:sage [2008/12/04(木) 23:03:57 ]
- print$_%2?$_:' 'for 1..99
- 626 名前:デフォルトの名無しさん [2008/12/04(木) 23:59:40 ]
- >>620
ありがとうございますm(_ _)m
- 627 名前:621 mailto:sage [2008/12/05(金) 00:59:21 ]
- >>625
ありがとうございます 偽の場合の式をうまく使ってますね 何か書かないといけないから空のリストを置いてたんですけど これだと無駄がない感じになりますね
- 628 名前:デフォルトの名無しさん mailto:sage [2008/12/05(金) 02:11:14 ]
- $,=" ";print 1..99
- 629 名前:デフォルトの名無しさん mailto:sage [2008/12/05(金) 02:14:04 ]
- 痛たたた……
- 630 名前:デフォルトの名無しさん mailto:sage [2008/12/05(金) 02:16:48 ]
- あ、奇数か。スマソ
$,=" ";print grep{$_&1}0..99 短くないな…
|

|