1 名前:デフォルトの名無しさん mailto:sage [2008/08/11(月) 19:10:40 ] "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/08/11 現在の最新版(安定版): 5.10.0 ● 2008/08/11 現在の開発版: 5.9.5 ▼ 前スレ Perlについての質問箱 36箱目 pc11.2ch.net/test/read.cgi/tech/1215569470/ リンク集は>>2-3 Perl 日本語処理の基礎の基礎 >>4 過去スレは>>5-6 あたり
655 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 09:30:16 ] アロー演算子を使う局面や場面は、 どういうときと、どういうときと、どういうときがあるの? 自分が知ってるのは、 「リファレンス経由で配列要素にアクセスする」 っていう場合だけど、そのほかにも、 オブジェクト指向のときもアロー演算子を使うの?
656 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 10:36:40 ] ●配列に限らない ●Perlにおいてオブジェクト指向はリファレンスを利用 なので、>655の質問は少しだけ着目点がズレてる。
657 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 10:53:06 ] www.rwds.net/kuroita/program/Perl_oo.html#package パッケージの説明として、これはわかりやすい。
658 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 10:55:41 ] package main; use Stone; my $obj = Stone->new('石灰岩','100'); ----------------------- ↑たとえばこれ。 これってオブジェクト指向だからアロー演算子を 使ってるという理解でいいよね?
659 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 11:01:38 ] それでhelpのタイポを見つけたら どこに通報すればいいの?
660 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 11:11:19 ] print "a"; die; ------------------ ↑このコードだと、 Died at 6.pl line 3. a という出力になるのに、 ------------------- print "a\n"; die; ------------------- ↑このコードだと a Died at 6.pl line 3. という出力になる。つまりひっくりかえってるんだが、 なんで?
661 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 11:18:48 ] 気分がいいのでレスしちゃう。 >658 それはそうとして>656は無視かい? >659 ココロの110番に >660 flush
662 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 11:19:55 ] C言語とPerlは近い部分があると聞いたのですけど、ほんとでしょうか。 それを聞いてPerlも勉強してみたいと思ったので。 printf が print だったり、微妙に違うようですが。 難しいのかな。
663 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 11:22:52 ] perlは超カンタンです。 なにしろ俺サマでさえ、一ヶ月もあれば 基本は理解できます。
664 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 11:23:51 ] サブルーチン呼び出すときに、 aaa; だとウオーニングが出るんだが、 aaa(); だとウオーニングがでない。つまり、 サブルーチンを呼び出すときは必ず aaa();と、パーレンをつけなければいけない、というルールなの?
665 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 11:25:03 ] >>662 C言語をマスターしているのなら、普通の頭脳の持ち主なら、1週間で完全に 習得できます。
666 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 11:25:38 ] 自己解決した。 サブルーチンの定義が、 ソースコードの最初のほうに書いてあれば ()をつけなくてもできるということか。 だったら、サブルーチンの定義は ソースコードの後ろでなくて、 最初のほうに書いたほうがいいんでないの?
667 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 11:29:43 ] >662 printfもある。 >666 お好きなように。 俺はCで言うところのプロトタイプ宣言だけしてるけど。
668 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 12:42:31 ] unlinkって自分は消せないのね。
669 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 12:45:37 ] 日本語のファイル名ってunlinkで削除できないの? 「あ.txt」とか。
670 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 12:54:58 ] SND_ASYNCのフラグの書き方と指定の仕方がわからない。 homepage3.nifty.com/hippo2000/perltips/sound.htm#item_SND_ASYNC
671 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 12:55:45 ] Win32::Sound::Play(SOUND, [FLAGS]) この例を見て、 Win32::Sound::Play("file.wav",[SND_ASYNC]); と書いたが、なんか違うようだ。
672 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 13:23:23 ] perl2exe おもしろ
673 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 21:43:36 ] >671 なんでリストにしてんの?
674 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 21:56:11 ] >>673 書き方間違ってる? 書き方のサンプルがないから 正直、よくわからんかった。
675 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 21:57:28 ] use feature qw( :5.10 ); system q|cls|; sub abc{ state $a=10; say $a; $a--; if ($a>=5) { abc(); } } abc; ------------------------------ サブルーチンの再帰呼び出しで、 サブルーチン内部の定義部分で、 自分自身を呼び出すときには、 ()パーレンの記述は必須なんだね。 これを省略しようと少し考えたけど 無理っぽい。
676 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 21:59:11 ] &アンパサンドをつけてサブルーチンを呼び出すのは 古いやり方なので極力さけましょう、とか書いてあるので &をはずして呼び出そうとするんだけど、そしたら今度は ()パーレンの記述が必須になってしまう。()パーレンのほうが 100倍メンドイと思うんだけど。 、、と思うなら、ソースコードの最初のほうに サブルーチンの定義を書けばいいじゃん、と思ったけど 通常の関数ならそれでいいけど、再帰の場合はやっぱり無理なのね。
677 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 22:01:10 ] stateとmyって実質同じだよね。 どっちも変数をプライベート化して、 どっちも歴史狩る変数っていう。 ただ、stateの方は一回だけ実行されるという 違いがあるけど。 それで、すべてのmyをstateに変更しようかなと おもうんだけど 、stateにすると何か問題ある?
678 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 22:01:58 ] ちなみに歴史狩る変数っていうのは、 過去の歴史あるソースコードを無効にする って意味です。
679 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 22:10:44 ] open( FD, "| C:\\WINNT\/NOTEPAD.exe"); ↑これでメモ帳を開くのと、 system関数でメモ帳を開くのと、 何か違いはありますか? 見た目は同じように見えるんですが。
680 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 22:31:45 ] >674 一般的に、[ ] は省略可能な要素を意味する記号。
681 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 22:35:24 ] >>667 効果が全く違うぞw
682 名前:681 mailto:sage [2008/09/06(土) 22:36:20 ] >>681 はアンカーミス。>>677 への突っ込み。
683 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 22:42:21 ] >675 サブルーチンの宣言と定義を切り離せばいける。面倒だけど。 use feature qw/:5.10/; sub abc; # 宣言だけして… sub abc { # こっちで定義 state $x = 10; say $x--; if ($x >= 5) { abc; } } abc;
684 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 22:52:15 ] >>683 あー 内容が書いてなくても 宣言だけ先にしてあれば ()パーレン無しでもいけるんだー
685 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 22:53:43 ] >683 Cとかに慣れるとそんなに面倒でもないけどねー。 さくっとコメントでサブルーチンの説明するときとか、長くなるんで先頭に並べちゃってる。 >676 省略はPerlの美学なので、 出来る限りタイプを少なくするという思想は正しい。 だけど、わざと面倒な書き方をしておいて、 かつ、そこから外れた書き方をしたらエラーが出るようにしておく、という思想もある。 もしミスった時に、こっちの方が分かりやすいからだ。 この2つはどっちも正しい。 どっちを採用するかは自分で決めるしかない。 仕事でやっているならば、諸乳母で指定される場合があるのでそれに従おう。
686 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 22:55:54 ] 諸乳母ってなんだ、職場。
687 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 04:25:30 ] 質問です。 先日MacPortsで自動アップデートを実行してから下記のエラーがperl実行時に出てくるようになりました(その前までは出なかったのに…) Use of uninitialized value in concatenation (.) or string at /opt/local/lib/perl5/5.8.8/darwin-2level/Scalar/Util.pm line 30, <> line 6. CPANの自動アップデートも行ったのですが、同じエラーが出続けてしまいます。 プログラム事態は特に問題なく実行できているのですが、これを解決するにはどうしたら良いのでしょうか。 よろしくお願いいたします。 MacOSX 10.5.4 MacPorts 1.600 Perl 5.8.8
688 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 05:22:27 ] >>687 no warnings;
689 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 06:24:49 ] no warnings野郎がキチガイだから無視しないとだめ。 で、回答だが、変数を初期化しないのが理由でウオーニングが出ているのだから、 $aとかの変数をすべて、my $aとかで初期化すれば解決する。 それはUtil.pmの30行目と 本体の6行目にある。
690 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 06:25:56 ] ところでみんなこのシリーズみてる? perl tutorial jp.youtube.com/profile_videos?user=bermnz&p=v
691 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 06:39:15 ] >>688 Scalar::Utilの30行目の警告という事は分かってるんです。消し方も。 ただ気持ち悪いじゃないですか。 CPANで最新のソースを調べても特に修正は無いし、 実際のソースを見てもどうしてそうなるのか分からないんですよね。 search.cpan.org/src/GBARR/Scalar-List-Utils-1.19/lib/Scalar/Util.pm -------------------------------------------- if (grep { /^(dualvar|set_prototype)$/ } @_ ) { require Carp; Carp::croak("$1 is only avaliable with the XS version"); #エラーにある30行目はここ } -------------------------------------------- $1ってのに値が入ってないとかそういう意味だと思うのですが、 値が入らないのであれば、この29~30行目は実行されないはずではないのでしょうか…。 初心者なりに色々考えてるのですが全く分からない…。
692 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 06:45:48 ] >>689 no worningsはやっぱりダメですよね! どの本見ても書いてあったので、必ず入れてます。 本体の6行目というのは、Util.pmを直接の 本体という意味でしょうか?(どいつが本体かわかん無い…) Util.pmを直接自分の書いたスクリプトは実行していなく、 自分の書いたスクリプトの6行目は use Encode; なので、なんも問題が無いと思うのですが。 すみません、ご教授下さい。
693 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 07:05:38 ] ここで空気を読まずに別の質問 Perlもサイドエフェクトってあるの?
694 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 08:10:35 ] >>691 grepを一旦、@aで受けるとかどう? if (my @a = grep { /^(dualvar|set_prototype)$/ } @_ ) { require Carp; Carp::croak("@a is only avaliable with the XS version"); #エラーにある30行目はここ }
695 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 11:51:40 ] >>691 こんな感じの事が起きている。 $_ = q/abcd/; { m/^(abcd)$/; print "a:$1\n"; } print "b:$1\n"; しかし、grep BLOCK LIST の代わりに grep EXPR,LIST を使っても同じ結果になるので要注意。 理由は未確認。(内部的に BLOCK になっているのだろう) このエラーが放置されている理由は、おそらくこのエラーが報告されていないから。 なにしろ、これはXSバージョンが使えない場合かつユーザーが(デフォルトで輸出されない)特定の 処理を要求した場合のみに発生するエラーだから。 今までエラーが出なかかったのは、単にXSバージョンが使われていたからだろう。 で >>687 にあるようにプログラムの動作に問題が無いならば、dualvarまたは(/かつ)set_prototype を必要無いのに要求していたという事なので、単にこれらを要求する事を止めればよい。
696 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 12:33:07 ] >>695 $数字はダイナミックスコープだからブロックを抜けたら元に戻るというのは その通りだが、今回の例は抜けてないので違うんじゃない?
697 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 15:38:34 ] コマンドラインで引数を与える時に、間違った変数名で入力した場合に Usageを出したいのですが、どうすればいいでしょうか?
698 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 15:40:28 ] 正規表現で判定するか、CPANからモジュール引っこ抜いてきて判定する 後はprintでusage出せばおk
699 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 15:43:47 ] その正規表現の方法がわからないのです。 C:xxx.pl -aaa=1を間違って C:xxx.pl -aa=1と入力なのですが・・・・ 中で変数を宣言してなくて、外でしているのですが、変数名を見ることができるのですか?
700 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 15:46:07 ] 何を言っているのか意味不明
701 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 15:51:00 ] C:xxx.pl -aaa=1を間違って C:xxx.pl -aa=1入力した場合エラーをだしたい -aaa=1 が正しく -aa=1 が間違い プラグラム中には our $aaa は宣言してますが our $aa は宣言していません なのですが 説明下手ですいません
702 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 16:13:28 ] ああ、そうか。 引数で -aaa って言ったら、普通は a が3つって解釈すると思う。 んで、素直に if 文じゃダメ?
703 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 16:14:21 ] >>694-696 XSや、エラーを出す原因となっているスクリプト部分や、 dualvar、set_prototypeなど何だか分からない言葉が 大量に出てきたので、勉強して出直してきますw 自分の書いたプログラム以外の物を編集するのは 気が引けるので、環境を整える方向で考えてみます。 ありがとうございました。
704 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 16:17:05 ] >>701 必要な変数に値が与えられたかどうかを判別するので対処出来るのでは? 与えられた引数全てを見れるような方法が欲しいってこと?
705 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 16:54:19 ] >>697 > コマンドラインで引数を与える時に、間違った変数名で入力した場合に > Usageを出したいのですが、どうすればいいでしょうか? ?を使えばいい。
706 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 17:12:25 ] 引数のオプション名を変数名に紐付けるのではなく、 ハッシュキーに紐付けることで少し楽になる。 あとは Hash::Util を使ってロックした上でエラートラップするなり、 keys %hash リストの各要素と順次 eq するなり。
707 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 17:23:51 ] >>699 なんでそんな入り組んだややこしい遠回りで手の込んだことをしたいの? ふつうにGetopt::Longで処理するのではだめなのか?
708 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 17:27:42 ] 宣言されている変数に値を代入したいという意味なら、こうするのはどうだろうか? # 宣言時にとりあえず空文字をいれておく our $aaa = ""; our $bbb = ""; for (@ARGV) { defined ${$1} and ${$1} = $2 if( /-(.+)=(.+)/ ) }
709 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 19:18:10 ] >>696 今回は grep BLOCK LIST なので、マッチ演算が行われた(目に見える)ブロックから抜けている罠。 695をブロックで書いたのは $数字 のスコープから抜けている点がブロックと同じだからなんだけど、 組み込みのgrep関数のソース(pp.c 内の pp_grepstart)を見たら中でENTER を行っていた(==grepの 中にブロックに入る/抜ける時と類似の処理が含まれていた)ので、ブロックでも構わなくね? そうでなくても組み込み関数のオーバーライドがありうるので、関数はブロック(サブルーチン)のよう に扱う方が無難だと思うのだが、Scalar::Util の作者はそう考えなかったみたい。
710 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 19:50:06 ] >>709 grepのあとがブロックになってるのを見落としていた。スマン。 で、これどうみてもScalar::Utilのバグじゃね?
711 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 20:17:01 ] itpro.nikkeibp.co.jp/article/NEWS/20080905/314238/ この人て有名なの?
712 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 20:31:43 ] 【コミュニティーサイト作成有志募集!】 現在コミュニティーサイトGaccoで有志を募集しています。 詳しい概要等は →www36.atwiki.jp/vipvipschool/ こちらをご覧下さい。 ・プログラミングができる方 (現在技術陣は6名です) ・ウェブデザイン・画像編集能力がある方 (現在デザイン陣は2名です) ・宣伝能力のある方 (人員募集やサイト完成後の宣伝等。動画編集ができると○。) を募集しています。 気軽にIRCに参加、またはsuteあっと2ch.bona.jpまでメールを下さい。 スレッド:ttp://ex14.vip2ch.com/test/read.cgi/news4gep/1219068297/l50
713 名前:デフォルトの名無しさん [2008/09/08(月) 05:24:01 ] perlを始めて日の浅い初心者です。 練習として、google検索をしてその件数を出すというプログラムを書いているのですが、 出力と手動で検索した時の件数に誤差が生じます。 ソース挙げておきますので、良ければご指摘下さい。 よろしくお願いします。 use Web::Scraper; use URI; use utf8; use Encode; my $scraper = scraper { process '/html/body/div[2]/p/b[2]', 'kensuu' => 'TEXT';}; my $uri = new URI('www.google.com/search '); $uri->query_form( hl => 'ja' , q => 'コミュニケーション'); my $res = $scraper->scrape($uri); print $res->{kensuu}; 出力 33,500,000 手動で検索 33,900,000 となってしまいます…。
714 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 05:38:29 ] use feature qw( :5.10 ); system q|cls|; for (1..120) { state $a="a"; print $a," "; $a++; } say""; #---------------------- ↑なにこれ 楽しい from jp.youtube.com/watch?v=v7riTEp9v2s&feature=related
715 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 05:46:48 ] use feature qw( :5.10 ); system q|cls|; open FH,">","1.txt"; for (1..120000) { state $a="a"; print FH $a," "; $a++; } say "done.Please check out 1.txt"; #--------------------------------- たのしー これって出力結果を要素ひとつづつ 配列に入れたりもできるのかな?
716 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 05:58:40 ] use feature qw( :5.10 ); system q|cls|; open FH,">","4.txt"; for (1..12000000) { state $a="a"; print FH $a," "; $a++; } #-------------------------- ↑これで1千2百万回まわしたら、 70MBのテキストファイルになって、 エディタで開いたら表示がぶっ壊れた kazato.run.buttobi.net/cgi-bin/material/src/vm002_0268.png
717 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 06:12:48 ] >>713 $uri->query_form( hl => 'ja' , q => 'SEX'); この検索ワードだったら 手動とスクリプトで、 ぴったり件数一致しました。
718 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 06:15:49 ] 何件か試してみたけど、 日本語のキーワードだとずれる、 アルファベットのみだと、ぴったり一致する、 という特性があるみたいですね。
719 名前:デフォルトの名無しさん [2008/09/08(月) 06:18:33 ] 俺も何件か試したが、なんでズレるんだ?
720 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 06:31:19 ] >>719 英語のみのキーワードだとずれないでしょ?
721 名前:デフォルトの名無しさん [2008/09/08(月) 06:50:05 ] ずれないけど検索するんなら、713もコミュニケーションしてるし、日本語だろうからあんまり意味ないんじゃね?
722 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 06:55:56 ] 日本語で検索しなければ良い。
723 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 11:27:12 ] シェルも使える人にお聞きしたいのですが、Perlとシェルって共通してる部分ありますか? シェルも勉強したいと思ってきたので。。。
724 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 12:12:12 ] my $q = CGI->new(); これを &Init($q); みたいにしてその中で $q->param('filename') みたいな処理を行いたくて CGIオブジェクトをいろんな引数に渡したいのですが どうやってやればいいのですか
725 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 12:17:37 ] sub Init { my $q = shift; }
726 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 12:22:19 ] おお、そんなことが ありがとうございます どこら辺の単語で出てきますか
727 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 12:23:18 ] >>723 記述的には、C程似て無いとは思う でも、言語なんて 表示、条件判定、ループ、サブルーチン作成。 こんだけ分かれば、大抵のものは組めるけどね
728 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 12:26:58 ] >>723 どちらもソフトウェアという点が共通してるよ。
729 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 12:48:54 ] > ・シェルスクリプトのことをシェルってゆーな なんとなく某所のテンプレから借りて来た。
730 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 12:50:39 ] >>713-722 多分だけど、googleに限らず大手の検索エンジンなんか数百台〜数千(数万?)台のサーバーで 構築されてるんだろうから、毎回必ず同じ結果が返って来るとは限らないんじゃない? (Yahooなんかは、同一環境でもCookeiが違えば、件数どころか上位十件が全然違うこととかもあるw) たしかgoogleは、ブラウザの HTTP_ACCEPT_LANGUAGE あたりで使用言語の優先順位を判定して 各言語のサーバへリダイレクトしてるとか聞いたことある。 (例えば、一般的な日本語ブラウザでgoogle.comにアクセスしても、co.jpの方へ飛ばされる。とか) >>726 「perl サブルーチン 引数」とか「perl shift」とか。
731 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 14:19:56 ] PerlとPHPはまったく別物なのでしょうか?関連性とかあるのかな、と。 その辺のことよく知りません。
732 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 14:35:03 ] >>731 ないから諦めてください
733 名前:713 [2008/09/08(月) 15:19:52 ] >>717-722 皆様ありがとうございます。 >>730 そうなんですか…。 じゃあ日本語を検索した際、プログラムで手動と同じ検索結果を出そうとするのは事実上困難って事ですよね…。 わかりました。 ありがとうございます。
734 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 15:25:32 ] どういう通信するか観察してきちんと真似てやればなんとかなると思うけどね。
735 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 16:19:48 ] >726 どこらへんも何も、普通に引数を渡してるだけだぜ?
736 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 21:59:04 ] 配列から指定の要素番号を抜き出して、 削除するってできるの? popの要素番号指定版。 $number = pop @array[5]; みたいな。@arrayの要素番号5が抜き出されて $numberに入り、なおかつ @array[5]は消え去る。
737 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 22:25:25 ] >>735 つsplice
738 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 22:34:02 ] >>737 つ>>736
739 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 23:44:23 ] >>39 お願いします
740 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 00:01:37 ] >>738 頭から1行ずつ読めばそのうち任意の行に到達するよ。
741 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 00:05:42 ] ところで>>713 はなにをやっているの? CGIでもないようだし、 にも関わらずWEBのデータ-を取ってきて なんか遊べるようだが、これって なんで名前なの? どういう本にのってるの?
742 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 00:18:37 ] >>741 perl スクレイピング でぐぐれ
743 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 00:27:08 ] へーこんな用語があったんだ。 初めて知ったわ。 俺の書いてきたPerlスクリプトは9割がスクレイピングだー
744 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 00:30:41 ] オライリーからも本出てるよ。 俺の初めて書いたperlはそれの第一章とかだった気がするw
745 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 02:00:44 ] #------------------1 my @a=(1..10); map {$_ = $_ *2} @a; print "@a\n"; #--------------------1 #-------------------------- #-----------------------2 my @a=(1..10); map {$_ = $_ *2} (@a); print "@a\n"; #------------------2 ↑これ、1も2もどっちも 実行できるんだけど、mapの配列の()パーレンは 必要ないってこと?
746 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 02:36:15 ] ●1 map {print $_,"\n" } 0..10; これだとちゃんと1〜10が表示されるのに ●2 map {print $_,\n } 0..10; これだとなぜかアドレスが出てしまう。 なんでだろう?
747 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 03:09:08 ] my @a=qw(aaaaa bbb ccc ddd eee fff abf haty juy ade il erat tyu dfg gu ); my @b=grep {$_=~'a'} @a; print "@b\n"; #--------------------------------------- grepのときに、スマートマッチ〜〜使えないのか。 my @a=qw(aaaaa bbb ccc ddd eee fff abf haty juy ade il erat tyu dfg gu ); my @b=grep {$_~~'a'} @a; print "@b\n"; #-------------------------------- ↑これだとエラーが出る。=〜にしないとだめらしい。
748 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 03:53:32 ] my %hash; $hash{name}='john'; $hash{age}='25'; $hash{city}='london'; print "@{[%hash]}\n"; ↑なんでこれでハッシュの中味が出力されるの?
749 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 04:03:47 ] 何故〜なの?という質問のときは、 「自分は○○されると想ったのに」と付け加えるとアドバイスしやすい。
750 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 04:24:40 ] @{[%hash]} これの記法がまったく意味がわからん
751 名前: ◆TWARamEjuA mailto:sage [2008/09/09(火) 06:59:06 BE:980633-2BP(7089)] (grep 1, each %hash) かな?
752 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 07:38:24 ] 何年ここにいて、そんな頓珍漢な解答をする? > クソコテ 実行結果すら合わねえじゃねえか
753 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 07:39:16 ] jp.youtube.com/watch?v=PIyzRW7L6eY&feature=related これの最後のやつがちょっと意味わかんないかも。 mapの lcの組み合わせたやつ。
754 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 07:44:28 ] $words="a title of a webpage"; $words = join ' ', map {ucfirst lc} split / /,$words; print "$words\n"; ↑これね。
755 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 07:47:38 ] >>754 1. スペースで split => 単語毎になる。 2. lc $_ で全部小文字($_ の表記省略) 3. 2. の結果を ucfirst で一文字目だけ大文字化。 4. スペースでくっつける