[過去ログ]
Perlについての質問箱 64箱目 (1002レス)
Perlについての質問箱 64箱目 http://mevius.5ch.net/test/read.cgi/tech/1548981877/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
458: デフォルトの名無しさん [sage] 2020/06/11(木) 20:24:12.92 ID:L2GhQgnz printする度に今見えてる$|が渡ってるんだろうな http://mevius.5ch.net/test/read.cgi/tech/1548981877/458
459: デフォルトの名無しさん [sage] 2020/06/11(木) 21:09:21.20 ID:5cioSHJn >>458 まぁ、そうですよね。無駄な処理になるし後者ですよね。 (OOP的に言うと、スコープ毎のインスタンスを参照的な) ありがとうございました。 http://mevius.5ch.net/test/read.cgi/tech/1548981877/459
460: デフォルトの名無しさん [sage] 2020/06/11(木) 22:40:57.89 ID:zOJFiWlV >>456 Perlにあっては「わざわざ」ではない。 localはダイナミックスコープ、my/ourはレキシカルスコープであることは意識しておくべき。 http://mevius.5ch.net/test/read.cgi/tech/1548981877/460
461: デフォルトの名無しさん [] 2020/06/12(金) 02:39:58.45 ID:TN61WwYv 宜しくお願いします。 $1をクリアしたい場合は「'' =~ /()/;」等として 無駄なマッチングをして空文字列を設定しないとダメですか? 数億件のデータを捌く際とか、めちゃくちゃタイムロスになりますよね? 皆様はどうされてるのでしょう? http://mevius.5ch.net/test/read.cgi/tech/1548981877/461
462: 461 [] 2020/06/12(金) 02:41:54.90 ID:TN61WwYv >>461 ↑に追記です。 $2以降のクリアも含めてお願いします。 最適な解を頂ければ幸いです。 http://mevius.5ch.net/test/read.cgi/tech/1548981877/462
463: 540 [sage] 2020/06/12(金) 02:51:00.48 ID:OceO7BHX >>461 まず、scalar変数の場合 =()はできない =''や""は明示的に空文字列を設定することになる なので既存変数をクリア、というか不定状態に設定するには = undef; あるいは数値を設定するためのシンボルを値0に戻すには = 0; undefは値として評価されれれば0,文字列として評価割れれば空文字列''が返った (と思う) http://mevius.5ch.net/test/read.cgi/tech/1548981877/463
464: デフォルトの名無しさん [sage] 2020/06/12(金) 03:17:40.95 ID:O2sQpJVa 答えではないのだけれど、そういう場面に遭遇したことがないんだよね 簡単でいいのでどんな時に必要なのかしら? http://mevius.5ch.net/test/read.cgi/tech/1548981877/464
465: 461 [] 2020/06/12(金) 03:24:01.31 ID:TN61WwYv >>463 あの…すみません。 スカラー値の評価の話をしている訳ではありません。 $1や$2や$3と言った特殊変数の値をクリアをする方法を聞いています。 これらの特殊変数に値を代入したらエラーになります。 引き続き>>461-462のベストな解をお待ちしています。 宜しくお願いします。 http://mevius.5ch.net/test/read.cgi/tech/1548981877/465
466: 461 [] 2020/06/12(金) 03:52:20.68 ID:TN61WwYv >>464 計 数億件のデータがあり、 それぞれにはCのラベルのような項目名がありまして、 それに続く文字列がその項目の値になるのですが、 (例えば「name: value…\n」な感じです) これを一時的にDBに収めるためnameをキーとしてライブラリに渡したいんです。 一般的に思いつく方法としては、 「if( $ln =~ /^(パターン)://g ){ func( $1, $ln ); … }」 とすれば良いのですが、 なにせ件数が多いので、無駄な条件文を省きたいのです。 (条件文は処理が重いので) 検証実測値では1日以上の処理速度差がでるかもなのです。 (他にも同等の処理があるのでかなり省ける感じがするんです) func()は、キーや値が未定義値もしくは空値であれば、 なにも処理をせず抜けるので、 $1がクリアできればif文を無くすことが出来ます。 そこで思いついたのが、 >>461の「'' =~ /()/;」ですが、これでは本末転倒です。 と言うのが経緯です。 http://mevius.5ch.net/test/read.cgi/tech/1548981877/466
467: デフォルトの名無しさん [sage] 2020/06/12(金) 04:05:50.63 ID:Cyxf//AW >>465 そもそも、$nはマッチしたときのみ参照する変数であるから、わざわざリセットする必要がない。 if (m/(.*)/) { say $1; } これ以上の回答は>>464に答えてから。 http://mevius.5ch.net/test/read.cgi/tech/1548981877/467
468: デフォルトの名無しさん [sage] 2020/06/12(金) 04:13:00.69 ID:Cyxf//AW あら、いきちがった。。。 そういう話であれば、気にするな、ってところやろ。w オレの感覚では、ifで判定して関数を呼び出さないほうが速そうだと思うがなあ。 Perlの処理としては、関数からすぐ戻ると言っても、呼び出しもそこからの戻りもそんなに軽くはなかったような。 「かも」とか言ってないで、真剣ならまず計測してみろ。 http://mevius.5ch.net/test/read.cgi/tech/1548981877/468
469: デフォルトの名無しさん [sage] 2020/06/12(金) 05:15:54.75 ID:O2sQpJVa 説明してくれたけど、やっぱイマイチ分からん $1をクリアして無条件でfunc( $1, $ln )を呼び出したい、ということかしら その時funcは通過するだけ、と パフォーマンスを気にするならやっぱり $1 && func( $1, $ln )とかの方がいいと思うけどな 多分、何か事情があるのでしょう。 美しくはないけど'' =~ /()/;なら誤差の範疇と思いますよ。 数値としてはベンチマークで http://mevius.5ch.net/test/read.cgi/tech/1548981877/469
470: デフォルトの名無しさん [sage] 2020/06/12(金) 05:31:29.45 ID:P559B0Rd $1をやめる選択肢は? ($label) = $ln =~ /^(パターン)://; func($label, $ln); http://mevius.5ch.net/test/read.cgi/tech/1548981877/470
471: デフォルトの名無しさん [sage] 2020/06/12(金) 05:32:22.97 ID:P559B0Rd あ、/ 多い…… http://mevius.5ch.net/test/read.cgi/tech/1548981877/471
472: デフォルトの名無しさん [sage] 2020/06/12(金) 05:38:56.76 ID:O2sQpJVa 答えじゃないんだけどさ、 $x = $ln =~ /^(パターン):/ && $1 これで以降は$xを使う、とか。 http://mevius.5ch.net/test/read.cgi/tech/1548981877/472
473: デフォルトの名無しさん [sage] 2020/06/12(金) 05:48:44.96 ID:P559B0Rd え、array使わないの? 俺としては ($label) = $ln =~ /^(パターン):/; func($label, $ln) if $label; を推したい http://mevius.5ch.net/test/read.cgi/tech/1548981877/473
474: デフォルトの名無しさん [] 2020/06/12(金) 07:57:32.00 ID:kFexpNJ3 Ruby で特殊変数などは、スレッドローカル変数だから、 マルチスレッドでも共有しないから、安全だけど 特殊変数をクリアする必要など、考えたこともない http://mevius.5ch.net/test/read.cgi/tech/1548981877/474
475: デフォルトの名無しさん [sage] 2020/06/12(金) 09:26:27.43 ID:Xic6e0Vs マッチに失敗してるのに古い$1を使ってしまって、 みたいなケースはちょいちょいあるな それはクリアしてなかったからではなくて、失敗をトラップしてないバグ http://mevius.5ch.net/test/read.cgi/tech/1548981877/475
476: デフォルトの名無しさん [] 2020/06/12(金) 13:25:45.07 ID:Qkj+08r5 >>466 もうCで書いちゃえよ。速いよ。 コロンまでの文字列抜き出すのは簡単だろう。 http://mevius.5ch.net/test/read.cgi/tech/1548981877/476
477: デフォルトの名無しさん [] 2020/06/12(金) 13:29:01.14 ID:Qkj+08r5 速くしたいなら正規表現でマッチするかどうかなんてことやることそのものが間違いだとも思える。 同じPerl使うのであってもindex関数使うとか、他にやりようがあるんじゃないか? http://mevius.5ch.net/test/read.cgi/tech/1548981877/477
478: デフォルトの名無しさん [sage] 2020/06/12(金) 14:03:27.64 ID:Xic6e0Vs 大量のデータを効率よく扱うのは、データベース構築するのが正解 個人が扱う範囲だと、テキストで持って全検索で困らないけど、 量が増えるとそのうち破綻する http://mevius.5ch.net/test/read.cgi/tech/1548981877/478
479: デフォルトの名無しさん [sage] 2020/06/12(金) 14:24:52.04 ID:uUh54YqY >466 $ln =~ /^(パターン):|(.*?)/ にすると、「^(パターン):」にマッチしないときに$1を空文字にできる。 http://mevius.5ch.net/test/read.cgi/tech/1548981877/479
480: デフォルトの名無しさん [sage] 2020/06/12(金) 14:50:38.25 ID:uUh54YqY ただ、(試してはいないが)if文のオーバーヘッドより、 関数呼び出しのオーバーヘッドのほうが大きいと思うけどな。 http://mevius.5ch.net/test/read.cgi/tech/1548981877/480
481: デフォルトの名無しさん [sage] 2020/06/12(金) 15:40:26.50 ID:bpI5hVyH そこまで速度に気にするならC++とかで書いた方がいい気がするね http://mevius.5ch.net/test/read.cgi/tech/1548981877/481
482: デフォルトの名無しさん [] 2020/06/17(水) 18:41:04.46 ID:TVwLVBUa そんなデカいデータをよくパールでやるね。 C で書け。 http://mevius.5ch.net/test/read.cgi/tech/1548981877/482
483: デフォルトの名無しさん [sage] 2020/06/28(日) 09:30:04.48 ID:mI+4+ud7 https://developers.srad.jp/story/20/06/26/1324207/ > Perl 7が発表される。実質的にはPerl 5系のリネーム > ストーリー by hylom 2020年06月26日 17時08分 > 現代における素人にはオススメできない言語 部門より 現代における素人にはオススメできない言語 …なら、文字列処理をやりたい素人は何を学べばいいの? http://mevius.5ch.net/test/read.cgi/tech/1548981877/483
484: デフォルトの名無しさん [sage] 2020/06/28(日) 11:26:26.20 ID:OE2OIMMC 5の後継なら7にする必要あるの? http://mevius.5ch.net/test/read.cgi/tech/1548981877/484
485: デフォルトの名無しさん [sage] 2020/06/28(日) 13:29:12.55 ID:3gXsrtkR >>484 事情を知らなくても最新版だとわかりやすくするために。 Perl6、Rakuがあるなかで、Perl5と言われたら古いとかEOLとかの疑いを持たれかねんから。 それに、必要であれば非互換も? http://mevius.5ch.net/test/read.cgi/tech/1548981877/485
486: デフォルトの名無しさん [sage] 2020/06/28(日) 18:17:09.91 ID:UG2zXSFM お型付けできるようになったら嬉しいな http://mevius.5ch.net/test/read.cgi/tech/1548981877/486
487: デフォルトの名無しさん [sage] 2020/06/28(日) 19:55:20.21 ID:DGGKS5Fb ついに後方互換捨てるのか! http://mevius.5ch.net/test/read.cgi/tech/1548981877/487
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 515 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.013s