1 名前:nobodyさん mailto:sage [2008/02/25(月) 19:25:51 ID:???] Perlのコーディングで困ってる人のスレです。 【投稿する際の注意】 質問するときは内容をよく吟味してから投稿してください。 「コマンドの意味がわかんない」とかはマニュアル見ましょう。 回答者さんは何でも屋じゃありません。 1: 自分はこういう事がしたい。 2: それでこんな風にやってみたが・・・ 3: こんなエラーが出て上手く行かなかった。 最低でも1と3が無いと誰も答えられないよ。 良い回答は良い質問から。一緒に勉強しましょう。 お勧めサイトは >2 以降 前スレ pc11.2ch.net/test/read.cgi/php/1189939783/ 過去ログ倉庫 ttp://user.ftth100.com/mirrorhenkan/perl/
513 名前:nobodyさん mailto:sage [2008/05/19(月) 20:03:43 ID:???] ローカルで試そうとしてるやつが、 どうしようもない素人を名乗るなよ。 向上心ねぇのか
514 名前:nobodyさん mailto:sage [2008/05/19(月) 20:16:06 ID:???] >>512 www.bribes.org/perl/ppmdir.html ここへいってら。 それができたら、こっちも回っておくように。 theoryx5.uwinnipeg.ca/ppms/
515 名前:nobodyさん [2008/05/19(月) 20:18:47 ID:82E4EJS9] 514さんありがとうございます。 読んでます。
516 名前:nobodyさん [2008/05/19(月) 21:08:55 ID:82E4EJS9] やっぱりエラーになります(涙
517 名前:nobodyさん mailto:sage [2008/05/19(月) 21:35:03 ID:???] リポジトリを増やしたのだからインストールできるはずだが。 掲示板なんだから、レスに主語と述語をはっきり書いてくれ。 とりあえず、頭にエラーが出たのか?
518 名前:nobodyさん mailto:sage [2008/05/19(月) 22:17:16 ID:???] 良く読んでないけど、 スタート→すべてのプログラム→ActivePerl→Perl Package Managerで 必要なものをクリック、クリック!した方が楽で簡単だよ。
519 名前:nobodyさん [2008/05/19(月) 23:01:51 ID:82E4EJS9] perl package managerの中に GDが見当たらないんです。 コマンドプロンプトで CPANから install GDってしても できないんです。 GD/image.pmが@INCに無いっていうエラーが出るんです。517さん。
520 名前:nobodyさん mailto:sage [2008/05/19(月) 23:13:22 ID:???] >>519 >>514 サイトをよく読んでppmにリポジトリを追加すると、GD 2.39がインストールできるようになる。 ちゃんとリポジトリを追加したか? それでも出ないというのなら、ppmに問題があることになる。
521 名前:nobodyさん mailto:sage [2008/05/19(月) 23:23:58 ID:???] ttp://mikiho.jp/memo/?log=20070111_141552 serach のとろを s GD としてくださいな これでも出来なければ諦めてください サポートしきれないです
522 名前:nobodyさん mailto:sage [2008/05/20(火) 01:25:53 ID:???] pub.ne.jp/wakapon/?entry_id=82091 Perl 5.8ならなんか面倒そうなんだけどこれかな?
523 名前:nobodyさん [2008/05/20(火) 03:52:12 ID:U/T3y6km] ここ見て、Win用のGD-2.39来てるのかと思い、threory58に行くも2.35しかないじゃないか!?ぷんぷん。 ふと、PPM-Repositoriesを0.14に上げて見るとbribesなるレポがあるので、これを見に行くと、 おおー、結構新しいの来てるじゃないか〜と、調子にのってperl areaのmoduleもUpしまくる。 しかし、Compress-ZlibをUpすると、Bandleされてたversionを上書きしてしまい、 それ以降ppmがtar.gzファイルを展開できなくなってしまった。(今まで見たことないエラーでPPMが落ちる) とゆうことで、今やっと再インストールと、(自分のよく使う)各種モジュールのインストール、最新版へのUpデートが終わった。 なんとか、Compress-Zlibも2.010に上げる事ができた。 ふう、疲れたぜ・・・・。
524 名前:nobodyさん mailto:sage [2008/05/20(火) 04:15:25 ID:???] そうなんだお疲れちゃん
525 名前:nobodyさん [2008/05/20(火) 14:16:09 ID:XrCi5l42] 519です。 いろいろサポートいただいて、できました。 ほんとに感謝してます。ありがとうです。
526 名前:nobodyさん mailto:sage [2008/05/21(水) 00:33:37 ID:???] phpのexplodeみたいに、 正規表現を使わずに高速に動作するsplitの代わりはないでしょうか?
527 名前:nobodyさん mailto:sage [2008/05/21(水) 01:39:24 ID:???] substrでループさせる自前の関数でも作れば?
528 名前:nobodyさん mailto:sage [2008/05/21(水) 01:41:57 ID:???] それって速いのかな。。 indexとsubstrを併用してちょっと試してみるか。
529 名前:nobodyさん [2008/05/21(水) 11:18:20 ID:crauFAgn] モジュールが一切入っていないレンタルサーバで、xmlを読み込もうとしています。 ググってみると、どこもXMLとLWPというモジュールを読み込む事が前提になっているようなのですが、 何も無い状態でXML
530 名前:529 mailto:sage [2008/05/21(水) 11:19:42 ID:???] すみません途中で送信してしまいました…orz モジュールが何も無い状態でXMLを読み込むために 参考になるようなサイトがありましたら、ご教示下さい。 宜しくお願いします。
531 名前:nobodyさん mailto:sage [2008/05/21(水) 12:00:10 ID:???] ソケット使ってゴリゴリ書くしか無いんじゃないかな
532 名前:nobodyさん mailto:sage [2008/05/21(水) 12:06:34 ID:???] モジュールが一切入っていないレンタルサーバでソケットが使えるようにインストールされてる とはとても思えないが・・
533 名前:nobodyさん mailto:sage [2008/05/21(水) 12:14:45 ID:???] xmlそのものについても調べてる状態なんですが、 どうも事実上無理っぽいということですかね…orz お騒がせしました、ありがとうございました。
534 名前:nobodyさん mailto:sage [2008/05/21(水) 13:46:16 ID:???] php が動くなら php 普通にネットワーク経由でファイル開けるので php も考慮してみれば?
535 名前:nobodyさん mailto:sage [2008/05/21(水) 23:33:50 ID:???] >>529 ,530 XMLを読み込むだけなら、XML::TreePPでXMLが読める。 別サイト上にあるXMLを読むならLWP等が必要。
536 名前:nobodyさん mailto:sage [2008/05/22(木) 08:42:14 ID:???] 質問です。Snアップローダー(sugachan.dip.jp/obsolete/snup/ )の ファイル個別HTMLを作成する部分で $buff = "<html><head><title>$filename</title></head><body>"; $buff .= qq|Download <a href="./$filename">$filename</a>|; $buff .= '</body></html>'; (ソースの760行目付近です) 特定の拡張子のみ別のHTMLコードを書き出したいのですが if文で$filename等試してみましたが上手く行きませんでした どなたか分かる方宜しくお願いします
537 名前:nobodyさん mailto:sage [2008/05/22(木) 10:13:46 ID:???] 改造スレいけ
538 名前:nobodyさん mailto:sage [2008/05/22(木) 12:40:41 ID:???] $buff .= qq|Download <a href="./$filename">$filename</a>|; こういう書き方もあるんだ。勉強になったw
539 名前:nobodyさん mailto:sage [2008/05/22(木) 13:18:50 ID:???] 毎行クォート変えるくらいならヒアドキュメント使えよ
540 名前:nobodyさん mailto:sage [2008/05/22(木) 13:25:55 ID:???] ヒアドキュメントもコーディングの桁揃えと、HTMLの桁揃えでタブを使うと、すっきりする方法 がなかなか見つからない。
541 名前:nobodyさん mailto:sage [2008/05/22(木) 13:40:38 ID:???] >if文で$filename等試してみましたが上手く行きませんでした どう試して、どういう結果になったのか書かないと。 基本だと思うが。
542 名前:nobodyさん mailto:sage [2008/05/22(木) 17:17:18 ID:???] >>540 普通に cookbook にある解ではダメなのか? ttp://www.unix.com.ua/orelly/perl/cookbook/ch01_12.htm
543 名前:nobodyさん [2008/05/24(土) 13:22:00 ID:CztaXqIN] セッション変数の受け渡しについての質問です。 print <<EOT <form action="localhost/cgi-bin/session.cgi " method="post"> <p> <label for="nm">お名前:</label> <input type="text" name="namae" id="nm"><br> <label for="ma">メール:</label> <input type="text" name="email" id="ma"> </p> <p> <input type="submit" value="送信"> <input type="reset" value="リセット"> </p> </form> EOT ; これらのフォームデータをセッション変数としてsession.cgiに受け渡したい のですが、どのようにすればよいでしょうか? CGI::sessionモジュールを利用して、session.cgi側で $hoge=$cgi->$session->param('namae'); などとすればセッション変数として受け取れる事は分かったのですが、 フォームからの受け渡し方が分かりません…。 よろしくお願いします。
544 名前:nobodyさん mailto:sage [2008/05/24(土) 13:38:27 ID:???] hiddenで投げれ
545 名前:nobodyさん mailto:sage [2008/05/24(土) 13:41:36 ID:???] >>543 どれがセッション変数なの?
546 名前:543 [2008/05/24(土) 13:47:45 ID:CztaXqIN] >>544 hiddenフィールドを利用すればセッション変数として受け渡されるのでしょうか? >>545 「お名前」や「メール」フォームに入力された文字列をセッション変数として session.cgiで受け取りたいと考えています。
547 名前:nobodyさん mailto:sage [2008/05/24(土) 13:47:48 ID:???] CGI.pmでデータを受け取るところから勉強を始めるべき。 セッションはその後。
548 名前:nobodyさん mailto:sage [2008/05/24(土) 13:49:52 ID:???] ・hidden ・GET ・cookie わざわざCGI::session使うくらいなんだから、普通はcookie使うんじゃね?
549 名前:543 [2008/05/24(土) 13:53:40 ID:CztaXqIN] >>547 すいません。>>543 の書き込み微妙に間違っています。 $hoge=$cgi->$session->param('namae'); のところ 通常データの受け取りは $hoge=$cgi->param('namae'); セッションでの受け取りは $hoge=$session->param('namae'); の間違いです。
550 名前:nobodyさん mailto:sage [2008/05/24(土) 14:04:47 ID:???] >>549 受け渡しの情報が知りたいって言ってるのに、 受け取りのソース書いてるから、それを指摘されてるんだよ。 >基本的にはセッション系モジュールの役割は、特定のキー=セッションIDに紐付けて、 >データを保存したり、読み込んだりといったことです。 >セッションIDの受渡しはCGI側でする必要があります。 ヒント:digit.que.ne.jp/work/wiki.cgi?Perl%e3%83%a1%e3%83%a2%2fCGI%3a%3aApplication%3a%3aPlugin%3a%3aSession%e3%83%a2%e3%82%b8%e3%83%a5%e3%83%bc%e3%83%ab
551 名前:543 [2008/05/24(土) 14:05:03 ID:CztaXqIN] cookieにセッションIDやもっておきたいデータ(今回の場合、お名前やメール)を記述しておき、 サーバ側から要求があった時点でクライアントはそのcookieのデータを受け渡す といったイメージで良いのでしょうか。 うぅ、難しい。。。
552 名前:543 [2008/05/24(土) 14:13:48 ID:CztaXqIN] >>550 >受け渡しの情報が知りたいって言ってるのに、 >受け取りのソース書いてるから、それを指摘されてるんだよ。 データを受け渡す側のソースが>>543 で、受け取るソースがsession.cgiだと 認識してるのですが…。間違っているでしょうか。 もしかしたら私が勘違い?をしているのかも?
553 名前:nobodyさん mailto:sage [2008/05/24(土) 14:14:00 ID:???] >>551 正直、目的に対して技術が足りなすぎる。イヤミじゃなくてね。 トラブル起こす前に、オライリーのCGIプログラミング読破オススメ。
554 名前:nobodyさん mailto:sage [2008/05/24(土) 14:18:21 ID:???] >>552 >受け取るソースがsession.cgiだと認識してるのですが…。 少なくてもこのソース中でセッションIDはどこにも発行してないでしょ? 後は調べなさい。
555 名前:554 mailto:sage [2008/05/24(土) 14:19:15 ID:???] ごめんミスった。 × >受け取るソースがsession.cgiだと認識してるのですが… ○ >データを受け渡す側のソースが>>543 で
556 名前:543 [2008/05/24(土) 14:19:38 ID:CztaXqIN] すいません。もう少し勉強しなおしてきます。 みなさん、有難うございましたー・・・
557 名前:543 [2008/05/24(土) 14:23:19 ID:CztaXqIN] >>554 あ、ソースの一部分しか乗せてなかったためです! use CGI::Session qw/-ip_match/; my $session=CGI::Session->new(undef,undef,{Directory=>'./session'}); $session->expire('+1m'); #有効期限は1分間 $session->param('name','john'); #セッション経由で引き渡す項目と値 my $cgi=CGI->new; print $cgi->header(-charset=>'UTF-8', -cookie=>$cgi->cookie(-name=>'CGISESSID', -value=>$session->id, -expires => '+3M')), #cookieにセッションidを保管 $cgi->start_html(-lang=>'ja', -encoding=>'UTF-8', -title=>'CGI.pm使用/cookie'), $cgi->p('session id: '.$session->id.'<br/>', 'name: '.$session->param('name').'<br/>',
558 名前:543 [2008/05/24(土) 14:24:17 ID:CztaXqIN] 続き print <<EOT <form action="localhost/cgi-bin/session.cgi " method="post"> <p> <label for="nm">お名前:</label> <input type="text" name="namae" id="nm"><br> <label for="ma">メール:</label> <input type="text" name="email" id="ma"> </p> <p> <input type="submit" value="送信"> <input type="reset" value="リセット"> </p> </form> EOT ; $cgi->end_html; #end すいません…!
559 名前:nobodyさん mailto:sage [2008/05/24(土) 14:27:18 ID:???] めんどくさいし、合ってる保証ないけど、適当にフォローしてみる 追記 use CGI; 追記 my $cgi = new CGI; × my $session=CGI::Session->new(undef,undef,{Directory=>'./session'}); ○ my $session=CGI::Session->new(undef, $cgi, {Directory=>'./session'});
560 名前:nobodyさん mailto:sage [2008/05/25(日) 02:16:54 ID:???] htmlのフォームデータをセッション変数に格納して利用するには htmlのフォームデータをpost→受け取ったデータをセッション変数を格納するCGI →それらのセッション変数にアクセス(利用する)CGI の流れがいるのでは? 自信ないけど
561 名前:nobodyさん [2008/05/25(日) 19:58:56 ID:sAYmYKjS] perlのセッション管理はphpに比べるとかなりめんどい もちろん細かく制御するには向いてるんだが始めとっつきにくいかもなー
562 名前:nobodyさん mailto:sage [2008/05/26(月) 13:29:09 ID:???] >>561 >>543 の質問を分かりやすくPHPで説明すると、 $_REQUESTの内容を$_SESSIONで受け取るにはどうしたらいいんですか? ということ。
563 名前:nobodyさん [2008/05/26(月) 19:00:45 ID:BXwqNwjP] すみません。質問です。 Global symbol "%in" requires explicit package name at C:/ApacheGroup/〜〜.cgi line 375, <DATA> line 855. というソフトウェアエラーが出続けてるんですが。 どうすればいいでしょう。 どなたか教えてください〜。
564 名前:nobodyさん [2008/05/26(月) 19:09:34 ID:fmVA2Qe8] 先生方! 質問よろしいでしょうか! open(OUT,"+< log.txt"); eval{flock(OUT, 2);}; eval{truncate(OUT, 0);}; seek(OUT, 0, 0); print OUT @log; eval{flock(OUT, 8);}; close(OUT); 今はこのように通常のテキストでログの上書き保存をしているのですが、 私はgzipで圧縮して上書き保存をしたいのです! しかしどれだけGoogle先生に訊いてもgzipでの保存方法を教えてもらえません! あの先生はケチです! もう先生方だけが頼りなんです! 一体どうすればgzipでの保存が可能になるんでしょうか!
565 名前:nobodyさん mailto:sage [2008/05/26(月) 19:18:18 ID:???] >>563 xn--lckja1b6r.jp/%47%6C%6F%62%61%6C%20%73%79%6D%62%6F%6C%20%20%72%65%71%75%69%72%65%73%20%65%78%70%6C%69%63%69%74%20%70%61%63%6B%61%67%65%20%6E%61%6D%65 >>564 xn--lckja1b6r.jp/%70%65%72%6C%20%67%7A%69%70
566 名前:nobodyさん mailto:sage [2008/05/26(月) 19:32:47 ID:???] Archive perl でググればでてくるじゃないの
567 名前:nobodyさん mailto:sage [2008/05/26(月) 23:41:19 ID:???] >>563 英語が読めないなら駱駝本を買うべきだ。
568 名前:nobodyさん mailto:sage [2008/05/27(火) 11:06:43 ID:???] ラクダを漢字で書かれると困ります (><;)
569 名前:nobodyさん mailto:sage [2008/05/27(火) 19:27:42 ID:???] { $global_foo = $foo; $global_bar = $bar; my $foo; my $bar; $foo = $_[0]; $bar = $_[1]; $foo = $global_foo if $foo eq undef; $bar = $global_bar if $bar eq undef; } をコンパクトにまとめたいが、バグが混入しそうでいやん。
570 名前:nobodyさん mailto:sage [2008/05/27(火) 19:44:24 ID:???] { my $global_foo = $foo; my $global_bar = $bar; $foo = shift || $global_foo; $bar = shift || $global_bar; }
571 名前:nobodyさん mailto:sage [2008/05/27(火) 19:55:45 ID:???] >>569-570 $foo eq undef もたいがいだが shift || $global_foo だと $_[0] が '0' の時に挙動変わるな。
572 名前:nobodyさん mailto:sage [2008/05/27(火) 20:06:24 ID:???] { my $global_foo = $foo; my $global_bar = $bar; $foo = defined( $_[0] ) ? $_[0] : $global_foo; $bar = defined( $_[1] ) ? $_[1] : $global_bar; } こうか?
573 名前:nobodyさん mailto:sage [2008/05/27(火) 20:06:58 ID:???] あ、三項演算子逆だ。すまん。
574 名前:nobodyさん mailto:sage [2008/05/27(火) 20:33:00 ID:???] defined関数の存在が頭から抜けてたorz $foo = $global_foo if $foo eq undef; $bar = $global_foo if $bar eq undef; ではなく $foo = $global_foo unless defined $foo; $bar = $global_foo unless defined $bar; でお願いします。あと>>570-573 サンクス、参考になります。
575 名前:nobodyさん mailto:sage [2008/05/27(火) 20:38:51 ID:???] つーか、>>569 だとまともに動かんよ。 初期化するためにmy使っちゃってるように見えるけど、 この場合、ブロックスコープになるから、 ブロック内の$foo, $barと、グローバル変数$foo, $barは別物になる。
576 名前:nobodyさん mailto:sage [2008/05/27(火) 20:54:18 ID:???] myの仕様間違えて覚えてたか… $global_foo = $foo; $global_bar = $bar; { my $foo; my $bar; $foo = $_[0]; $bar = $_[1]; $foo = $global_foo unless defined $foo; $bar = $global_foo unless defined $bar; } 欲しい動作はこうかな…
577 名前:nobodyさん mailto:sage [2008/05/27(火) 20:56:48 ID:???] いやいやいやいやw 「perl スコープ 変数」でググっみ。
578 名前:nobodyさん mailto:sage [2008/05/27(火) 21:53:15 ID:???] 全然わかってないわかってないwww
579 名前:nobodyさん mailto:sage [2008/05/27(火) 22:34:53 ID:???] my $foo = 1; sub func { my $temp = $_[0]; return defined( $_[1] ) ? $_[1] : $temp; } ex : $foo = func( $foo, 10 ); # $foo = 10 $foo = func( $foo ); $foo = 1
580 名前:nobodyさん mailto:sage [2008/05/28(水) 00:31:36 ID:???] 早くdefined-or演算子実装されないかな…
581 名前:nobodyさん mailto:sage [2008/05/28(水) 01:24:48 ID:???] 今日が今月の何週目か求めるにはどうしたらよいでしょうか
582 名前:576 mailto:sage [2008/05/28(水) 01:29:54 ID:???] $global_foo = $foo = 1; $global_bar = $bar = 2; @_ = (3,4); #@_に値あり { my $foo; my $bar; $foo = $_[0]; $bar = $_[1]; $foo = $global_foo unless defined $foo; $bar = $global_bar unless defined $bar; print "point 1: foo=$foo bar=$bar\n"; } print "point 2: foo=$foo bar=$bar\n"; 出力結果 point 1: foo=3 bar=4 point 2: foo=1 bar=2
583 名前:576 mailto:sage [2008/05/28(水) 01:32:06 ID:???] $global_foo = $foo = 1; $global_bar = $bar = 2; @_ = (3,4); #@_に値あり { my $foo; my $bar; $foo = $_[0]; $bar = $_[1]; $foo = $global_foo unless defined $foo; $bar = $global_bar unless defined $bar; print "point 1: foo=$foo bar=$bar\n"; } print "point 2: foo=$foo bar=$bar\n"; 出力結果 point 1: foo=1 bar=2 point 2: foo=1 bar=2 ━━━━━━━━━━━━━━━━━━━━━━━ うん、欲しかった動作そのままだけど。 >>577-578 が理解できず悩み中
584 名前:nobodyさん mailto:sage [2008/05/28(水) 01:34:02 ID:???] ぎゃー、>>583 張り間違えた 【誤】@_ = (3,4); #@_に値あり 【正】@_ = (); #@_に値無し orz 120秒規制が若干きつい…
585 名前:nobodyさん mailto:sage [2008/05/28(水) 01:35:51 ID:???] Date::Calc
586 名前:nobodyさん mailto:sage [2008/05/28(水) 01:46:51 ID:???] >>576 目的が分からん。そもそも何がしたいの? 説明する気あるのか? my $foo = 1; my $bar = 2; print $foo = func( $foo ); print $bar = func( $bar ); print $foo = func( $foo, 3 ); print $bar = func( $bar, 4 ); exit; sub func { return defined( $_[1] ) ? $_[1] : $_[0]; }
587 名前:nobodyさん mailto:sage [2008/05/28(水) 01:47:41 ID:???] >>585 感動した ありがとう
588 名前:576 mailto:sage [2008/05/28(水) 01:58:37 ID:???] >>586 サブルーチン冒頭にて、引数リスト > デフォルト値(グローバル変数の値とか) の優先順でmy変数値を設定したいことはよくあるから、 perlなら… perlならきっとすごくスマートに書く方法があるに違いない… という夢を見たけど、幻だったみたいですね… 変数ひとつずつシコシコとunless definedを当てることにします。
589 名前:nobodyさん mailto:sage [2008/05/28(水) 02:00:25 ID:???] いや、日本語でおk お前の望むようなことは確実にできると思うんだけど、 なにぶん言いたいことがよく分からんw
590 名前:nobodyさん mailto:sage [2008/05/28(水) 02:16:48 ID:???] my $global_foo = my $foo = 1; my $global_bar = my $bar = 2; # @_ =( ); @_ =( 3, 4 ); { my $foo = defined( $_[0] ) ? $_[0] : $global_foo; my $bar = defined( $_[1] ) ? $_[1] : $global_bar; print "point 1: foo=$foo bar=$bar\n"; } print "point 2: foo=$foo bar=$bar\n"; 結局、最初に提案されてる回答をアレンジすれば、 >>582-584 をシンプルかつ可読性も保ったまま実現できるんだが。 これじゃいかんの?
591 名前:nobodyさん mailto:sage [2008/05/28(水) 02:25:18 ID:???] >>590 そのへんが限界みたいですね…ありがとうございます。 私の欲求そのものが十分特殊だったのかな… いま考えてる最善の形はサブルーチンを使うことです。 サブルーチンコールは負担かかりそうだからやりたくないんだけど… sub merge_argument_and_default{ my ($argument, @default) = @_; my @value; while(1){ my ($a, $v) = (shift @$argument, shift @default); my $c = ((defined $a) ? $a : $v); last unless defined $c; push @value, $c; } return @value; } sub foo{ my(@bar) = &merge_argument_and_default(\@_, @default_bar); } みなさんありがとうございました。
592 名前:nobodyさん mailto:sage [2008/05/28(水) 02:30:59 ID:???] 殺してぇ……。日記じゃねぇんだよ。
593 名前:nobodyさん mailto:sage [2008/05/28(水) 06:17:52 ID:???] >>580 もう実装されてるよ? search.cpan.org/dist/perl/pod/perl5100delta.pod#Defined-or_operator
594 名前:nobodyさん mailto:sage [2008/05/28(水) 06:40:31 ID:???] >>576 みたいに、自分のプライド保つために 当初の目的をすり替えて、自分は違うもの作ってました的な発言するやつは質問にくるなよ。 当初は「>>569 をコンパクトにしたい」って言ってただけなのに、 どんな解が提示されても、 どんどん違う方向に勝手に転換して善意のレスすら流し読み。 こういう奴は、治らないから本当に放置すべきだと思うよ。
595 名前:nobodyさん mailto:sage [2008/05/28(水) 07:18:42 ID:???] >>594 それは違うんだけど、あなたへの説得は無理かな。 ひどく機嫌を損ねてしまったのは悪いと思ってるが。 いただいたありがたいアドバイスから、例えば今回は、 「サブルーチン化でもしなければ相当コンパクトに収めるのは難しいらしい」 「そのサブルーチンはこういう形で書くのがよいのだろうか」 などと、自分の知識や興味対象は移り変わっていくことが多いです。 ただ、このスレッドにはしばらく書き込みを自粛します。さよなら。
596 名前:nobodyさん mailto:sage [2008/05/28(水) 10:11:34 ID:???] 典型的な"隠す人"だったか。
597 名前:590 mailto:sage [2008/05/28(水) 10:39:10 ID:???] うわ、ちょっと離れたスキにすげぇ慇懃無礼なこと書いてやがる。 目的も明確にせず、そのへんが限界てw そもそも次の疑問に移ったなら、その過程を説明するのが回答者への最低限の礼儀だろ。 社会出て苦労するよ。 ちなみに>>591 は、俺ならこう書く。 sub merge_argument_and_default { my ($argument, @default) = @_; my %count; $count{$_} = $default[$_] for( 0..$#default ); $count{$_} = ${ $argument }[$_] for( 0..$#{ $argument } ); return map { $count{$_} } sort keys %count; }
598 名前:nobodyさん mailto:sage [2008/05/28(水) 11:40:59 ID:???] >595みたいなやつっているよね 言葉遣いが丁寧なだけで、いっぱしの大人だと思ってる人。
599 名前:nobodyさん mailto:sage [2008/05/28(水) 12:04:01 ID:???] sub merge_argument_and_default { map{ defined $_[0][$_] ? $_[0][$_] : $_[$_ + 1] ;} 0 .. $#{$_[0]} ; } >>598 ガキなの見え見えなんだよねw ttp://www2.atpages.jp/mirror/2ch/perl/prog/read.php/1157874614/ の595を思い出した。
600 名前:nobodyさん mailto:sage [2008/05/28(水) 13:55:09 ID:???] >>593 そいえば5.10でてるんだっけ(汗 RHELとCentOSしか使ってないからすっかり忘れてました。
601 名前:nobodyさん mailto:sage [2008/05/28(水) 15:44:58 ID:???] 5.10って絶対分かりづらいよw 5.8より昔のリリースだとしか思えない。
602 名前:nobodyさん mailto:sage [2008/05/28(水) 15:51:58 ID:???] Ver 5.008008 Ver 5.010000 こう書けばよいのか?
603 名前:nobodyさん mailto:sage [2008/05/28(水) 16:09:29 ID:???] 5.1の方が新しいんですか? 知らなかったorz
604 名前:nobodyさん mailto:sage [2008/05/28(水) 16:21:25 ID:???] 5.10.0 > 5.9.5 > 5.8.8 >> 5.1.0 苦肉の策なんだろうな……。
605 名前:nobodyさん mailto:sage [2008/05/28(水) 17:55:49 ID:???] perl6ってどうなったん?
606 名前:nobodyさん mailto:sage [2008/05/28(水) 19:03:22 ID:???] >>605 parrotの新しいのが最近でた気が・・・
607 名前:nobodyさん mailto:sage [2008/05/28(水) 20:28:19 ID:???] あるIPアドレスが変数$ipに格納してあります。 この$ipが存在するか、あるテキストファイル(ip.txt)を読んで チェックしています。以下は例です。 $ipは"192.168.0.1" ip.txtに192.168.0.1が記述してあります。 この場合マッチするようプログラムしてあります。 ip.txtに 192.168.0.0/24 または 192.168.0.0/255.255.255.0 と記述してあるものと マッチさせたいのですが、 そういうサブルーチンは ありますでしょうか? 簡単にいうと、あるIPアドレスが サブネットマスクで指定してある 10進表記またはサイダー表記に マッチするか判定したいのです。 ip.txtは10進表記でもサイダー表記の どっちでも構いません。
608 名前:nobodyさん mailto:sage [2008/05/28(水) 20:34:04 ID:???] ttp://pc11.2ch.net/test/read.cgi/tech/1086143976/491-590 の543-544及び「IP pack unpack perl」でググれ。
609 名前:607 mailto:sage [2008/05/28(水) 20:59:40 ID:???] >>608 あり♪ 明日、見てみるよん
610 名前:597 mailto:sage [2008/05/28(水) 21:17:34 ID:???] >>599 終わった話題なんだけど、ちょっと気になった。 めんどくさかったら、スルーして。 提示してくれてるルーチンだと、 引数1 @array1 = (); 引数2 @array2 = ( 1,2 ); のとき、返り値が空になっちゃうよね。 配列1(引数1) > 配列2(引数2) という優先順位で、 配列3(返り値)を混ぜ合わせるというのが目的の処理だと思うんだけど、 配列1と配列2で要素数の大きい配列を、要素数だけループさせる処理にする場合、 キレイにまとめる方法ってないかなぁ? if( ( $#array1 <=> $#array2 ) == -1 ) { EXPR for( 0..$#array2 ); } else { EXPR for( 0..$#array1 ); } みたいな、冗長な方法しか俺には思い浮かばなかった。 だから、「配列の重複値をハッシュを利用してマージ」の応用みたいなことを>>597 でやってみたわけだ。 なんか美しい方法あればいいんだけどなぁ。
611 名前: ◆TWARamEjuA mailto:sage [2008/05/28(水) 21:20:10 ID:???] (´-`).。oO(Net::CIDRでよさそうな。。。)
612 名前:597 mailto:sage [2008/05/28(水) 21:26:18 ID:???] my @temp = ( $#array1 <=> $#array2 ) == -1 ) ? ( 0..$#array2 ) ; 0..$#array1; こんな前処理してから、>>599 のmap対象配列に、( 0..\$temp ) って感じかなぁ? エレガントさには欠けるけど、これが可読性保つギリギリかな?
613 名前:597 mailto:sage [2008/05/28(水) 21:28:46 ID:???] 動作確認してないからtypoしまくり。まぁ分かるよね?(苦笑