Perlについての質問箱 63箱目
■ このスレッドは過去ログ倉庫に格納されています
CGIについての質問は板違いです。WEBプログラミング板でどうぞ。 CGIとPerlの区別がつかない人もWEBプログラミング板に行ってください。 (WEBプログラミング板: http://kohada.2ch.net/php/ ) このスレでは(CGI以外の)純粋にPerlのみに関係する質問を取り扱っていこうと思います。 スレ違いの質問にはスルーか、速やかな誘導をお願いします。 荒らしはスルー推奨。 "The duct tape of the Internet" こと、Perlについての質問箱です。 "There's more than one way to do it" ということで、 Perlの奥深さについて皆で語り合い、追求してまいりましょう。 www.perl.org/get.html Download Latest Stable Source (5.18.2) ▼前スレ Perlについての質問箱 61箱目 http://toro.2ch.net/test/read.cgi/tech/1381561905/ Perlについての質問箱 62箱目 http://toro.2ch.net/test/read.cgi/tech/1385039352/
一行レスにこれだけの長文で応えるのは愛があるからだと思うの 無理のある例えだが、配列がロケット鉛筆だとしたら <0[1][2][3] ケツに押し込むのが push <0[1][2][3] ← [4] ケツから飛び出ちゃうのが pop <0[1][2] → [3] 芯を引っこ抜くのが shift <0 ← <0[1][2] 先から無理矢理突っ込んじゃうのが unshift → <0[1][2][3][4] まあどうせすぐ忘れるだろ 結局は染み付くまで調べるのを繰り返すしかない >>535 いやいや、毎回調べるのも十分ありだと思うぞ。 俺はそのうちになんとなく覚えちゃったことけっこうあるよ。 うろ覚えで使うとバグの発見に苦しむんで ほんのちょっとでも不安を覚える感じがしたら大丈夫だとは思ってても 必ず調べる方が良いよね 俺も毎回調べてることは色々ある 同じことを100回調べた疑いすらある そんなこと言ってるとまた精神障害者の>>536 に記憶障害とか言われるぞw 毎日のように使ってりゃそりゃ忘れることは無いだろうけど 数ヵ月とか間を空けると忘れてて調べなおすことはままある 記憶障害って言われるのはちょっときつい 覚えにくいことは自分で一覧表を作ると良い C#の宣言一覧とか目につく所にファイルしてある shiftは考えてみたけど、底の抜けた箱に物が詰まってて、箱自体を上にシフトすると一番下の物がまろび出てくるってイメージかな 干草プッシュだけ覚えときゃなんとかなる気がするが、ロケットペンシル記憶術も捨てがたい 配列のスライスとリストのスライスは微妙に仕様が違うんだな。最近まで気づかなかったよ。 モジュールのインストールすらできないPerlはマジでゴミ 膨大な依存関係を調べて手作業でインストールすればできないことはないのかもしれないが、 そんな暇があるのはニートくらいだろ ゴミニート専用言語Perl 今ケツの穴が痛くてモジュールのインストールができない ・・・まで読んだ HTTP::Liteモジュール使うのと、ソケットでガチアクセスするのと、systemでwgetを実行するのではどれが一番速いですか? HTTP::Liteは余計な処理がある分遅い、wgetはネイティブだがforkする分遅い。よってsocketかな >>556 ありがとうございます。 それではソケットでガチアクセスします。 ネトゲで寄生してくる香具師まじでウザい レベルも装備も明らかに足りてないくせにパーティー入ってくるんじゃねーよ 前半はやる気を見せるためか最前線で敵に突っ込んでいって何度も即死 蘇生スキル持ちの職がいるとはいえMPも有限だし、死ぬと分かってるのに突っ込んで手間かけさせるな 後半は後ろからついてくるだけ パーティーの人数によって敵の強さが変わるから、攻撃も回復もしない寄生虫一匹分、敵が強くなってるんだよ まじでお荷物なんだが そういう糞雑魚がパーティーに入れない(入ったとしてもデメリットが大きい)MMORPG作りたいんだけど、 PerlでMMOサーバー作れる? そうした寄生のできないちゃんとしたMMORPGを作りたい 誰とは質問言わないが、明後日の方向向いたレスしてる知的障がい者がいるな Perlで作れるかどうかという質問なんだがな Perl使ってると日本語すら理解できなくなるのか、それとももともと日本語を理解できない朝鮮人が紛れ込んでいるのか 自分にできないものだから、それをこじらせて 自分以外の人間全員できないと思うようになったのか ここまでくると哀れだな ID:Ba0Z9f3i 俺もこいつには無理って意見に全面的に賛成するわ。 そもそもPerlで作るって発想が馬鹿。 それ以前にそもそもPerlなんてゴミを使おうと思う時点で馬鹿。 使い物にならない時代遅れの言語が候補に出てくる時点でプログラマとして致命的。 サーバーサイドをPerlで作ってるところはそこそこあるだろう だから君には無理だって perlでmmoサーバ作れないどころか想像すらできないみたいだし 俺は作れるかどうかを疑問視してるんでは無いと思うんだがな >インタプリタを? これをどういう風な意味に受け取ってるのかだろう 言語としてはPerlはチューリング完全を満たしています 最初に調べることだと思われますが mmoサーバも作れないゴミ乙 言語がゴミなのか、perl厨がゴミなのか、それとも両方か (´・ω・`) / `ヽ. お薬増やしておきますねー __/ ┃)) __i | / ヽ,,⌒)___(,,ノ\ (´・ω・) チラッ / `ヽ. __/ ┃ __i | / ヽ,,⌒)___(,,ノ\ (´・ω・`) / `ヽ. 今度カウンセリングも受けましょうねー __/ ┃)) __i | / ヽ,,⌒)___(,,ノ\ オンラインゲームを支える技術、中嶋謙互、2011、技術評論社 サーバの構築・運営、通信量など、 オンラインゲームのほぼ全工程を、説明した本です 大人数用MMOと少人数用P2Pの、両方について書いてある 確か言語は、C++ だったかな? そらそうだろ、Perlなんて電子産廃なんだからC系とかPHPになるだろうよ。 Perlで何かを作ろうってほうがおかしい。 PHPに代えたって意味無いじゃん 同様の理由でPythonも却下 >>573 大規模なオンラインゲームだと むしろJavaを使うんじゃないかな? 人集めしやすいし 寄生できないmmoとか簡単そうだけどな (1)死ぬたびに獲得経験値1/10 (2)3回死亡でダンジョンから強制排出&所持金半減&獲得経験値ゼロ (3)経験値はパーティーメンバーの敵に与えたダメージ比率 (3)があれば身の丈に合ってないダンジョンの時点で経験値はほぼゼロ ほぼゼロなところへ(1)があるから限りなくゼロに近くなる 寄生でダンジョンクリアだけしようにも(2)のハイリスクがある >>581 回復職やサポート職の経験値もなしということでしょうか。 昔はこれでアラーにならなかったのですが、perl5.8でこれを実行すると @{$_[2]}が原因でこけてるらしいです。 どのように変えればよいでしょうか my ( @WdayArr ) = ( $_[2] )? @{$_[2]} : ( 'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat' ); >>583 # http://perldoc.perl.org/5.8.9/Scalar/Util.html use Scalar::Util qw(reftype); my @WdayArr = reftype($_[2]) eq 'ARRAY' ? @{$_[2]} : qw(Sun Mon Tue Wed Thu Fri Sat); >>584 ありがとうございます。やってみます。 >>585 曜日の文字を配列に指定する部分です。なければ、英語の曜日が入ります >>586 Perl 5.16.3 だが、下のスクリプトで1行目を入れても 消しても、きちんと動くぞ。 $_[2]に配列のリファレンス以外のものを入れたのだろう。 (エラーメッセージにそう書いてあるはずなんだが) ----------------------------------------- $_[2] = [qw(a b c d e f g)]; my ( @WdayArr ) = ( $_[2] )? @{$_[2]} : ( 'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat' ); print @WdayArr; >>588 use strict;を指定すると参照ダメみたいなエラーが出るので とりあえずuse strict;を外して応急処置しています。 参照渡しができなくなったんでしょうか こういう時はエラーメッセージをそのまま貼るのが正解 このようなエラーが Can't use string ("ARRAY(0x10b0458)") as an ARRAY ref while "strict refs" in use at obj.cgi ARRAY(0x10b0458) というのは配列リファレンスを文字列として評価した時に出てくる 関数の呼び出し元で配列をそのまま渡さずにダブルクォートで囲うなどして文字列化してしまっているのだろう ありがとうございます。関数の実行側のほうを確認します。 Perlはマジで糞だな リファレンスはリファレンスで同じじゃねーの? バックスラッシュ付けたリファレンスでも種類によって違うとか意味不明 Cの共用体のようなことしなければ、 ある「型」のリファレンスは その「型」のリファレンスのままでよい。 それ以外の使い方をすれば、「間違っている」として エラーを吐いてくれるのが有難いではないか。 ただ、リストのリファレンスをハッシュの リファレンスとして使いたい時(またはその逆) がたまにあるが、それは可能にしてほしいと思う。 # こういうのじゃいかんか? my $ref_to_hash0 = +{ @{ $ref_to_array0 } }; my $ref_to_array1 = [ %{ $ref_to_hash1 } ]; >>597 無駄なものがあって読みづらい my $ref_to_hash0 = { @$ref_to_array0 }; my $ref_to_array1 = [ %$ref_to_hash1 ]; 何がしたいのかわからん。 キーと値が交互に出てくるものを ハッシュかリストに変換したいのか? my $ref_to_hash0 = { $ref_to_array0->@* }; my $ref_to_array1 = [ $ref_to_hash1->%* ]; Javaのクラス周りに慣れるとPerlのクラス周りは本当に不自由だと気付く 比較例に出すのにJavaのクラスなんぞを持ち出すのもどうかと xp 32bit xp対応のアクティブパール(ActivePerl)がダウンロードできないです 旧バージョンはどこからダウンロードできますか? >>602 active perl old version でググると、色々出てくるぞ。 実際、どれが使えるのかは知らんが。 $str = "LIST( '2016123456','2015123456','2017987654',…) という$strがあった時に、シングルクオートに囲まれた部分だけを取り出して @listに突っ込みたいんだけどどう書いたらいい? splitの正規表現でいけるかと思ったけどどう書いていいかわからない。 >>602 5.16なら間違いなく使えてる 5.18と5,20はファイル名に64intがくっついてて動くかどうかはわからない 今activesite見てきたら、まあ流し読みしかしてないけど、古いバージョンは有料で提供してやるよって買いてあった Need Perl on production servers or access to Perl 5.6, 5.8, 5.10, 5.12, 5.14, 5.16, 5.18 or 5.20? Learn more about ActivePerl Business Edition -------------------------------------------------------------------------------------------------------------------------- Get the language version you need on the platform you want. The following versions are available for purchase with Business Edition+: ActivePerl 5.8, 5.10, 5.12, 5.14, 5.16, 5.18, 5.20, 5.22, 5.24 ActivePython 2.5, 2.6, 2.7, 3.2, 3.3, 3.4, 3.5 ActiveTcl 8.4, 8.5, 8.6 >>604 push @list, $1 while $str =~ /'([0-9]+)'/g; >>604 $str = "LIST( '2016123456','2015123456','2017987654',…) $str =~ s/LIST/@list=/; eval($str); でいいんじゃね? >>608 > push @list, $1 while $str =~ /'([0-9]+)'/g; 惜しいね。それやるならこうだよ @list = $str =~ /'([0-9]+)'/g; >>611 読みやすさなら上の方が良くね? 新人に引き継ぐ時の事考えると >>602 2014年にダウンロードした ActivePerl-5.16.3.1604-MSWin32-x86-298023.msi を持っている。 ただ、Active State が古いバージョンを有償でのみ提供 しているのに、勝手に古いバージョンをうpしていいものか解らん。 そのあたり、クリアにしたら、どこかにうpしてやってもいいが。 m//g の形式でグローバルマッチの意味がないように思うが >>614 m//g をリストコンテキストで使うと、 全てのマッチ部分のリストが返される。 あると高速化できるようなrecommendsだけどインストールされていないモジュールを一覧出来る方法を教えて下さい >>602 googleでググったらすぐに見つかったけど? https://xray-engine.org/index.php?title=ActivePerl (このサイトは開くとき継続しますかって警告が出たんで ルート証明の認証に問題があるかも知れない 一応Java ScriptとActiveXの実行は切ってアクセスしたほうがいいだろう) 一応俺が使ってる(XP 32bit) ActivePerl-5.20.3.2003-MSWin32-x86-64int-299574.msi をダウンロードして保存していたファイルと比較してみたけど一致したから問題ないと思う あと、5.22.1も試してPerlとしては動いたので 現行ダウンロードできる5.22.3も大丈夫じゃないかな? (インストーラがexeに変わってるけど) あと俺が使えると言った5.22.1を何故使ってないかと言うと WSHから何故か正常に使えなかったので、使える5.20.3を使ってる https://amaten.com/ こんなサイトの情報をテキストか何かで取得したい LWP::Simple とかでは取ってこれない 何を使うと一番簡単にできる? >>602 XPで動くかは試してないけど、Strawberry Perlっていうのもあるよ どうしてもActivePerlじゃないとだめなの? おれ XP で Strawberry Perl つかってる ActivePerl はモジュールの対応が遅いから乗り換えた >>617 のところでActive Perlの古いのから最新まで全部ダウンロードできるじゃん それで解決だろ >>624 それだけだったらLinuxやFreeBSDなどを使うって方法もあるだろ? だからM$に金を払うのがいやだけど、MSのOSが好きという理由であるはずだ もしくはMS以外のOSがクソだっていう可能性もあるけど >>618 perlはもう進化が止まってるので、あんまり新しいことは出来ない 自分で作るなら別だけど rubyやpythonなら整ってる筈 >>618 もう見てないだろうけど HTML::TreeBuilder HTTP::Daemon LWP::UserAgent WWW::Scripter くらいでなんとかなると思うよ。簡単かどうかは知らんけど大体なんとかなってる。 最近はperlは余り聞かないな 中学生の時にはブームだったけど……。(何十年も前) 学校ではpython とかだと思う。C# java が主力? とにかく、滅多に聞かないな Perlは全然進化しないからな 一年ちょっと前に6がでて音沙汰なし 7はいつ出るんだ?って状態 >>634 > 実用性を重視するならJava一択 それって言語の実用性じゃなくて 人材的な意味での実用性だよな つまりJavaは色んな所で使われてる言語だから Javaできますって言っておけば採用されやすい。 自分が実用性がある人間になりたいならJava一択 ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.4 2024/05/19 Walang Kapalit ★ | Donguri System Team 5ちゃんねる