1 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 22:54:12 ] "The duct tape of the Internet" こと、Perlについての質問箱です。 "There's more than one way to do it" ということで、Perlの奥深さについて皆で語り合い、追求してまいりましょう。 CGIについての質問は板違いです。WEBプログラミング板でどうぞ。 CGIとPerlの区別がつかない人もWEBプログラミング板に行ってください。 (WEBプログラミング板 pc8.2ch.net/php/ ) CGIの質問は答えがPerlと全然関係ない話に帰着する場合が多かったりするのでWEBプログラミング板に行って聞いたほうが得ですよ。 このスレでは(CGI以外の)純粋にPerlのみに関係する質問を取り扱っていこうと思います。 スレ違いの質問にはスルーか、速やかな誘導をお願いします。 www.perl.org/get.html ● 2006/12/21現在の最新版: 5.8.8 ● 2006/12/21現在の開発版: 5.9.3 前スレ Perlについての質問箱 29箱目 pc11.2ch.net/test/read.cgi/tech/1166708139/ リンク集は>>2-3 過去スレは>>4
592 名前:デフォルトの名無しさん mailto:sage [2007/05/16(水) 13:12:16 ] 104で電話番号聞いたら電話帳読めって返すようなもんだもんな
593 名前:デフォルトの名無しさん mailto:sage [2007/05/16(水) 13:14:50 ] >>592 違うだろ。携帯販売店にどっかの会社の電話番号を聞くようなもん。 んなもん、104で聞け、つまりスレ違いだ。
594 名前:デフォルトの名無しさん mailto:sage [2007/05/16(水) 13:24:53 ] ここを104番に例えられると認識している人間がいるのも怖ろしいな。
595 名前:デフォルトの名無しさん mailto:sage [2007/05/16(水) 14:02:54 ] 交番で道を尋ねたら「地図を見れ」ってのがしっくりくる
596 名前:デフォルトの名無しさん mailto:sage [2007/05/16(水) 14:18:25 ] 104や交番は仕事だけど、ここはただの掲示板だ
597 名前:デフォルトの名無しさん mailto:sage [2007/05/16(水) 14:58:15 ] 道に迷っている人に通りすがりの人が「地図板はあそこにある」と言ったら、 別の通りすがりの人が食ってかかっているわけか。 「地図の見方を知ってるのを自慢したいだけ!!」と叫びながら。
598 名前:デフォルトの名無しさん mailto:sage [2007/05/16(水) 15:44:27 ] 質問させて下さい [初めてのPerl 3版]という本を読みながら勉強しているのですが、 3章の練習問題をしていて疑問に思いました。 @list = qw/ a b c d /; print @list . "\n"; #こうすると、リストの個数が表示される。 print @list; #こうすると、リストの内容が表示される。 print @list , "\n"; #こうすると、リストの内容が表示される。 上記のように、3つの記述ほうほうで内容が変わってきます。 私が疑問に思ったのは、どうして"."で連結すると、リストの個数が 表示されるのでしょうか? また、","が急に出てきたのですが、どう いった意味があるのでしょうか? すみませんが、宜しくお願いします。
599 名前:デフォルトの名無しさん mailto:sage [2007/05/16(水) 15:51:33 ] >>565 が暴れてます
600 名前:デフォルトの名無しさん mailto:sage [2007/05/16(水) 15:59:25 ] 義務ってわけじゃないだろうけど質問スレなんだから質問に答えたくない奴は スルーすればいいだけなんじゃねーの? それをわざわざ嫌味ったらしく書き込むから多いから荒れるんだよ。 黙ってろよ。
601 名前:デフォルトの名無しさん mailto:sage [2007/05/16(水) 16:15:12 ] >>598 print @list . "\n"; まず、配列(ここでいう@listね)をprintすると配列の中身をすべて出力するのね。 それで↑は、@listと\nをつなげてひとつの文字列としてる。 配列はスカラ参照するとその要素数を返すから、「配列の要素数+改行」というひとつの文字列として出力される。 print @list; これは上で言ったとおりそのまま配列の中身をぶちまける。 print @list , "\n"; printは出力対象をカンマで区切って複数指定できるのね。 だから、↑の場合は一つ目の例と違って@listと\nは別物として並列に並んでるのね。 print @list; print "\n"; と同じというわけ。 だから配列の中身+改行となる。
602 名前:デフォルトの名無しさん mailto:sage [2007/05/16(水) 16:18:22 ] >>600 逆だろ。「RFCを読め」という回答があっという間に返ってきたのに、 それを気に入らなかった奴が騒いでいる。わざわざ嫌味ったらしくね。 黙っていればいいのにね。
603 名前:598 mailto:sage [2007/05/16(水) 16:32:22 ] >>601 スカラーとして参照されたから、要素数を返したんですね。 詳しく説明していただけたおかげで、理解できたと思います。 ありがとうございました。
604 名前:デフォルトの名無しさん mailto:sage [2007/05/16(水) 16:36:58 ] >>601 部外者だが俺も勉強になった。ありがとう。
605 名前:デフォルトの名無しさん mailto:sage [2007/05/16(水) 17:27:58 ] >>567 と>>568 が発端になっているわけか。 まあみなさん、不足だと思ったら、攻撃しないで補うということで。
606 名前:デフォルトの名無しさん mailto:sage [2007/05/16(水) 19:05:20 ] ボク今夜寝る時、ママにRFC読んでもらうんだ。
607 名前:デフォルトの名無しさん mailto:sage [2007/05/16(水) 19:07:15 ] フーン
608 名前:デフォルトの名無しさん mailto:sage [2007/05/16(水) 19:33:23 ] ⊂二二二( ^ω^)二⊃ フーン
609 名前:デフォルトの名無しさん mailto:sage [2007/05/16(水) 19:43:17 ] まぁ優しい俺が貼ってやるよ ttp://www5d.biglobe.ne.jp/~stssk/rfcjlist.html え、みんなこれ全部読んだの??
610 名前:デフォルトの名無しさん mailto:sage [2007/05/16(水) 19:48:27 ] 荒らしてるのはいつも質問者 これ、豆知識な
611 名前:デフォルトの名無しさん mailto:sage [2007/05/16(水) 19:57:54 ] そうなの?
612 名前:デフォルトの名無しさん mailto:sage [2007/05/16(水) 20:17:47 ] そういえば質問者のフォロー全然ないな
613 名前:デフォルトの名無しさん mailto:sage [2007/05/16(水) 21:26:11 ] 暴れ杉だろう・・・ 業務で使うときでも読まないのかだぜ?
614 名前:デフォルトの名無しさん mailto:sage [2007/05/16(水) 21:34:58 ] さらに優しい俺が、>>565 が指摘した該当文書を>>609 から晒す www.puni.net/~mimori/rfc/rfc2822.txt 次の人: 上の文章からFromの仕様が書いてある文章を見つけ、行番号等の場所を報告 さらに次の人: 的確に抜粋して、ここに書く 以上で当スレのミッションは終了となる。
615 名前:デフォルトの名無しさん mailto:sage [2007/05/16(水) 21:51:39 ] そーいや、番号がすぐ出てくるRFCって822(2822)と1149くらいだな、俺。
616 名前:デフォルトの名無しさん mailto:sage [2007/05/17(木) 00:28:17 ] >>565 は、rfc2822読むのをやめへんでぇ〜
617 名前:デフォルトの名無しさん mailto:sage [2007/05/17(木) 02:12:42 ] RFC自重
618 名前:デフォルトの名無しさん mailto:sage [2007/05/17(木) 04:34:55 ] CRC556
619 名前:デフォルトの名無しさん mailto:sage [2007/05/17(木) 07:08:02 ] そろそろスレ違いで引っ張るの止めないか?… RFC 読もうが読ままいが、perl についての質問に該当しなかった訳だし RTFM ってのは最低限わきまえとく事だし (ようするに俺も RFC 嫁よって思ってる訳だけど)
620 名前:デフォルトの名無しさん mailto:sage [2007/05/17(木) 10:16:00 ] . ______________ | i┬┬┬┬┬┬┬┬┬┬┬┬┬i | | |┼ ,r-l^i ‐┼y'⌒~}ー┼y'⌒~}ー┼| | | |┼と::_;;;:_}┼じ;_;:;ナ┼ヽ;:;:: :;;:;:;)┼| | | |┼┼┼┼┼┼┼┼┼┼┼┼┼| | | |┼f_:::_:;;;り┼{:;;;::_;;う┼( ;;:;:;:"")┼| | | |┼く:;;;_:;;Jー|ーじ;_;:;ナ┼f_::_::;;;;り┼| | | |┼┼┼┼┼┼┼┼┼┼┼┼┼| | |  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ .|  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ とりあえず焼肉でも食って落ち着こうぜ
621 名前:デフォルトの名無しさん mailto:sage [2007/05/17(木) 10:40:54 ] >>609 小説を読むわけじゃないんだから、必要なときに必要な箇所を読むんだよ。
622 名前:デフォルトの名無しさん mailto:sage [2007/05/17(木) 19:06:20 ] つうか今回の事でRFCが頭に入ったww
623 名前:デフォルトの名無しさん mailto:sage [2007/05/17(木) 20:59:23 ] パッケージの名前は「foo」のような小文字にするのか、それとも「Foo」のように 大文字で始めるのか、どちらがいいのでしょうか。 perl5.8.8のライブラリを見るとどちらもあるのですが、Perlの流儀だとどのような命名規則がいいのでしょうか。
624 名前:デフォルトの名無しさん mailto:sage [2007/05/17(木) 21:24:06 ] >623 foo みたいに小文字で始まってるのは pragma 扱いだと思う。
625 名前:デフォルトの名無しさん mailto:sage [2007/05/17(木) 21:28:28 ] 根拠見っけてきた。 perldoc perlmodlib より >Package/Module names are an exception to this rule. Perl informally >reserves lowercase module names for 'pragma' modules like integer >and strict. Other modules normally begin with a capital letter and >use mixed case with no underscores (need to be short and portable).
626 名前:デフォルトの名無しさん mailto:sage [2007/05/17(木) 23:08:09 ] pragmaが何かわかりませんが、とりあえず自作のパッケージは大文字で始めるのがいいということでしょうか。 どうもありがとうございます。
627 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 01:56:34 ] use strictとかは使ったことあるかお?そーいうことだお
628 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 02:52:38 ] pragmaっつーのは端的に言えばインタープリタの動作を変えるもんだ。 よく見かけるのは"strict", "warnings","lib", "overload", "vars", "constant", "blib"あたりかな。 あとは、マルチバイト圏の人が"utf8", "encoding", "open"を使ってたりすることあるな。 P.S 分からないことは恥ではない、分からないことを放置することが恥なのだ
629 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 03:08:16 ] baseも仲間に入れてあげてください;;
630 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 03:14:05 ] あ、めんごw baseはOOで継承するときに使うやつな。 よく使うのに、度忘れしてたw
631 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 20:35:21 ] 有限の整数の集合の中から偶数だけを取りだしてその数を2倍するといった (1 2 3 4 5 6) -> (4 8 12) みたいな処理を簡潔にperlで表現したいなら、どのように書くんでしょうか?
632 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 20:42:42 ] map { $_ * 2 } grep { $_ % 2 == 0 } (1,2,3,4,5,6)
633 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 21:20:39 ] 自作のperl script にドラッグ&ドロップして使いたいんですが、 皆さん、どうされてます? 外部補助ツール等を使用しない方法で、perlのみで行いたいんです。 ググッてもうまくヒットしないので…恐縮ですが教えてください。
634 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 21:22:10 ] >>633 すいません。WindowsXPでactiveperlの環境です。
635 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 21:31:03 ] DropHandlerや{60254CA5-953B-11CF-8C96-00AA00B8708C}でググるといいと思うよ。
636 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 21:39:21 ] >>635 OS側の設定だったんですね。助かりました。
637 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 16:16:37 ] >>632 mapもgrepもおなじものだが、意味的に条件で抽出のときはgrepを使いたくなるな。 式が偽になったものは返値には残らないので map { $_ % 2 == 0 && $_ * 2 } ( 1,2,3,4,5,6); でもOK
638 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 16:46:07 ] いや、それだと空文字がたくさん残るだろ。 map { $_ % 2 ? () : $_ * 2 } (1,2,3,4,5,6); としないと。
639 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 16:47:21 ] >638 =~ s/空文字/空文字列/;
640 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 00:28:19 ] mapとgrepが同じとな?あなおそろしあ
641 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 01:38:54 ] map !($_&1)&&$_<<1||()=> ( 1,2,3,4,5,6) 配列に 0 が入ってたらどうするんだろ 想定外でどうでもいいのかな? これだと(当たり前だけど)要素の値が 0 の時には戻り値無し。
642 名前:631 mailto:sage [2007/05/20(日) 12:31:03 ] ありがとうございます。 Lispを勉強して、次はPerlにスイッチしたいと思っていて、なるべくLispスタイルで プログラミングできるようにしたいと思っているんですが、二つ以上のリストを元にして 結果を返すような (1 2 3 4 5) (6 7 8 9 10) -> ((1 6) (2 7) (3 8) (4 9) (5 10)) といった処理はどうするのでしょうか?mapの使いかたを見ると使えるのは$_だけみたいなのですが。
643 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 12:40:10 ] 普通にmapでできるだろ map { $a = $_; $b = shift @b; 処理 } @a
644 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 12:43:41 ] どうすれば納得するのか知らんが、 とりあえずリファレンス使わないと、リストのリストとかはできんと思うが。
645 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 14:06:29 ] $,=q/,/;$\=qq/\n/; print @$_ for foo([1 .. 5], [6 .. 10]); sub foo { map [map shift @$_, @_], (1 .. (sort map scalar @$_, @_)[-1]) } こんな感じか。
646 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 14:09:46 ] sub foo { map [map shift @$_, @_], (1 .. (sort {$b <=> $a} map scalar @$_, @_)[0]) } 間違えた。
647 名前:デフォルトの名無しさん [2007/05/20(日) 15:07:14 ] >>642 っ[List::MoreUtils]
648 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 15:27:33 ] ある文字列を一文字単位で全部分解して、配列に格納させたいのですがうまくいきません。 (空白も含みます。) $text = 'aあ かf漢字'; 例えば、上の$textを分解して、 @array = ('a', 'あ', ' ', 'か', 'f', '漢', '字'); のような配列を作りたいのです。 splitを使って @array = split(/[\w\s]/, $text); としたのですが、何も格納されずうまく出来ませんでした。 どのようにすれば出来るでしょうか?
649 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 15:35:50 ] use encoding cp932; # ソースの文字コードにあわせる $text = 'aあ かf漢字'; @array = split(//, $text);
650 名前:648 mailto:sage [2007/05/20(日) 15:47:43 ] >>649 何も指定しないと一文字単位で分解されるんですね。splitは。 その後、 while($text){ push(@array, substr($text,0,1,'')); } といったコードを思いついたのですが、 649さんのコードの方がすっきりしてるのでそちらを使わせていただきます。 ありがとうございました。
651 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 16:32:30 ] >>650 俺は初心者で、この前俺もそういうコード考えて使ってみてわかったんだが、 substrは1バイト単位で長さ見てるけど日本語は2バイトコード使ってたりしてて、 結局その>>650 みたいなコードでひらがなやカタカナや漢字取り出すときにsubstr($text,0,1,'')ってところで2バイト中の1バイトしか取り出せなくて中途半端になるんだよな。 2バイト文字限定なら取り出す長さを2バイトにすれば問題無いし、アルファベットや数字は1バイトで問題無いけど。 >>649 のコードなら、俺は大丈夫なのかどうかは知らないけど、なんとなく大丈夫っぽい感じする。
652 名前:デフォルトの名無しさん [2007/05/20(日) 16:39:13 ] >>651 substrのOFFSETやLENGTHの単位は文字数だから、>>650 でも use encodingで文字コードを適切に指定すれば何の問題もないよ。
653 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 16:59:52 ] >>652 トンクス 参考書見て、substrの説明に「文字数ではなくバイト数で取っていることがわかります。日本語の入った文字では使わないようにしましょう」 ってあったから、substrでは永遠に2バイト文字と1バイト数字アルファベットは同時に処理できないものと思ってました。 use encodingで指定すればsubstrでも2バイト文字部分は長さ1となるんですね。 use encodingでコード指定するのが大切ってことを理解しますた。
654 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 17:20:46 ] その機能入ったのはつい最近(といっても5年前だが)だから、古い本だったら書いてないだろうし、 厚みで値段稼いでるような本なら、そのあたりいい加減でも不思議じゃないな。
655 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 17:45:13 ] >>654 なるほど、確かに初版第1刷が2003年ってなってる。 初心者質問ですが my@b=("$a[1]","$a[2]","$a[3]","$a[4]","$a[5]","$a[6]","$a[7]","$a[8]"); ↑ こういう書き方をもっと短く書けませんか? 既に@aには$a[0]や$a[9]から先にも変数が入ってる状態で、$a[1]〜$a[8]までを@bに入れたいです。 $a[1〜8]みたいな表現が存在するなら表現方法を教えてほしいです。
656 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 17:57:06 ] >655 @a[1..8] で OK。 キーワードはスライス。 ところで、なんで "" で囲ってるの?
657 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 17:58:21 ] 文字列化する必要があるんじゃね? my @b = map "$_", @a[1..8];
658 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 18:14:52 ] >>656 >>657 激しくトンクス! そういえばfor(0..7)とか使ってました。 @a[1..8]という書き方があったとは。
659 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 18:23:29 ] $a @a ^これや^これの名前ってなんだっけ?
660 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 18:39:44 ] 普通にドルとアットでいいんじゃない? なんか$でプレフィクスとか見つけたけど。 @は配列ArrayのAを表し $は・・・なんだっけ?Sからはじまるなんかの単語じゃなかったっけ? %は/の左の丸がキーで、/の右の丸が値を示すんだっけ? なんかそんな感じ。 どうせ声出して読まないし気にするまでも無いような・・・
661 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 18:45:22 ] ファニー文字?
662 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 18:57:19 ] ああ、思い出した。$はスカラーのS。
663 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 18:59:10 ] >>659 ,660,661 sigil だと思う。 sigilsと複数形にすることも多いが
664 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 19:10:35 ] ネットショップなんかで自動監視・購入できるスクリプトが組めるらしいのですが どういったものなんでしょう。 役に立ちそうなサイトがあったら教えてください。
665 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 19:44:38 ] >>663 あーそれそれ。さんくす
666 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 20:34:14 ] なんかPerlスゲー人が書く魔法みたいなコードなんか紹介してください 友達が言ってたんですが他の言語だと20行くらいかかりそうな処理も1行で記述できるくらい魔法ちっくなことができるって聞いたんですが本当ですか?
667 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 20:51:05 ] 本当です すべてが魔法なので紹介しきれません
668 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 21:07:49 ] 少なくともCOBOLで20行文の命令を1行にまとめることはできるよ。
669 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 21:14:04 ] 確かにPerlを使えばどんな複雑な処理でも一行でかけるなw
670 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 21:31:15 ] 何行で書けるとかPerlたん変態っぷりはそんなことじゃないだろ
671 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 21:36:44 ] python見習え
672 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 21:46:12 ] >>667-668 もっとやさしく!! >>669 a + b; b + c; c + d; ... はい1行wwwwwとかは禁止なんです >>670 もっとやらしく!!
673 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 22:03:30 ] >>666 では、とっておきの電卓プログラムを紹介しようか。 C++で書くと、何十ステップも必要だろう。 while(<>){print eval($_)}
674 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 22:23:07 ] >>673 カレントディレクトリ以下のファイルがすべて消えました!><
675 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 22:43:53 ] >>672 きもい
676 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 22:50:56 ] それも計算によって実現してるからな
677 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 22:55:32 ] >>674 がマジなのか気になる。 >>673 をしたらキーボードからどんな文も実行できてしまうよな? >>674 を書いて実行してキーボード触らずにマウスで閉じたら何も起きないよな? 恐怖体験アンビリーバブー
678 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 22:56:20 ] ちょっと安価ミスしたが気にしないでくれorz
679 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 23:18:11 ] 1行で書けるかれしれんが、書く人の労力は20行だよ。
680 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 23:30:26 ] でも短く書く技術は知っておきたいかも。 サブルーチンは、多少汚くても短くまとめたいし。 なんか良いサイト無い?
681 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 23:31:39 ] 結局、正規表現アクロバットきぼんってこと何でしょw
682 名前:クロニクル ◆ob60wHXQlc [2007/05/20(日) 23:32:46 ] VISTAでACTIVE PERLをインストールしたいんですが、 Build 820 setup の CustomsetUP のところでInnstlationErroが出るんです。 初心者なのでわからないことがたくさんあります。 以前XPで何度かインストールしたのですが、VISTAになったとたんできなくて 苦労しております。どうかご教授お願いいたします。
683 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 23:34:48 ] >>680 一子相伝も特殊技術だから。
684 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 23:45:25 ] 正規表現使ってアクロバットするのと、正規表現使わずに少し長いの書くのって、 正規表現使ったほうが早いとかある?
685 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 23:48:10 ] そんなの場合によるとしか言いようがないだろ。
686 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 23:51:35 ] >>680 このスレの前の方だけでもいくつかあると思うよ。 過去ログ辿ればもっとあるし。
687 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 00:12:00 ] 結城浩の『Perlクイズ』の過去ログ漁ってみるとか (結城さんではなく回答者が時々アクロバティック)
688 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 15:57:04 ] >>667 のコメントだけで、後はスルーすれば良かったのにな
689 名前:8 [2007/05/21(月) 16:50:18 ] CGIを自由に使えるようになりたくて独学で勉強しようとしたのですがCGIはPERL 記述?だからと思いPERLの詳しくなればわかると思いこの板にきました。 PERLに強くなるにはなにを学べばいいですか?ラクダ本というのがいいとどっかで 見たのですが間違いないですか? そもそもCGIを自由に使えるようになるのはPERLを詳しくなっても意味ないですか? CGIを自由に扱えるようになりたいので勉強の仕方わかる方お願いします。
690 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 16:54:26 ] 日本語がお上手ですね!
691 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 16:57:15 ] >>1 嫁 > CGIについての質問は板違いです。WEBプログラミング板でどうぞ。 > CGIとPerlの区別がつかない人もWEBプログラミング板に行ってください。 > (WEBプログラミング板 pc8.2ch.net/php/ )
692 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 18:50:54 ] >>691 向こうでも相手にされていない件についてw
693 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 19:01:22 ] >689 かわいそうだからマヂレスしてあげるよ 勉強しなほうが身のため
694 名前:8 [2007/05/21(月) 19:01:30 ] 気長に待ちますよ^^
695 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 19:01:48 ] 相手にできる最低レベルってのはあるからな
696 名前:8 [2007/05/21(月) 19:02:41 ] 勉強しなほうが身のため なぜ!?
697 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 19:03:45 ] 日本語でおk
698 名前:8 [2007/05/21(月) 19:07:37 ] 相手にできる最低レベルってのはあるからな 悲しいこと言うなぁ・・
699 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 19:08:32 ] しゃぶれよ
700 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 19:11:06 ] とりあえず句読点を勉強しる!
701 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 19:37:26 ] こういう低レベルな質問はwebprogでやれよ
702 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 19:39:59 ] お前が >>8 氏でないことだけは確かだ。名前欄の詐称を止めろ CGI を覚えるより何より、ここの使い方をまず真鍋
703 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 19:50:23 ] そして>699
704 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 21:19:43 ] >>689 マジレスするのもどうかと思うが、 CGIを勉強したいならラクダ本よりネズミ本がオヌヌメ。 Perlをきちんと習得したいなら、ラクダ本よりリャマ本をまず嫁。 リャマ→ラクダ→ネズミの順で読むといい。 後はWebProg板逝け。
705 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 21:23:45 ] 逝く前にしゃぶれよ
706 名前:8 [2007/05/21(月) 21:24:52 ] ここは恐いインターネッツですね
707 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 21:38:57 ] リャマの次にラクダ読んだら死ぬって タダで読めるPerl本 ttp://www.perl.org/books/library.html ネズミ(初版) ttp://www.oreilly.com/openbook/cgi/ ただリャマだけは小遣い溜めてでも買うべきだと思うんです
708 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 23:06:21 ] 個人的にはリャマの次にCookbookでもいいと思う。 ラクダも読み物として面白いけど、Cookbookのほうが実践的なテクニックを身に付けられるんでないかな。
709 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 23:57:50 ] CookbookもいいけどPBPも読んだほうがいいと思う なんつーか、その、K○NTクローンが増えても困るっつーか
710 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 00:20:38 ] 中途半端な伏字を使うやつは大抵頭が悪い
711 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 00:38:13 ] やっぱ王道は ○ャ○から入って、○○○と○○○○○○○○を併用さ。 ラクダ?○○○○○○c で十分 …中途半端じゃない伏せ字も頭悪い。
712 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 00:52:26 ] Perl Hacksでハァハァする
713 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 00:56:24 ] >>711 > ○ャ○から入って、○○○と○○○○○○○○を併用さ。 ジャバ、コボル、N88BASIC? > ラクダ?○○○○○○c で十分 わがんね。 本題のほうは「なんでバレバレの伏せ字を使う人がいるのか」が昔から不思議。
714 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 01:04:42 ] perldoc
715 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 01:08:17 ] >>713 あえて理由付けするなら、検索に引っかからないため。 まぁ、やってる方の心理としては○○だと思うがw
716 名前:713 mailto:sage [2007/05/22(火) 01:20:11 ] >>714 ボケが思いつかなくて「わがんね」でした。手間をかけさせてごめんなさい。 >>715 うーん、検索ですか。なるほど。 でも、△△△にする○○の大半は××なだけなんでしょうね。
717 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 01:51:29 ] ○○○○、○○○○○○○○。
718 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 02:37:09 ] はじめまして。最近Perlを使い始めた初心者です。 useを使用し、下位ディレクトリにあるモジュールを読み込むには use ディレクトリ名::モジュール名; なのはどの初級者本にも書いてあるのですが、 上位ディレクトリにあるモジュールの読み込み方が分かりません。 パスはどう書けばよろしいのでしょうか?
719 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 03:48:18 ] use lib
720 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 07:22:32 ] >>710 十代後半の女オタクの馴れ合いみたいで気持ち悪いよね。
721 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 08:20:44 ] ○まん○
722 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 13:39:11 ] ○ま○こ
723 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 15:24:14 ] ○まんこ
724 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 15:43:31 ] 8まんこ
725 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 15:58:39 ] レベルの低い会話はwebprogでやれ
726 名前:デフォルトの名無しさん [2007/05/22(火) 16:30:10 ] >>719 ありがとうございました。できました。
727 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 18:07:33 ] >>725 爆笑
728 名前:デフォルトの名無しさん [2007/05/22(火) 18:08:03 ] cgiでPOSTされたデータを標準入力から一度取得した後 同じプログラム内で再度、標準入力から取得することは可能ですか? 既存のプログラムに、入力チェックを追加したいのですが、2回目はデータが空になります(当たり前? 一応、seekしてみたのですが、うまく戻りそうにありません バカな質問している気がしていますが、「そんなことできるワケねぇだろ、バカ」でも良いのでアドバイス下さい
729 名前:デフォルトの名無しさん [2007/05/22(火) 18:11:19 ] ワークの変数にとっといたらいいんじゃないの?
730 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 18:23:30 ] >>728 >>1 嫁
731 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 18:25:33 ] 標準入力がSEEKで戻れたらすごいな 過去に戻れるなんて素敵だぜ
732 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 18:26:16 ] なるほど、WEBプログラミング板で聞くのが良かった内容でしたか すみませんでした そちらで質問してみます
733 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 18:41:44 ] >>731 このコメントだけで十分な説明になってるな
734 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 19:03:04 ] CPAN探せばありそうだが普通に変数に入れといたほうが楽だろうな
735 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 20:34:55 ] リャマ本なんであんなに高いの?
736 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 20:36:07 ] 古本買え
737 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 20:45:58 ] 2版の厚さがちょうどよかったよね(´・ω・)
738 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 21:49:02 ] -P オプション で使えるCのプリプロセッサですが 起動が多少遅くなるので 別な方法がないか教えてもらえませんか 使用用途としては 下記のようなものです 単にifで分けると モジュール部もすべて読み込むようなので 両方ともないとエラーになりました evalで囲めばそれっぽくうごきますが しっくりきません。 #ifdef HOGEHOGE use HOGEHOGE; 〜〜〜 #else use HOGEHOGE2; 〜〜〜 #endif
739 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 22:51:27 ] >>738 UNIVERSAL::require 使えば解決するようなコトじゃないかな?
740 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 22:52:13 ] 質問では、条件で分けたいのはuseだけじゃないっぽいけど: use $ENV{'HOGEHOGE'}; とかして環境変数HOGEHOGEから渡せないかなと思ったがダメだった。
741 名前:738 mailto:sage [2007/05/22(火) 22:58:53 ] >>739-740 趣旨的には 740のとおり useだけじゃなくて 汎用的に使える方法がないかと(まぁ -Pで出来るんですがあんまり標準的じゃないような気がして) 目的としては、環境がある程度違っても ソースを複数管理するのは面倒なので同一ソースで動かしたいです 下記のようなのも出来ると非常に助かります #ifdef hogehoge while(1) { #endif 〜〜〜〜〜 #ifdef hogehoge } #endif
742 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 23:39:45 ] evelじゃちょっと違うよな
743 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 23:41:58 ] BEGIN { eval } かと思ったけどなんか違うよね
744 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 00:20:43 ] よく判らんのだが、 -P 使うからには、pure perl じゃなく C 関係? それとも pure perl でホスト毎に挙動を変更したいの? 前者だったら、 Inline::C と後述を噛み合わせて… 後者だったら、ベタだけど Sys::Hostname で hostname ゲットして BEGIN{if ( $hostname ...){}else{} } あたり? 後者なら、もっとべたべたにソース全般で挙動を分けられるし、 実際やってるけど、前者だったらやろうと云う気にもならぬ。 って素人の口出しすまぬ。
745 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 00:29:53 ] OOで書いて環境依存部分はサブクラスに分けるが良いよ
746 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 00:52:02 ] 俺は環境依存部分は、モジュール化して突っ込んであるなあ ソコでSys::Hostnameは使っているけど、もっと良い手があれば知りたいものだ
747 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 01:16:42 ] 俺はwindowsローカル時はbatファイルで適当に環境変数設定して その環境変数によってunix系の時と動作変えてる。
748 名前:738 mailto:sage [2007/05/23(水) 08:38:37 ] >>744 当面の目標としては PurePerlでmod_perl2(ModPerl::RegistryPrefork)とFastCGIで 同一ソースを使えるようにしたいと思ってます FastCGI対応にするためには 読み込みモジュールの差し替え(CGI->CGI::Fast)とループ処理が増えるので 738,741のようなことができないかなと思った次第です、 良い方法がないかなと
749 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 09:35:25 ] そんな用途かよ Catalystあたりを参考にしれ
750 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 09:49:31 ] なるほどFastCGIか。 Rubyだとわりと簡単にFastCGI対応できるみたい。 Perlでも同じようにできないかな? 既存のCGIを変更無しでFastCGIに ttp://sugi.nemui.org/wiki/%B4%FB%C2%B8%A4%CECGI%A4%F2%CA%D1%B9%B9%CC%B5%A4%B7%A4%C7FastCGI%A4%CB
751 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 09:55:29 ] てか、CatalystとかCGI::Applicationとかのフレームワーク使えばいいじゃん。 Catalyst::Engine::FastCGI search.cpan.org/~mramberg/Catalyst-Runtime-5.7007/lib/Catalyst/Engine/FastCGI.pm CGI::Application::FastCGI search.cpan.org/~naoya/CGI-Application-FastCGI-0.02/lib/CGI/Application/FastCGI.pm
752 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 12:07:10 ] >>738 がなんでわざわざWebProg板からこっちに着たのかわからない
753 名前:デフォルトの名無しさん [2007/05/23(水) 14:12:31 ] すみませんが 質問させてください あるファイル(数万行の数字データ)の上から1行ずつ順番に読み込んで 最終行になるとまた1行目に戻って・・・という作業をしたいのです 途中でプログラムを閉じて再開したときも次の行から開始が可能であれば もう言うことナシですが,残念ながら自分では何とも出来ず 丸2日間ネット上で調べに調べ srand(); open(FILE, "data.txt"); rand($.) < 1 and $line = $_ while <FILE>; close(FILE); $line =~ s/\n//g; とランダムで1行読み込む仕様で妥協するのが限界でした もし上記作業がperlで可能でしたら申し訳ないですが 教えていただけないでしょうか 可能な方いらっしゃいましたら どうかお願いします。
754 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 14:13:46 ] いつ終わるんだそれは
755 名前:753 mailto:sage [2007/05/23(水) 14:27:55 ] すみません イカのような感じで半永久的に作業が続くわけでして・・・^^; print <<"_HTML_"; Content-type: text/html <html><head> <meta http-equiv="refresh" content="5; url=aaa.cgi">
756 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 14:34:48 ] 何行目まで読んだかどこかに書いとけばいいじゃん。
757 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 14:38:03 ] >>755 の「イカ」がどっから出てくるのかがわからん。 とりあえずCGIは置いといて、まずファイルの入力の基本をググって調べればいいんじゃね
758 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 14:38:30 ] 以下、だろ。
759 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 14:47:34 ] イカ=以下、がわからんじゃなくて イカ=print <<・・、がどこから出て来たかわからん、ってことだよ
760 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 14:52:37 ] 続きでなんか書こうとしてるんじゃないの?
761 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 14:54:09 ] >>759 以下のように、が、"<meta http-equiv="refresh" content="5; url=aaa.cgi">" を指してるんじゃないの? 大体、何を言わんとしてるかはわかる
762 名前:753 mailto:sage [2007/05/23(水) 14:56:30 ] わかんないヤツが説明すると伝わりにくいですね すみません・・・ えーっと 5秒おきにaaa.cgiにアクセスしてIEの画面に数字を順番に 表示させたいだけなんです 753で書いた方法で $line の数値を表示させるだけと言えば 伝わりますかね・・・
763 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 15:02:20 ] webprogの所轄だが、行数をどこかに保存すればいいだけだろう? CookieやURIのクエリ部分だとか、サーバ上のファイルとかメモリとか。
764 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 15:02:57 ] とりあえずWebProg板いってこいな
765 名前:753 mailto:sage [2007/05/23(水) 15:05:13 ] 板違いでしたか すみません どっちか悩んだあげくこっちに書いてしまいました お邪魔しました
766 名前:764 mailto:sage [2007/05/23(水) 15:06:45 ] 大体、数万行のテキストデータだとしてもかなりの容量になるだろ 対象マシンのメモリ可哀想だな。 しかも、IEがそのデータを表示仕切る前に IE落ちるだろうし、表示仕切る前に5秒経って更新かかるだろうな。 しかも、更新しようにもかなりの負荷がかかってるからモッサリ。 ブラウザクラッシャーでも作ろうとしてるのか?
767 名前:753 mailto:sage [2007/05/23(水) 15:10:09 ] いえ 表示自体はその数万行のうち上から1行ずつでいいんです 1行目表示して5秒後には2行目・・・みたいな感じで。 順番に表示されるのを見て 手元のデータと比較していくだけの 単調な作業なんです
768 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 15:26:28 ] 表示した行数を覚えておく方法は>>763 でほぼ答えが出てるけど、ファイルの指定行を読むところはTie::Fileとか使えば楽だと思うよ。
769 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 15:56:50 ] ちょっ待って! さっきまで>>753 が居た場所がイカ臭い
770 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 16:12:49 ] 753のやりたいことを考えると、サーバ上で処理させず、 数万行のデータを手元に持ってきてjavascriptで順次表示させた方が増しな気がする。 何行目を表示させているかも、少し離して表示させておけば、中断したときには手書きでメモれば十分だろう。 表示開始行数は引数で与えれば再開できるし。
771 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 17:25:55 ] perlでいいじゃん
772 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 17:34:38 ] "Black Perl" BEFOREHAND: close door, each window & exit; wait until time. open spellbook, study, read (scan, select, tell us); write it, print the hex while each watches, reverse its length, write again; kill spiders, pop them, chop, split, kill them. unlink arms, shift, wait & listen (listening, wait), sort the flock (then, warn the "goats" & kill the "sheep"); kill them, dump qualms, shift moralities, values aside, each one; die sheep! die to reverse the system you accept (reject, respect); next step, kill the next sacrifice, each sacrifice, wait, redo ritual until "all the spirits are pleased"; do it ("as they say"). do it(*everyone***must***participate***in***forbidden**s*e*x*). return last victim; package body; exit crypt (time, times & "half a time") & close it, select (quickly) & warn your next victim; AFTERWORDS: tell nobody. wait, wait until time; wait until next year, next decade; sleep, sleep, die yourself, die at last # Larry Wall これどういう意味?暇だったら訳してくれ
773 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 17:35:38 ] Webサーバー(Webブラウザ)使うのが必要条件なのかにもよるな。 Excelでも十分かもしれん。
774 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 17:42:02 ] local環境でいいんなら、1行読んで、25行ぐらい改行してからprintするだけじゃないの? で、sleep(5)とか
775 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 18:14:28 ] >>773 excel だけど win は一万行平気で開く? cat -n hoge.log | more で十分だったりw
776 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 18:26:06 ] >>772 ラクダ本3版Volume2に訳が出てるお
777 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 18:39:22 ] >>774 本当はそんな感じ(と、行番号カウンタか)でいいんだと思うよ。 Web鯖に吐かせるべき理由があるんだかどーなんだか。
778 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 18:45:09 ] webprog板でgrepとmapだとgrepの方が早いという意見があり確認してみました。 for >= grep > mapって感じみたいなのですがなんでmapだけこんなに遅いのでしょう? ■テストコード use Benchmark qw/cmpthese/; use strict; use warnings; my $LOOP = 100; my @SEED = ('a'..'z','A'..'Z',0..9); my @DATA = map {$SEED[int rand @SEED]} 1..10000; my %TABLE = map {$_=>$SEED[int rand @SEED]} @SEED; cmpthese($LOOP, { #非破壊 'map1' => sub {my @hoge = map { $TABLE{$_} } @DATA; 1;}, 'grep1' => sub {my @hoge;grep push(@hoge,$TABLE{$_}),@DATA;1;}, 'for1' => sub {my @hoge;push(@hoge,$TABLE{$_}) for(@DATA);1;}, #破壊 'map2' => sub {map {$_=$TABLE{$_}} @DATA ;1;}, 'grep2' => sub {grep $_=$TABLE{$_},@DATA;1;}, 'for2' => sub {$_ = $TABLE{$_} for(@DATA);1;}, });
779 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 18:47:30 ] ■結果 1回目 Rate map1 map2 for1 grep1 grep2 for2 map1 25.8/s -- -14% -32% -33% -66% -69% map2 30.1/s 17% -- -21% -22% -60% -64% for1 38.0/s 48% 26% -- -2% -50% -54% grep1 38.6/s 50% 28% 2% -- -49% -53% grep2 75.8/s 194% 152% 99% 96% -- -8% for2 82.6/s 221% 174% 117% 114% 9% -- ■結果 2回目 Rate map1 map2 grep1 for1 grep2 for2 map1 24.6/s -- -16% -33% -33% -71% -71% map2 29.2/s 19% -- -20% -21% -65% -66% grep1 36.6/s 49% 26% -- -1% -56% -57% for1 36.9/s 50% 27% 1% -- -56% -57% grep2 83.3/s 239% 186% 127% 126% -- -3% for2 85.5/s 248% 193% 133% 132% 3% -- ■結果 3回目 Rate map1 map2 grep1 for1 grep2 for2 map1 23.3/s -- -17% -33% -37% -72% -73% map2 27.9/s 20% -- -20% -25% -66% -67% grep1 35.0/s 50% 25% -- -6% -57% -59% for1 37.0/s 59% 33% 6% -- -55% -56% grep2 82.0/s 252% 193% 134% 121% -- -3% for2 84.7/s 264% 203% 142% 129% 3% --
780 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 19:28:11 ] map1が遅いのはでかいリスト返してるから。 一つだけ全く別のことやってりゃそりゃ遅い罠。 map2が遅いのはfor2grep2と違ってブロック評価してるからだと思う。 とりあえず 'map1' => sub { my @hoge; map { push @hoge, $TABLE{$_} } @DATA; 1; }, 'map2' => sub { map $_ = $TABLE{$_} , @DATA; 1; }, に書き換えたらグループごとの速度は大差なくなるはず。 関係ないけど最近のPerlのmapは 同じことやるforeachより速くなったりするのでびっくり。 古いバージョンなら戻り値使わない時は絶対forって言えたんだけどな。
781 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 19:30:42 ] 一応貼っておく Rate grep1 for1 map1 grep2 map2 for2 grep1 19.8/s -- -1% -3% -64% -64% -65% for1 20.0/s 1% -- -2% -64% -64% -65% map1 20.4/s 3% 2% -- -63% -63% -64% grep2 55.2/s 179% 176% 171% -- -1% -3% map2 55.5/s 180% 177% 172% 1% -- -3% for2 57.0/s 188% 185% 180% 3% 3% --
782 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 20:02:21 ] その後の調べで map2はsub {map {$_=$TABLE{$_};1;} @DATA ;1;} とすると順位があがりました。余計なメモリコピーが発生してたみたいです。 さらに>>780 さんの指摘を受けて 'map1' => sub {my @hoge;map push(@hoge,$TABLE{$_}),@DATA; 1;}, 'map2' => sub {map $_=$TABLE{$_},@DATA ;1;}, に変更したところ若干forが優勢っぽいですがほとんど同じ結果になるようになりました。 組み込みの関数なのでperlのバージョンによって変わってくる部分もありそうですね。 テスト環境はperl v5.8.5でした。(書き忘れ) 大変わかりやすい説明ありがとうございました。
783 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 20:05:52 ] 良くわからんがデータベース使え。
784 名前:738 mailto:sage [2007/05/23(水) 21:51:32 ] >>751 Catalystみてみます、サンクス
785 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 01:12:04 ] あーの、恐縮ですが質問なんですけど、 Perlでは初めてオブジェクト指向のコードを書いているのですが、 下記のようなコードでアロー演算子と行入力演算子が併用できなくて困っています。 一度他のローカル変数にファイルハンドルを代入してやればうまくいくのですが、 もっとスマートに、オブジェクトが持つファイルハンドルから行入力する方法はあるのでしょうか。 use strict; sub parse { my $this = shift; my @data = <$this->{fh_lex}>; # 文法エラー # 下のコードなら成功 # my $fh = $this->{fh_lex}; # my @data = <$fh>; for (@data) { ;# 省略 } }
786 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 01:59:16 ] <>をファイル読み込みとして認識させるには、 括弧の中を $fh のような形をしたスカラ変数にしないとダメだから、 一時的に変数を作るしかないね。 my @data = sub{$_=shift;<$_>}->($this->{fh_lex}); とかw
787 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 02:08:24 ] ヒント:<()>
788 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 02:09:52 ] <()> はファイルグロブ。
789 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 02:22:28 ] <${this->{fh_lex}}> とかダメ? 試してないけど。
790 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 02:31:13 ] >>789 ダメだよ。やってみたw <>を放棄した技だけどw my @data = readline $$this{fh_lex} ;
791 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 02:37:14 ] 普通に<>の内部関数のreadline使って、 my @data = readline $this->{fh_lex}; でよかろ。
792 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 04:08:38 ] >>785 別に無理に1行に書かなくても地味に$fhに代入した方がよっぽど明示的で よいコードに見える。 どうしてもっていうんなら、$thisがオブジェクトならオーバーロードを使ってみては?
793 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 18:39:22 ] 遅レスだが >>780 search.cpan.org/~nwclark/perl-5.8.8/pod/perl581delta.pod#Miscellaneous_Enhancements > map in void context is no longer expensive. map is now context aware, > and will not construct a list if called in void context. perlstyle でやるなって言われてるのに、悪い癖を直そうとしない子が あまりに多いから実装側でフォローした、と俺は解釈してる。
794 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 18:48:26 ] 見た目すっきりするからついやっちゃうんだよね・・・
795 名前:デフォルトの名無しさん [2007/05/25(金) 19:11:11 ] 俺すごいだろって思ってついやっちゃうんだよな・・・
796 名前:785 mailto:sage [2007/05/25(金) 22:27:59 ] >>786-792 みなさんどうもありがとうございます。 やはりPerlとはいえ表記上の制約はあるんですね。 にも関わらず他の方法がいくつもあると言うのはさすがですが。 どれを使おうか迷ったのですが、とりあえず今回は、readlineを使うのが一番綺麗に見えたので、それを使わせてもらおうと思います。 本当に勉強になりました。
797 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 02:42:48 ] 長文にて失礼します。 以下の[data.csv]ようなカンマ区切りのデータがあるとします。 横軸がX座標、縦がY座、各格子の数値がZ座標(標高)を示しています。 このデータを、[out.csv]のように変換したいのですが、2次元配列でつまずいてしまい、途方に暮れてしまいました。 どなたかお知恵を授けて下さい。よろしくお願いします。 あと、入力データのうち行頭が"#"で始まる行は無視する、というのはどうすればできるのでしょうか。合わせてご教授いただけると助かります。よろしくお願いします。 [data.csv] , 1, 2, 3, 4 5, 12.63 , 33.82 , 31.71 , 29.73 4, 34.75 , 32.14 , 29.31 , 26.70 3, 33.55 , 30.27 , 27.17 , 23.43 2, 31.02 , 29.42 , 26.65 , 23.61 1, 28.00 , 27.04 , 25.39 , 22.60 [out.csv] X,Y,Z 1,1,28.00 1,2,27.04 1,3,25.39 1,4,22.60 2,1,31.02 2,1,27.04 (中略) 5,3,31.71 5,4,29.73
798 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 03:41:35 ] >>797 宿題乙^^
799 名前:デフォルトの名無しさん [2007/05/26(土) 04:09:08 ] >>797 さてコレをどれくらい短くできるだろうか use strict; open FILE, "data.csv"; my @data; my @index; my @ys; for my $line (<FILE>) { chomp $line; unless (@index) { @index = split(/\s*,\s*/, $line); shift @index; next; } my($y, @d) = split(/\s*,\s*/, $line); push(@ys, $y); for (my $i=0; $i < @d; $i++) { $data[ $index[$i] ][ $y ] = $d[$i]; } } close FILE; open FILE, ">out.csv"; for my $x (@index) { for my $y (@ys) { print FILE "$x, $y, $data[$x][$y]\n"; } }
800 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 08:04:48 ] >>799 use strict; open FILE, "data.csv"; my(@data, @index, @ys); while(<FILE>) { chomp; my($y, @d) = split /\s*,\s*/; @index = @d, next unless @index; push @ys, $y; $data[ $index[$_] ][$y] = $d[$_] for 0..@d-1; } open FILE, ">", "out.csv"; for my $x (sort {$a <=> $b} @index) { for my $y (sort {$a <=> $b} @ys) { print FILE "$x, $y, $data[$x][$y]\n"; } } close FILE;
801 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 08:26:14 ] 一応質問者の為に一行サービスしといたけど。本嫁本。 こんなの例題に出てくるだろが。 open IN, "data.csv" ; open OUT, ">", "out.csv" ; print OUT "X,Y,Z\n" ; (undef,my @index ) = split /,/, do{ $_ = <IN> ; s/\s+//g ; $_ } ; for ( reverse (<IN>) ){ s/\s+//g ; next if /^#/ ; my ( $index, @dat ) = split /,/ ; for my $i ( 0 .. $#dat ){ print OUT join "," ,$index,$index[$i],$dat[$i] . "\n" ; } } close IN ; close OUT ;
802 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 10:48:45 ] >>799-801 おまいらやさしいな
803 名前:797 mailto:sage [2007/05/26(土) 13:30:30 ] >>799-801 皆さん、どうもありがとうございます。 教えていただいたコードを読んで勉強します。 ところで、私のような初心者向けの本にはどんなものがありますか? 現在手元には、「Perlの絵本」といわゆる「らくだ本」の2冊がありますが、前者はまったくの初心者向けで今回の質問の答えは見いだせません。 一方、後者は私には取っつきにくくて、ヒントが書いてあるのかも知れませんが、見つけられませんでした。 なお、Visual BASICとTurbo PASCALはある程度勉強しました。 近くに大きな本屋がないので、現物を手にとって見比べることができません。アドバイスをいただければ幸いです。よろしくお願いします。
804 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 14:26:34 ] リャマ本かクックブックあたり嫁
805 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 15:31:12 ] /(\b\w+)\1/ という正規表現が hogehogeにマッチして /(\b\w+\b)\1/ という正規表現が hoge hogeにマッチしないのは何故なんでしょうか?
806 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 15:36:26 ] * キャプチャされるのは、正規表現ではなくマッチした文字列 * \b は文字を消費しない。
807 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 16:15:33 ] >>803 時間をかけて、「らくだ本」じっくりと2回読めばいい。 1回目は、解らない部分には「?」印を付けて、深追いしない。 2回目は、「?」印を付けた部分を重点的に読む。 その過程がなければ、らくだ本を辞書のように使うことはできない。
808 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 17:09:49 ] リャマ本の第四版まだかなー 本家だと2005年に出てるんだよね ラクダさんも早く新しいの出して欲しいな
809 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 18:15:30 ] そういえば新しいの出るね。 "Mastering Perl" By brian d foy ttp://www.oreilly.com/catalog/9780596527242/
810 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 19:24:22 ] 大変にスマソ ひょっとして use encoding でコード指定すると \w が日本語(文字)にもマッチする仕様?
811 名前:803 mailto:sage [2007/05/26(土) 20:02:47 ] >>807 アドバイス、ありがとうございます。 昔やった受験勉強と同じことですね。腰を据えて勉強します。
812 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 20:17:05 ] >>810 perl + 日本語には興味無いんで調べたが、perlunicode にまんま書いてあるぞ。 o Character classes in regular expressions match characters instead of bytes and match against the character properties specified in the Unicode properties database. "\w" can be used to match a Japanese ideograph, for instance.
813 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 20:27:38 ] >>810 基本的には空白や記号類ではないような文字にマッチする。 通常は全ての言語の文字にマッチするけど、 use locale;すればロカールである程度は制御できるね。
814 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 20:39:14 ] >>812-813 おお、すまそ。そしてありがd 今更だけど jcode.pl からの乗り換えに躓いてました 精進してきます
815 名前:デフォルトの名無しさん [2007/05/26(土) 21:20:04 ] 懐かしいな jcode.pl ってまだあったんだ cgiのもなんかライブラリあったな
816 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 21:22:41 ] cgi-lib.plナツカシス
817 名前:デフォルトの名無しさん [2007/05/26(土) 23:38:11 ] >>816 ああ、それそれ! 名前忘れる位懐かしいw
818 名前:気まぐれアナスイ mailto:お腹いっぱい@気まぐれアナスイ [2007/05/27(日) 01:28:48 ] …。perl…。 perl.といえば、perldl-command.が… !(-_Φ+){yes, So sexy.}
819 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 04:04:33 ] ログファイルを合成する処理で、困っています。 @log=("1.txt","2.txt","3.txt","4.txt"); foreach $filename(@log) { open(LOG,$filename) || &er_("Can't open $filename"); @lines = <LOG>; close(LOG); } @linesの中に、全てのテキスト内容を合成させた物が 入ってほしいのですが、最後に代入した4.txtの内容しか 入ってくれません。なぜでしょうか。 また、foreachで廻すのを条件として、 改造案を指南いただけると嬉しいです。
820 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 04:22:02 ] @lines = <LOG>; の部分を my @tmplines = <LOG>; push(@lines, @tmplines); の2行に置き換えてください。 千奈美に最後のやつしか残らないのは、 @lines = <LOG>; が上書きしてるからです。 だから最後の結果しか残らない。
821 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 06:28:04 ] >>820 ありがとうございます!できました。
822 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 18:20:34 ] cpanで >Are you ready for manual configuration? [yes] 毎回、noを答えるんですけど、これ抑制できないんですか?
823 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 00:37:04 ] >>822 > Are you ready for manual configuration? 俺は個人macもsolarisもyes選択してカスタマイズしたから、 最初にnoを選んだ時の挙動は分らんが、抑制もくそもこれって 最初の一回きりだろ?俺の環境だと出てこないんだけど。 何か変な事やってないか?
824 名前:デフォルトの名無しさん mailto:sage [2007/05/31(木) 15:48:16 ] >>546 の sub flatten(@) { map { ref $_ eq "ARRAY" ? flatten(@$_) : $_ } @_ }」 の flatten(@)は配列以外を引数に取れないということでしょうか? あと @deff = grep{ !{map{$_,1}@FileA }->{$_}}@FileB; のmap{$_,1}@FileAなのですが{$_,1}はどういう式なのでしょうか
825 名前:デフォルトの名無しさん mailto:sage [2007/05/31(木) 16:55:50 ] >>824 1) プロトタイプの@は残りの引数をすべてリストとして取り込むという意味。 (@) にはあまり意味がないんだけど、perlsubでも読んどき。 2) map の引数のBLOCKはリストコンテキストで評価されるから、 $_, 1 は $_ と 1 からなるリスト。
826 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 10:44:52 ] はじめまして、 Perl 5.005_03 の世界から来ました。こんにちは。 最近の Perl でコマンドラインオプションの処理をする場合の標準を教えてください。
827 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 11:02:55 ] >>826 Getopt::StdかGetopt::Longを使うのがいいよ。どっちも標準モジュール。 Getopt::LongはGetopt::Stdの機能も含むからGetopt::Longのほうがおすすめ。
828 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 11:04:23 ] @_ で済まなかったっけか
829 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 12:00:06 ] >>828 自分でちまちまとオプション解析するならそれでいいけどな。
830 名前:829 mailto:sage [2007/06/01(金) 12:01:08 ] いや、そんなことない。だまされるところだった。
831 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 13:21:53 ] >>827 早速 Getopt::Long 使ってみました。使いやすそうですね。 御回答ありがとうございます。 >>828 すみません、ちょっと私には意味わからなかったのでスルーさせてくださいー。
832 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 16:08:31 ] >>825 ありがとうございます
833 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 16:39:29 ] my $text = join '', <>; $text =~ s/\s*//g; を1行でする方法ないですか. 1行でなくとも見た目がよければいいです。 あとファイルの最初にmy宣言すると、その後のサブルーチン内でも 使えてしまうのですが、これは何か対策はありますでしょうか
834 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 16:51:36 ] (my $text = join '', <>) =~ s/\s*//g; とか出来んわけではないが分けて書いたほうが見た目はよいだろ。 > あとファイルの最初にmy宣言すると、その後のサブルーチン内でも > 使えてしまうのですが、これは何か対策はありますでしょうか ファイルスコープのmyはグローバル変数だから、そういうもの。 嫌なら中括弧で囲っとけばいい。
835 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 16:58:41 ] なるほど、ありがとうございました
836 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 17:06:21 ] my $text = join '', map {s/\s*//g; $_} (<>); このぐらいなら、まあいい?
837 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 17:10:06 ] $/使った方が速いと思うけど、2文にならざるを得ないな。
838 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 17:17:50 ] my $text = do{ local $/ ; $_ = <> ; s/\s*//g ; $_ } ; 実質4行w
839 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 19:21:13 ] s/\s*//g, $text.=$_ for <>;
840 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 19:23:33 ] ああ、my付けなきゃいけないのか my $text = join "", map { s/\s*//;$_} <>;
841 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 19:43:02 ] (my $text = do {local $/; <>}) =~ s/\s+//g;
842 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 20:35:25 ] >>837 pu
843 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 23:04:43 ] ぶっちゃけ遊びとしても「1行で書く」っていうのは意味ないと思うw
844 名前:デフォルトの名無しさん [2007/06/01(金) 23:14:33 ] >>826-831 @ARGV を使うだけなのにご苦労様
845 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 23:45:56 ] >>844 >826 名前:デフォルトの名無しさん:2007/06/01(金) 10:44:52 >はじめまして、 Perl 5.005_03 の世界から来ました。こんにちは。 > >最近の Perl でコマンドラインオプションの処理をする場合の標準を教えてください。 >コマンドラインオプションの処理をする >コマンドラインオプションの処理をする >コマンドラインオプションの処理をする
846 名前:デフォルトの名無しさん mailto:sage [2007/06/02(土) 00:07:52 ] おまんこライン
847 名前:デフォルトの名無しさん [2007/06/02(土) 01:45:09 ] >>845 え!?もっと詳しく!!
848 名前:デフォルトの名無しさん mailto:sage [2007/06/02(土) 02:56:27 ] 単純にコマンドライン引数を見たいなら@ARGVを順番に見ていけばいいけど、 >>826 は -Rrt -l --color=auto とかのコマンドラインオプションをパースしたいってことだろ。 学習目的ならいざ知らずそんなもんいちいち自前で処理する奴はマゾ。
849 名前:デフォルトの名無しさん mailto:sage [2007/06/02(土) 12:28:03 ] そうそう、Perl 5.005_03が先端だった頃の、 use Getopt::Stdするだけでプラス0.4秒 という時代とは違うんだから。
850 名前:デフォルトの名無しさん mailto:sage [2007/06/03(日) 18:25:59 ] 文字列の全角英数→半角変換って $j =~ tr/0-9a-zA-Z/0-9a-zA-Z/; じゃダメなん? 5.8.4で文字列はutf-8なんだけど。
851 名前:デフォルトの名無しさん mailto:sage [2007/06/03(日) 18:42:50 ] >>850 use utf8 した上でなら、それでいいんじゃね? 確かめてないけど。
852 名前:850 mailto:sage [2007/06/03(日) 19:02:08 ] >>851 英数以外が化けるんだよなぁ…
853 名前:デフォルトの名無しさん mailto:sage [2007/06/03(日) 19:13:39 ] 化けてるってのはどうやって確認してるの?
854 名前:デフォルトの名無しさん mailto:sage [2007/06/03(日) 19:15:52 ] 日本語のマルチバイトはsjis、euc-jp、utf-8(他にもいろいろ)あるわけで、 スクリプトのソースや$jに入っているcharsetが何かがわかんないと答えようがないわな。
855 名前:850 mailto:sage [2007/06/03(日) 19:28:12 ] 853>> 入力と出力をprintして見比べてるけどマズかった?
856 名前:デフォルトの名無しさん mailto:sage [2007/06/03(日) 19:31:18 ] それは大いにマズい。 $jの文字コード/UTFフラグの有無で挙動が変わってくる。
857 名前:850 mailto:sage [2007/06/03(日) 19:37:59 ] >>854 入力、ソースはutf-8(のつもり)。 もしかしたら違うかもしれないから、入力のエンコード方式の調べ方があるなら教えてくれ。 >>856 マズいのか。
858 名前:デフォルトの名無しさん mailto:sage [2007/06/03(日) 19:49:23 ] use Devel::Peek; Dump $j;
859 名前:850 mailto:sage [2007/06/03(日) 20:02:10 ] >>858 dumpの出力の読み方は? ググってみたけど、どう読んでいいのかサッパリ。
860 名前:デフォルトの名無しさん mailto:sage [2007/06/03(日) 20:06:37 ] なんか要領がつかめないんだけど、 入力ソースはなんなわけ?
861 名前:850 mailto:sage [2007/06/03(日) 20:13:48 ] >>860 適当なサイトから拾ってきたフィード。
862 名前:デフォルトの名無しさん mailto:sage [2007/06/03(日) 20:18:46 ] binmodeでストリームに適当なレイヤをかぶせるか、 Encode::decodeに通して適切にutf-8フラグが立つようにせにゃならん。
863 名前:850 mailto:sage [2007/06/03(日) 22:06:39 ] >>862 $j = decode('utf-8', $j); の1行通したらうまくいった。ありがと。
864 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 13:51:27 ] ねえ。これから態度の悪い質問者には答えない様にしろよ。 付け上がって調子乗ってくるのがオチなんだからさ。
865 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 14:05:21 ] 俺が正規表現でボコボコにしてやんよ ∧_∧ ( ・ω・)=つ≡つ (っ ≡つ=つ / ) s/.*/ババババ/g ( / ̄∪
866 名前:デフォルトの名無しさん [2007/06/04(月) 14:35:29 ] >>864 付け上がっているのはどっちですか? ここは質問箱でしょ? 質問してください、というスレなんでしょ? 質問者あってのスレなんですよ。 そんな逆切れ見たいなことを言っていないで、 質問してもらったら「質問してくださってありがとう」くらい言ったらどうですか!
867 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 15:48:30 ] これは酷い釣り糸
868 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 16:27:29 ] >>866 とっとと質問せんかボケ
869 名前:デフォルトの名無しさん [2007/06/04(月) 17:02:53 ] >>868 質問があったら質問しますよ。 自分の至らなさを指摘されたからって、急に喧嘩腰にならないでください。 頭の悪い人はいちいち無駄な書き込みをしなくていいです。
870 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 17:07:09 ] >>866 何が質問者あってだよ。回答者があってだろ。 回答者が居ないと何も出来ない癖に。 後 >>1 にも書いてあるけどここは "Perlの奥深さについて皆で語り合い、追求する"スレ。 低レベルな質問と会話はwebprog板でお願いします。
871 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 17:14:03 ] >>869 無いんなら今すぐ作れや 俺は無職で一日中暇なんじゃアホ
872 名前:デフォルトの名無しさん [2007/06/04(月) 17:15:39 ] 「>>1 にも書いてあるけど」などという書き出しで あたかも「みんなの意見」であるように強調しておきながら、 結局はラスト1行で単なる頭の悪い煽り屋さんであることをばらしてしまっていますね。 何だかんだいいつつ、自分の「低レベルな会話」は全面的に許してしまっている時点で、 説得力はゼロですね。修行を積んで出直しましょう。
873 名前:デフォルトの名無しさん [2007/06/04(月) 17:19:05 ] >>871 暇なら自分で質問を作って自分で回答していればいいじゃないですか。 内容によっては決して無意味ではありませんよ。 高度な質問と高度な回答をセットで提供するぶんには、結構喜ばれると思います。 とはいえ、無職の能無しがそういう問答を自演するのは難しいでしょうが…。
874 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 17:21:42 ] 皆の意見として言ったつもりは無いな。建前のような物。 ついでに俺は許してないよ? WebProgに案内してるだけ。 お前も個人叩きをするタダの頭の悪い煽り屋にしか 見えないんだが、本文に対する反論は結局ナシなのかな?
875 名前:デフォルトの名無しさん [2007/06/04(月) 17:28:38 ] >>874 なるほど、自分で自分を許していないのですね。 ではあなたが黙れば解決です。あなたにできる最大の「低レベルな会話の排除」ですね! あと、「本文」というのは面白い言い方だと思います。 相手に突っ込まれて、いかに馬鹿なことを言っていたかが自覚できた途端に そこを蜥蜴の尻尾みたいに切り捨てて、「ノーダメージだよーん」ということにするのですね。
876 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 17:34:27 ] どうでもいい議論はよそでやれよ。
877 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 17:40:23 ] 定期的に沸いてる奴だろw ほっとけ
878 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 17:53:57 ] >>875 んーそうじゃないな。あくまでwebprog板でやれと希望してるだけだ。 本文って言い方そんなに面白いかな? お前に言われた事は自覚した、 とする。その次の段階の話だ。その次の話が出来なければただの 煽り合いで終わってしまうだろう? 後俺は120%黙る気は無いので宜しく。
879 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 17:55:19 ] >>864-878 お前らまとめて詞ね
880 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 18:01:04 ] >>878 低レベルな質問と会話はwebprog板でお願いします。
881 名前:デフォルトの名無しさん [2007/06/04(月) 18:07:51 ] まぁ、こんなもんでしょう。 「ここは "Perlの奥深さについて皆で語り合い、追求する"スレ」であるという理由で 「低レベルな質問と会話はwebprog板でお願い」していた人間も、 つまらないプライドをちょっと傷つけられたら、Perlの奥深さとまるで関係のない低レベルな会話だと自覚しつつも 「120%黙る気は無い」とまで言い切ってしまうのですよ。 俺はやっていいけどお前はダメ、の精神で物事を動かせると思ってるボクちゃんってこんな感じなんです。
882 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 18:14:12 ] スーパーキチガイタイム
883 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 18:14:54 ] なんか、ここぞとばかりに言い負かそうとしてるが、それも違う。 俺は毎回このスレで変な奴が出る度に相手してやってるし、 俺自身もwebprogに行く気なんかハナから無い訳で。本音と建前ってやつだな。 ついでに言うとさっさと僕の"本文"に反論してくれませんか。
884 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 18:17:40 ] webprog板じゃなくてもいいから議論なら他スレでやれよ
885 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 18:18:35 ] >>883 相手すんないっとるんじゃボケ。
886 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 18:34:14 ] > 俺は毎回このスレで変な奴が出る度に相手してやってるし、 やめてください。
887 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 18:43:06 ] >>883 > 俺は毎回このスレで変な奴が出る度に相手してやってるし、 かんべんして(><;)
888 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 19:08:39 ] これだな。 ttp://www.so-net.ne.jp/vivre/kokoro/psyqa1087.html
889 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 19:33:07 ] 自分が一番変な奴だという自覚が無いんだなw こんだけ嫌われまくってもきづかないほうに賭ける
890 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 20:04:26 ] 殆ど一人でやってるように見えるんだけど。
891 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 20:18:16 ] >>890 ということにしたいわけですね。
892 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 20:22:43 ] バレたか・・・
893 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 21:33:09 ] バロスw
894 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 21:50:35 ] 自演荒らしのImageMagick君ってこれと同一人物っぽいなw www.gac.jp/article/index.php?stats=question&category=12&id=20208&command=msg 2chなんかに来ずにここで教えてクン続けてればよかったのに
895 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 21:59:04 ] さすがにそこまでストーキングっぽいことしなくてもいいのに・・・
896 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 22:45:50 ] >>894 どっちもImage-Magi'c'になっててワラタ 借りてる鯖はlolipopかな?
897 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 23:15:20 ] 質問します! open FH,"/hoge/hoge.txt" #hoge.txtを開く while (<FH>) { #FHファイルを行単位で読み込んでいく $Str = $_; #変数Strにデフォルトで入力やパターンマッチになる特殊変数を代入 if( $Str =~ /__\w+__/g ){ #@??? if( $Str =~ /__KEYWORD__/ ){ #A??? $Str =~ s/__KEYWORD__/KEY/; #__KEYWORD__をKEYに置換する } } print $str; } close FH; コメントの部分の@とAの説明がうまくできません。 @は=~の部分がわからず、Aは/と/で挟まなくて__KEYWORD__だけでも 同じ結果が返ってくるのではないかと思って悩んでいます。 よろしかった教えて頂けないでしょうか?
898 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 23:24:58 ] %hoge; $age = {%hoge}; というコードがあった場合、最後の代入で行われているのは 無名ハッシュコンストラクタの中でハッシュを評価することで、ハッシュのキーと値 からなるリストが生成され、それらを要素とする無名ハッシュが生成されて、そのリファレンスが $ageに代入される。つまり%hogeのコピーのリファレンスを代入しているという考えでいいんでしょうか?
899 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 23:46:46 ] >>897 Perl 正規表現でググればウンザリするほど答えが見つかると思います >>898 そうです
900 名前:デフォルトの名無しさん [2007/06/04(月) 23:47:18 ] なるほど、自分で自分を許していないのですね。 ではあなたが黙れば解決です。あなたにできる最大の「低レベルな会話の排除」ですね! あと、「本文」というのは面白い言い方だと思います。 相手に突っ込まれて、いかに馬鹿なことを言っていたかが自覚できた途端に そこを蜥蜴の尻尾みたいに切り捨てて、「ノーダメージだよーん」ということにするのですね。
901 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 00:05:57 ] >>897 なんかすごい無駄だらけなソースだなあ・・・
902 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 00:31:50 ] ノーダメージだよーん
903 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 00:33:23 ] >>900 なんかすごい無駄だらけな文だなあ・・・
904 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 00:42:53 ] なんかすごい無駄だらけなスレだなあ・・・
905 名前:デフォルトの名無しさん [2007/06/05(火) 00:48:01 ] 粘着荒らし酷いな
906 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 00:52:00 ] 粘着した方が勝ち!
907 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 01:14:38 ] ノーダメージだよーん
908 名前:デフォルトの名無しさん [2007/06/05(火) 01:34:33 ] 荒らしはやめてー><
909 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 04:03:09 ] 変な奴が現れたら一人も漏らさず全部相手するように それがこのスレのお約束
910 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 09:34:09 ] >>909 お前、もう帰っていいぞ。
911 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 10:21:08 ] 次スレのテンプレのことについて、次の提案があるのだが、どうだろうか? 1.過去スレを入れるのはやめる。(前スレだけがあればよいと思う) 2.「エラーなどの問題への対処の相談には、問題が再現する完全かつ最短のソースを 作成して下さい。作成する過程で問題が解決する場合も多いです。」 との注意書きを >>1 に入れる。 (質問者が必要な情報を小出しにするのを防ぐため) 3.>>10 をテンプレを入れる(但し、内容は、以下のように少し変更する)。 --------------------------------------------------------- # 【Perl 日本語処理の基礎の基礎】 # このレスは、Windows の ActivePerl で日本語処理を行う場合のテンプレートです。 # このレスの内容をそのまま、UTF8 形式のソースファイルに保存して下さい。 # 入出力ともシフトJIS形式のファイルまたはDOS窓を想定しています。 # まず、以下の行を先頭に入れて下さい。 use utf8; use open IO => ":encoding(cp932)"; binmode STDIN => ":encoding(cp932)"; binmode STDOUT => ":encoding(cp932)"; binmode STDERR => ":encoding(cp932)"; # 次に、あなたが実行したい処理の内容を入れて下さい。 print "SJISには、「十表貼申予暴」のようなダメ文字がある。\n"; sleep(1); # 以上の内容は、日本語処理が解らない人でも、とりあえず日本語処理ができてしまう # おまじないです。条件が異なる場合の対処方法は、ご自分で勉強して下さい。
912 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 11:44:29 ] あれ?過去スレ保管所みたいなのなかったっけ?
913 名前:デフォルトの名無しさん [2007/06/06(水) 12:20:20 ] ttp://namahage.dip.jp/blog/archive/2007/06/06/98399.aspx