[過去ログ] Perlについての質問箱 64箱目 (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
367: 2020/03/17(火)00:31 ID:WzQFj8c+(1/2) AAS
この言語はなにが起こるかわからんので基本evalで囲わないとやってられませんね
368(1): 2020/03/17(火)00:59 ID:DZYZalLc(1) AAS
トラップでevalってなんだっけ?w
Perlやめてから結構立つから忘れた。
なんかそんなのあったなwww
今?Perlからシェルスクリプトに回帰していますがなにか?
369: 2020/03/17(火)05:25 ID:WzQFj8c+(2/2) AAS
>>368
これ
外部リンク:perldoc.jp
eval BLOCKってやつ
try catchみたいなもん
370: 2020/03/17(火)08:02 ID:sAGmKBfN(1/2) AAS
エラーが返るならtryできるだろうけど、試してみたら異常終了するようなもんも避けられるのか?
371: 2020/03/17(火)21:45 ID:sAGmKBfN(2/2) AAS
画像リンク
evalでもトラップできない
372: 2020/03/18(水)00:13 ID:+5qWGdwM(1) AAS
man にはどう書いてあるの? Perl の crypt じゃなくて C のライブラリの方だよ。
373: 2020/03/18(水)01:56 ID:jzX09kaS(1) AAS
WindowsだしActivePerlのようだし、何がおきてもふしぎじゃないな。w
374: 2020/03/18(水)09:12 ID:SzV6uL92(1) AAS
Windows10、activeperl 5.20なんだけど、次のコードできちんと動く。何が問題なのか解らない。
$res = eval {crypt('aaa', 'ppp')};
print "1. $res\n";
$res = eval {crypt('aaa', 'あ')};
print "2. $res\n";
$res = crypt('aaa', 'ppp');
print "3. $res\n";
$res = crypt('aaa', 'あ');
print "4. $res\n";
__END__
1. ppFj4OYENOP9c
2. 縺VSnoxRf90hw
3. ppFj4OYENOP9c
4. 縺VSnoxRf90hw
375: 2020/03/18(水)19:35 ID:iQ6PHWNN(1) AAS
Windows7とか?
376(2): 2020/03/28(土)10:30 ID:gZJzrXqn(1/4) AAS
検索が遅い
いろんな条件に対してファイル全体を検索、ということをする時に、
OSのキャッシュに頼って毎回 `grep` する方が速い
メモリに読み込んで検索すると負ける
ループで$data[$i] =~ /$pattern/ した方がまだ速くて、
grep {/$pattern/} @data するともっと遅くなる
大量一括検索の高速化のテクニックみたいなの何かあるのかな
377: 2020/03/28(土)18:48 ID:Cuxaq7bT(1/2) AAS
>>376
外部リンク:metacpan.org
使った事ないが MCE::Grep 辺りは説明読む限り速そう
378: 2020/03/28(土)18:55 ID:Cuxaq7bT(2/2) AAS
もっと基本的な話なら perlperf
外部リンク[pod]:perldoc.jp
379: 2020/03/28(土)19:23 ID:gZJzrXqn(2/4) AAS
MCE::GrepはCPUの使用率は上がるけど遅くなった
grepよりは正規表現の処理のあたりが時間かかってるんだと思う
感覚的にはもっと高速でも全然おかしくない感じなのに
380: 2020/03/28(土)19:34 ID:gZJzrXqn(3/4) AAS
100MBのファイルからパターンに合う行を全部抽出するのに1秒かかるくらいの感じ
で、パターンが250もあるから、コーヒーが飲めるくらい待たされる
381: 2020/03/28(土)20:00 ID:L8+cmwNy(1) AAS
俺だったらgrepでやっちゃうなぁ
結果はファイル経由で
382: 2020/03/28(土)21:36 ID:L89shHGR(1) AAS
>>376
qr//で事前に正規表現をコンパイルしてみたら?
383: 2020/03/28(土)21:55 ID:gZJzrXqn(4/4) AAS
同じパターンで繰り返し検索するのではなくて、
いろんなパターンで同じ対象を検索するので、コンパイルはできない
でも、パターンのリストは実行前に確定しているので、
qrで作ったものを配列に持たせておけば速くなるだろうか
384: 2020/03/28(土)23:16 ID:2U8ZKDy+(1) AAS
もはや perl の能力を超えているな
C とかで書いた方がいい
385: 2020/03/28(土)23:24 ID:ZQFwrOhU(1) AAS
パターンの内容にもよるが、flex で書いて Inline::C で呼ぶという方法もある。
386: 2020/03/28(土)23:25 ID:7nefda3x(1) AAS
色んなパターンで?
grep -f でパターン読ませてやるのと同じか?
387: 2020/03/29(日)09:15 ID:9AyQFVoq(1/2) AAS
素の Perl は NFA だけだから、どうしても速度的には不利になる。
パターンが250もあるなら尚更だ。
grep との差はPerl と C の差はもちろんあるだろうが
DFA でできるパターンなら、その差が大きいと思う。
388(2): 2020/03/29(日)09:42 ID:aacnUCYv(1) AAS
linuxだったら素直にgrep呼べばいいだけだけど、
windowsだと素性が良くて高速なgrepを探すところでまず困難がある
さらに、grepに引数を渡すところにもエスケープ文字の困難があって、
結果の受け取りにも文字コードの困難が
389: 2020/03/29(日)17:43 ID:9AyQFVoq(2/2) AAS
そういえば awk は DFA じゃなかったかな。
390: 2020/03/30(月)00:14 ID:mvvN5DTM(1) AAS
perl の Memoize は関数全体に掛けるようですが、
ruby の @memo、javascript の memo の変数に掛けるのは新し目の使い方でしょうか
391: 2020/03/30(月)04:32 ID:PdZ6Klrm(1) AAS
>>388
WSLのUbuntuだとどうなのだろうか?
あれ遅い?
392: 2020/03/30(月)08:35 ID:3FWyQXw7(1) AAS
NFA でなければならない理由がないなら DFA にするだけで速度 1000 倍は堅いかも。
でも Perl のままでも正規表現のチューニングは可能だ。まだやってないならね。
実際に使ってるパターンを見せてもらわないことにはなんとも言えないが。
393: 2020/03/31(火)12:53 ID:GaEXrIp5(1) AAS
>>388
普通にWSLを使えばいいだけでは?
394: 2020/03/31(火)22:24 ID:Z+pFaYZ2(1) AAS
win8.1のサポートが終わった頃に思い出したら使ってみよう
395: 2020/04/22(水)13:25 ID:gkB+0fgm(1/6) AAS
@array = ($str =~ /(PAT1).+?(PAT2).+?(PAT3)/g);
みたいにすると、パターン3つ分が配列に入るけど、他にもマッチするとそれも続けて入る
できれば2次元配列になって欲しい
そんな技はある?
396: 2020/04/22(水)18:47 ID:WLkEu+yG(1/3) AAS
そういうことをする時のセオリーはスカラコンテキストで
$str =~ /\G$pat/g
上下前次1-新書関写板覧索設栞歴
あと 606 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ
ぬこの手 ぬこTOP 0.022s