[過去ログ]
Perlについての質問箱 64箱目 (1002レス)
Perlについての質問箱 64箱目 http://mevius.5ch.net/test/read.cgi/tech/1548981877/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
446: デフォルトの名無しさん [sage] 2020/05/30(土) 18:54:59.01 ID:h49XlInt >>445 >>440はその前の話やろ。 シェバンがあるだけで、テキストファイルが勝手に起動されたら恐ろしいわ。w http://mevius.5ch.net/test/read.cgi/tech/1548981877/446
447: デフォルトの名無しさん [sage] 2020/05/30(土) 19:43:41.34 ID:GvMJ9/EG >>432 おじいちゃん(´・ω・`) http://mevius.5ch.net/test/read.cgi/tech/1548981877/447
448: デフォルトの名無しさん [sage] 2020/05/31(日) 02:15:32.98 ID:MeZ7svrP 言語変えて作り直すって、俺の感覚ではシステム置き換えのイメージだわ コンパイル済みのバイナリならともかく、スクリプト言語動かすって環境づくりも入るじゃん http://mevius.5ch.net/test/read.cgi/tech/1548981877/448
449: デフォルトの名無しさん [] 2020/05/31(日) 02:44:16.68 ID:pTVQa+4z >>445 >>440に書いてあること読んでないだろ。 http://mevius.5ch.net/test/read.cgi/tech/1548981877/449
450: デフォルトの名無しさん [sage] 2020/05/31(日) 03:40:37.55 ID:qe5b9Icc その前って何? だからシェバン使えば拡張子なんか使う必要はないってことだよ? >>439みたいな書き換えはいらないってことを言ってる あと自演して書き込みは見苦しいぞ http://mevius.5ch.net/test/read.cgi/tech/1548981877/450
451: デフォルトの名無しさん [sage] 2020/05/31(日) 04:22:23.87 ID:fhA8y4ka 読解力理解力がなくて、複数から指摘されたからって、自演扱いで返すとは見苦しいぞ。 http://mevius.5ch.net/test/read.cgi/tech/1548981877/451
452: デフォルトの名無しさん [] 2020/05/31(日) 05:26:43.75 ID:pTVQa+4z >>450 それ何のOSでの話? http://mevius.5ch.net/test/read.cgi/tech/1548981877/452
453: デフォルトの名無しさん [] 2020/06/11(木) 19:05:11.82 ID:5cioSHJn 「local $| = 1;」と言う記述見たんですけど、 「$|」の局所化って意味あるのでしょうか? ただ単に「$| = 1;」と等価であり「local」を記述しても無駄な気がするんですけど、 私の勘違いでしょうか? 「local $| = 1;」とやることで、 そのファイルの出力だけみたいな感じになるのですか? となると、 同プロセスなのに標準出力バッファが出力毎に別個に用意されてる事になってしまいますよね? 分かるかた教えてください。 http://mevius.5ch.net/test/read.cgi/tech/15
48981877/453
454: デフォルトの名無しさん [sage] 2020/06/11(木) 19:32:41.35 ID:zOJFiWlV >>453 スコープを抜けたときに、もとの値に戻る。 http://mevius.5ch.net/test/read.cgi/tech/1548981877/454
455: デフォルトの名無しさん [sage] 2020/06/11(木) 19:37:09.97 ID:YKNmcAQr 横からだけど知らなかった… 毎回もとの値別変数で退避してた http://mevius.5ch.net/test/read.cgi/tech/1548981877/455
456: デフォルトの名無しさん [sage] 2020/06/11(木) 19:53:05.96 ID:L2GhQgnz なんとなく直感的にグローバル変数だけだと思ってた だから元の値を退避しておくという発想の方が自然 わざわざぶつけて便利に使おうという発想はいずれバグる http://mevius.5ch.net/test/read.cgi/tech/1548981877/456
457: デフォルトの名無しさん [] 2020/06/11(木) 20:13:03.35 ID:5cioSHJn >>454 レスありがとうございます。 「もとの値に戻る」と言う事は、a.plから参照される異なるスコープのb.pmがあり、 b.pmに「local $| = 1;」の記述があった場合、 b.pmに定義されたサブルーチンが呼び出される毎に、 「$| = 1;」と同等の処理が行われ、 戻る際には元の値がセットされるのでしょうか? それとも、スコープによって異なる「$|」を、 標準出力側でスコープ毎に切り替えてるという事でしょうか? http://mevius.5ch.net/test/read.cgi/tech/1548981877
/457
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
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 527 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.012s