1 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 00:07:22 ] "The duct tape of the Internet" こと、Perlについての質問箱です。 "There's more than one way to do it" ということで、Perlの奥深さについて皆で語り合い、追求してまいりましょう。 CGIについての質問は板違いです。WEBプログラミング板でどうぞ。 CGIとPerlの区別がつかない人もWEBプログラミング板に行ってください。 (WEBプログラミング板 ttp://pc11.2ch.net/php/ ) CGIの質問は答えがPerlと全然関係ない話に帰着する場合が多かったりするのでWEBプログラミング板に行って聞いたほうが得ですよ。 このスレでは(CGI以外の)純粋にPerlのみに関係する質問を取り扱っていこうと思います。 スレ違いの質問にはスルーか、速やかな誘導をお願いします。 ttp://www.perl.org/get.html ● 2008/01/11現在の最新版: 5.10.0 ● 2007/01/11現在の開発版: 5.9.5 前スレ Perlについての質問箱 33箱目 pc11.2ch.net/test/read.cgi/tech/1192463997/ リンク集は>>2-3 過去スレは>>4 あたり
369 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 09:14:46 ] 比較で一致しないのはなぜ? 整数だと一致するし、直接比較しても一致する。 $b = $b+0.1; がみそ? $a = 5.5; $b = 4.5; for($i = 0; $i< 11 ; $i++) { if($a == $b) { printf("match :"); } else { printf("unmatch :"); } printf( "%2.2f %2.2f \n",$b,$a); $b = $b+0.1; } 結果 unmatch :5.40 5.50 unmatch :5.50 5.50 (- 一致しない
370 名前:デフォルトの名無しさん [2008/02/09(土) 09:24:45 ] >>369 異なる値が一致しないのは当然。
371 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 09:50:00 ] 浮動小数点を==で比較してはいけない。プログラミングの常識。
372 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 09:51:09 ] 差の絶対値がある閾値より小さいかどうかで調べるよね。
373 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 09:58:13 ] へーそうなんだ。整数しか使ったことがないから知らなかった。 369じゃないけど勉強になったわ。
374 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 10:12:53 ] cygwinのPerlだと perl -e '$A=5.5;$B=5.500000000000001;print "match\n"if $A eq $B' これがイコールになっちゃうみたいですね
375 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 11:18:45 ] 浮動小数点表現では0.1が循環小数になる。 (だからお金の計算に浮動小数点使っちゃだめ)
376 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 12:02:59 ] >>374 eqの意味知っていて意図的に使ってるの?
377 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 14:08:21 ] >>374 こりゃ便利だな。
378 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 17:17:17 ] >>371 FAQのようですね。確かに今回初めて浮動小数点の比較を使ったんだけど、知らなかった。
379 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 17:29:41 ] >>378 > FAQのようですね。 ちゃう。ちゃんとした教育を受けた人なら、質問を出す前に教わるくらいの事柄。
380 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 17:32:41 ] >>375 じゃあ、お金の計算には何使えばいいんだ? 利息計算とかでいやでも小数使うと思うんだが。
381 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 17:40:17 ] 10進浮動小数点数
382 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 17:45:35 ] >>379 スマソ。 教育は受けてない。
383 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 17:49:14 ] Perlの場合はBigDecimalだったっけ?
384 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 18:20:08 ] >>380 例えば消費税なら価格に5かけてから100で割る。 要するに細かい計算は整数で計算する。
385 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 18:50:44 ] それでは、コボラーさんどうぞ ↓↓↓↓↓↓↓↓↓↓↓↓↓↓
386 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 18:52:56 ] 固定小数点という便利な言い方があると思うんだが(笑)
387 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 19:02:22 ] 固定小数点でも底が2なら0.1は表せないだろ。
388 名前:デフォルトの名無しさん [2008/02/09(土) 20:29:27 ] ある既存のシステムからもらってきたデータの中に4バイトの単精度実数が入ってるんです。 それを受け取りたいんですが、画面表示すると丸め誤差ってヤツ?が出てしまうんです。 ためしにやってみたこと $x=pack('f', 123456 ); $y=unpack('f', $x); print $y,"\n"; $x=pack('f', 0.05 ); $y=unpack('f', $x); print $y,"\n"; $x=pack('f', 0.0000001); $y=unpack('f', $x); print $y,"\n"; 結果 123456 0.0500000007450581 1.0000000116861e-007 元の数字に戻すには、どうしたらいいですか?
389 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 20:32:19 ] >387 「固定少数点」でググれ
390 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 20:34:52 ] >388 精度を指定すれば?
391 名前:386 mailto:sage [2008/02/09(土) 20:36:48 ] >387 すまん、>384への補足のつもりだったんだ
392 名前:デフォルトの名無しさん [2008/02/09(土) 20:52:05 ] >>390 精度の指定の仕方を教えてください。
393 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 00:44:37 ] >>388 $x=pack('f', 0.0000001 ); $y=unpack('f', $x); ($z = sprintf("%.7f\n", $y)) =~ s/\.?0*$//;print $z;
394 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 16:23:05 ] 標準入力を待つため以下の様に書いたがうまくいきません。 何がまずいのでしょうか。ActivePerl5.8です。 use IO::Select; $sel = IO::Select->new; $sel->add(\*STDIN); while(1){ print "can_read\n"; @a = $sel->can_read; foreach $fh (@a){ if($fh == STDIN){ print "STDIN\n"; } exit; } }
395 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 16:51:18 ] >394 perlport より >select >Only implemented on sockets. (Win32, VMS)
396 名前:394 mailto:sage [2008/02/10(日) 18:23:33 ] >395 そう言う事かー。納得しました。ありがとうございました。
397 名前:デフォルトの名無しさん [2008/02/11(月) 02:25:54 ] 現在、与えられた文字列を読み込み、それを元にHTMLを出力するプログラムを作成しています。 与えられた文字列の中に特定のキーワードを見つけると、それをリンクに変換するようにしたいと考えています。 例: [google:hoge] → <a href="www.google.co.jp/search?q=hoge ">Googleでhogeを検索</a> [mixi:xxxxx] → <a href="mixi.jp/show_friend.pl?id=xxxxx ">mixi</a> xxx.xx → <a href="xxx.xx ">xxx.xx</a> こういった置換を行うコードを1つずつ書くのではなく、 例えば、以下のような置換パターンをセットしたハッシュを用意しておき %hash = ( '\[google:\w+\]' => '<a href="www.google.co.jp/search?q=$1 ">Googleで$1を検索</a>', ) forやforeachで回しながら自動的に置換したいのですが、どのようにすればよいでしょうか。 (エンコードとかは考えない方向で) foreach my $key (keys %hash) { $input_str =~ s/$key/$hash{$key}/g; } とやった場合、変換後の文字列の中に「$1」そのものが入ってしまいます。
398 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 02:29:35 ] $input_str =~ s/$key/$hash{$key}/gee; できるかは知らん
399 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 10:43:55 ] >>397 クロスサイトスクリプティングって知ってるか? 素人のCGI作成は法律で禁止して欲しい。
400 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 11:28:03 ] >>397 答えそのものは書かないけど、以下のことが必要。 '\[google:\w+\]'の部分は'\[google:(\w+)\]'でしょうね。そうしないと $1で受け取れないから。 置換をするなら、 $input_str =~ s/$key/conv($1, $hash{$key})/eg; などとしておいて、 sub conv { my ($word, $str) = @_; $str =~ s/\$1/$word/g; $str; } などとでもしておくとか。 で、 URLのクエリー部分に仕込む文字列はURIエスケープが必要。 そんで、マルチバイトの場合、どの文字コードにしてからエスケープするかも 考える必要あり。 さらに、<a>と</a>の間の文字列に使用するときはサニタイズ処理が必要(XSS対策)。 >>398 の方法だと、perlコードをそのまま解釈してしまうので、別の危険あり。 「与えられた文字列」は誰が与えるのかがとても大きな問題です。 URLにリンクを張るのは、大崎氏のPerlメモが使えると思います。
401 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 11:57:26 ] >399 もちろん知ってます。 置換条件と置換パターンを配列などに保持しておく(または外部から読み込む)という考え方自体が セキュアではないということでしょうか? >400 ( )で括って無かったのは書き込み時のミスです、すみません。 手元のソースでは書かれてたんですが、適当な条件に直すときに忘れてしまったようです。
402 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 12:22:23 ] 置換パターンにperlの$1を流用しようとしてるところがセキュアでない。 '<a href="www.google.co.jp/search?q=${1:urlencode (utf8)}">Googleで${1:htmlsafe}を検索</a>' とかして、これを解釈するようにすればよい。
403 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 17:27:17 ] ありがとうございます。 自分用のツールをさくっと作るつもりだったけど、そこまでやろうとすると手間かなあ。 誰かモジュール作ってるかもしれないけど。
404 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 18:12:59 ] 質問です。 'おまんこ'も'おちんこ'もマッチしないのですが、どこか間違いあるのでしょうか? use strict; use warnings; use utf8; binmode STDOUT, ':utf8'; while (my $str = <STDIN>) { chomp($str); last if ($str eq 'end'); if ($str =~ /お.んこ/) { print "$& --- マッチしたお\n"; } else { print "マッチしないお\n"; } }
405 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 18:16:55 ] binmode STDIN, ':utf8'; 追加したらマッチしますた。
406 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 05:34:25 ] 質問です。 use Encode; binmode STDOUT, ':iso-8859-1'; open READ , '<:encoding(utf8)', "$ARGV[0]" ; while (my $data = <READ>){ print "$data"; } close READ; exit; でutf8でencodeされたファイルをiso-8859-1に変換しようとしたら、 標準出力ではうまくいって、リダイレクトすると文字化けしました。 おわかりになる方、いらっしゃるでしょうか。
407 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 05:45:10 ] lv でみれないだけで、less したらみれました…すいません。
408 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 09:07:43 ] >>407 lvのほうがlessより優秀ってイメージなんだけど、lvが文字コードを誤判定しちゃったのかな。
409 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 12:12:12 ] use CGI; my $delimiter = "\t"; my $q = new CGI; my $save = $q->param('name') . $delimiter . $q->param('mail'); my ($name, $mail) = split /$delimiter/, $save; 入力はHTMLフォームからを想定しています。 こういった場合に適切なデリミタは何でしょうか。 たまに<>を見かけますが<>を><に変換してる場合じゃないと有効で無いですし \tは入力が可能、\0は良い方法だと思いますがCGI.pmと衝突します。 \a等が良いのでしょうか。
410 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 12:14:45 ] × たまに<>を見かけますが<>を><に変換してる場合じゃないと有効で無いですし ○ たまに<>を見かけますが<>を<>に変換してる場合じゃないと有効で無いですし ミスりました汗
411 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 12:52:41 ] 板違いっぽいがスペースじゃだめ?
412 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 13:13:53 ] $save の前に入力チェックしてタブ文字を消せばいいだろ
413 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 14:12:21 ] my $save = join("&&", map { my $i = $q->param($_); $i =~ s/&/&/g; $i } ("name","mail")); my($name,$mail) =~ map { s/&/&/g; $_ }(split("&&",$save));
414 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 18:08:01 ] >>409 <SOME_UNPREDICTABLE_STRING_XXX> でおk
415 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 11:16:04 ] 投資家板で名高いプログラマの書いたコードですが 初心者が多く、下記コードについて評価できません プロの目から見た下記コードの評価を教えて下さいませ live27.2ch.net/test/read.cgi/market/1202806626/454 $vict++; $vict100++; print $_ ."$riekiプラス!持ち越し成功!\n"; } if($end < $start2){ $loss=$start2-$end; $loss=~s/\-//; $totall =$loss + $totall; $totall100 =$loss + $totall100; $lost++; $lost100++; print $_ ."$loss マイナス!持ち越し失敗!\n"; } }
416 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 11:16:34 ] つづきです if(($cost < 1000)&&($cost > 300 )){ if($end > $start2){ $rieki=$end -$start2; $rieki=~s/\-//; $totalr =$rieki+$totalr; $totalr1000 =$rieki+$totalr1000; $vict++; $vict1000++; print $_ . "$riekiプラス!持ち越し成功!\n"; } if($end < $start2){ $loss=$end-$start2; $loss=~s/\-//; $totall =$loss + $totall; $totall1000 =$loss + $totall1000; $lost++; $lost1000++; print $_ . "$lossマイナス!持ち越し失敗!\n"; }
417 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 11:22:13 ] >>415 前の部分が欠けてて途中からになってるけど…?
418 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 11:35:29 ] 書きかたはまるっきり初心者 処理内容としては 1.コストで場合分け(ここで見えてるのは300から1000まで) 2.スタートとエンドの差をとって,スタートがエンドより低ければ利益,逆なら損害として出力 3.利益または損害をトータルに加算 4.利益の出た回数と損害の出た回数をカウント.コストの範囲ごとにもカウント なんつうか小学生でも計算できる内容だ
419 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 11:43:46 ] 計算さえ出来ればいいんでしょ? 合ってりゃいいと思うよ
420 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 11:54:35 ] >>415 軽くスレ読んだが名高いプログラマじゃなくて単に周りに避けられてる面倒くさい人じゃん。 コードは上で言われてるように初心者でも書ける程度のもん。 プログラム書かない人にけん制になると思ったのかもしれんが こんなの書いて自慢する人より電卓持ってる事務員のがずっとマシ。
421 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 12:08:22 ] ちゃんと動いて計算が合ってるならいいんじゃないの? それ以外に評価しようが無い。
422 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 12:11:02 ] 「名高いプログラマ」ってとこは確かにどうかと思うコードではあるw
423 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 12:17:13 ] あっちのことはよく知らないけど,変な演算する能力よりもデータを見極める目のほうが大事なんじゃないの?
424 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 12:25:14 ] 主婦が、余った材料で栄養バランスの取れた料理を作るようなイメージ。 プロの料理人と比較しちゃいけない。
425 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 12:27:12 ] 典型的なうんコードだな
426 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 12:31:07 ] >>421 あ、ごめん。機能満たすだけなら充分。 でも向こうのでの使い方が目的あって出してるコードじゃなく 素人にコード見せて牽制してるだけだからこんなの自慢にならんなぁって。
427 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 12:36:31 ] データを集積して処理するならともかく、この程度のことなら電卓+ノートのほうがいいと思うがな
428 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 12:40:32 ] サイタマン は やっぱり うんこだった!
429 名前:415のスレ住人 mailto:sage [2008/02/13(水) 12:41:56 ] 名高いプログラマーというより彼は社長だそうです。 年収3000万だったそうです。 ですからプログラムの内容というよりは アイデアで儲けている方なのかもしれませんね。 真実が定かでは無いのですが彼がIT企業の社長という点はどう思われますか?
430 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 12:42:37 ] >>424 だが余った食材をそのまま食べたほうが味も見た目も栄養も手間も優れていたというパターン ただの自己満足にしかなってないという…
431 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 12:43:04 ] こっちに来られると困るからノーコメント。
432 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 12:44:33 ] 内容云々じゃなくて、これくらいすばらしいコードを書けるスキルがあれば年収2000万くらいは最低限ある、 という内容のことを言っていたのですが、株板では判断できる人が少なかったので参考になりました。
433 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 12:45:27 ] __ ♪ ヨホホ♪ \ \ ♪ \/ `' ==‐‐-- 、 ♪ ξミミミミミ ./\ .ヽ, . |´_`| / .\ ,l /.__) ̄ ̄ ̄| ̄ ̄ ̄ ̄ ̄ ̄| 〜l└‐L、 _,==.,―――=,==r′ l~~`ゝつ.l l |||/ | l´ l | . ´|| ̄||´ |.|≠ || ||
434 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 12:46:12 ] >>429 とりあえず 2chに入りびたってコテハンつけてる そんなIT社長はイヤだ
435 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 12:46:21 ] サイタマン社長の名言集です。 どうぞ全部読んであげてください live27.2ch.net/test/read.cgi/market/1188339064/l50
436 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 12:46:32 ] __,,γ⌒ヽ _ ,,-''", ―‐―イ―ュ---、,,,,,,,,,,_ 三\ / ∠ ム_ゝ三i二二(山山アヲ -= 二) γ √ イ,, -" .三/ .ん、_(γ7''"  ̄ r_,ノ''こ!、,,┴. .| ‘''く′ ,/ │ .r'ヘ,、 `'イ゙>'" .厂|,`'-,, .|'ヽ、 .〜へ-―‐^''ー"
437 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 12:47:22 ] 「○○なら年収○○万くらいは最低限ある」 なんて言い方する時点で中二病 ここは2chだぞ
438 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 12:48:36 ] 個人のスレがたってるような奴を信じるなよw
439 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 12:50:03 ] >>437 投資板はcisっていうイレギュラーの塊のような人が住んでるから うそつきが住みやすいんですよ
440 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 12:51:27 ] コテで自慢する人は注目されたいだけ。 >>435 いりません。お引き取りください。
441 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 12:51:27 ] 2レス目まで読んだ Results 1 - 10 of about 1,040 Japanese pages for 金拝主義. (0.21 seconds) Results 1 - 10 of about 5,450 Japanese pages for ボラリティ. (0.14 seconds) Results 1 - 10 of about 3,130,000 Japanese pages for シュミレーション. (0.10 seconds) Results 1 - 7 of 7 Japanese pages for イートレイドワラッパー. (0.35 seconds) プロフィールをていぞう 愚かの骨頂 個性的な語彙を持ってることはわかった
442 名前:デフォルトの名無しさん [2008/02/13(水) 12:51:45 ] サイタマン社長はゴールドカードもupしてるし 信じたいんですがやっぱり嘘なのでしょうか。 客観的に見てあのくらいのプログラムが書ければ年収二千万はいけるのでしょうか
443 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 12:53:43 ] >>442 すでに必要な情報は提示されてる。あとは自分で考えれ。 ここは2chだぞ。
444 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 12:55:09 ] おー。変数名に数字つかうってスゴいセンスだな。 でどこの幼稚園の子供よ?
445 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 12:55:13 ] これだけ持ち上げられるってことはなにか持った奴なんじゃない?
446 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 12:57:50 ] どうやら面白ワード生成機として有名みたいだな。
447 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 12:59:57 ] サイタマン先生の今までupした物は 200万円くらいのお金と60万円の証券会社の口座と ゴールドカード4枚ですね。 プログラムのスキルでよく株のツールなどを作ろうかなどと言ったりします
448 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 13:12:34 ] >>447 なんだかんだで君も彼にぞっこんっぽいなw
449 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 13:14:02 ] >>446 2ch語を適当に組み合わせるしか脳のない「普通の厨」なら、 似たようなクオリティの人工無能も書けるかもしれないけど、 天然素材は模しようがないなw
450 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 13:19:08 ] >>449 実は本人はスーパーハカーで,2chに書き込んでるのはサイタマンに作られた人工知能なんじゃないか… そしてあのコードも学習して自動生成されたんじゃないかと妄想してみたwww
451 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 13:29:30 ] >>447 ゴールドポイントカードならぼくも持ってるよ。
452 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 13:33:07 ] ま、スレ違いだから去れ
453 名前:デフォルトの名無しさん [2008/02/13(水) 15:54:58 ] aaa1 aaa2 aaa3 aaa4 というファイルがあったときに 通番どおりに結合して1つの出力にする上手い方法ありませんでしょうか?
454 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 15:59:00 ] cat 呼び出す
455 名前:453 mailto:sage [2008/02/13(水) 18:25:02 ] >>454 ありがとうございます。 catは盲点でした。無事解決しました。
456 名前:デフォルトの名無しさん [2008/02/13(水) 18:31:44 ] 配列のなかに配列を複数持っている場合 それらをうまく結合する手段ってないでしょうか? 具体的には以下のような感じです @array[1] = {aaa, bbb} @array[2] = {ccc, ddd} @array[3] = {eee, fff} このとき、一つの変数にまとめて {aaa, bbb, ccc, ddd, eee, fff} となるようにしたいです。 申し訳ないのですが、知恵を貸してください。
457 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 18:46:13 ] 544 :デフォルトの名無しさん:2007/05/12(土) 02:54:05 深さのある配列を左から順番に呼んでフラットな配列を作りたいんですが、 よい方法ご存知の方いませんか @a = ([1,2,3], [4,5,6], [[7,8],[9,0]]); @b = flatten(@a); # 1,2,3,4,5,6,7,8,9,0 546 :デフォルトの名無しさん:2007/05/12(土) 03:16:52 >>544 sub flatten(@) { map { ref $_ eq "ARRAY" ? flatten(@$_) : $_ } @_ } こんなんどうよ。
458 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 19:26:12 ] >>457 456です、回答ありがとうございます。 しかしながら、私が挙げた例の場合にはどのように用いればよいか分からず困っています。 ヒントだけでもいただけないでしょうか?
459 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 19:29:20 ] {}はハッシュだろ
460 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 19:31:12 ] >>459 理解できました、ありがとうございます!
461 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 00:42:53 ] Pgを使って(DBIじゃなく)複数スレッドから同時にDBアクセスを使用と思います。 DBへの接続は各スレッドで行います。 Perl自体はスレッドに対応していても、関連モジュールとかの対応状況がわかりません。 バージョンは以下の通りです。 Perl 5.8.8 libpg 2.1.1 PostgreSQL 8.1 ディストリビューションは、Debian etchです。 スレッドの方が子供の面倒が見やすそうなので、できればスレッドにしたいのです。
462 名前:デフォルトの名無しさん [2008/02/14(木) 01:19:43 ] で、自分では試したくないので、だれかヒマなヤツ、オレのかわりに試してくれんか。 オレは家でゴロゴロしてアニメ観るのに忙しいから。 ・・・とか?
463 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 01:27:23 ] いえ、アニメじゃないです。 アニメの実写劇場版です。
464 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 21:24:49 ] >>462 せっかくぼけてくれたところをマジレスすると、試して問題なかったからと言って、スレッドに対応しているとは限らないから困ってるんです。 たまたま動いているだけってことがあるし。
465 名前:デフォルトの名無しさん [2008/02/15(金) 09:03:33 ] perl5.10が普及するのっていつごろ?
466 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 22:25:02 ] >>464 その当たりの情報は、ソースやリリースノートを追うしかないと思う。 やたら古くてあまり参考にならないけど tp://homepage3.nifty.com/hippo2000/perltips/DBI/FAQ.htm#5_1_Can_I_do_multi_threading_wit
467 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 02:06:19 ] ActivePerlの5.10の最新版(ほかいくつかのバージョン)で、 ppm search (モジュール名) でモジュールをネットから探してくれないのですが、 何か指定が必要でしょうか。
468 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 02:59:34 ] >>467 5.8 と5.10ではバイナリ互換性がないので、単に5.10向けにビルドしたのがないと思われる。
469 名前:デフォルトの名無しさん [2008/02/17(日) 01:17:31 ] winで、perlからmysqlを使っているのですが、 insert into a(a) value("あ"); コマンドラインで打つとうまくいくのですが、perlのDBIではうまくいきません。助けてください。