[過去ログ] Perlについての質問箱 64箱目 (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
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
397: 2020/04/22(水)19:29 ID:gkB+0fgm(2/6) AAS
可能?

$str = '1a2b3c1x1d2e3f1g2h3i';
を与えられて
[[a, b, c], [d, e, f], [g, h, i]]
を得るにはどうすれば
398: 2020/04/22(水)20:38 ID:f6F85tCk(1/2) AAS
my @arr = ();
while ($str =~ /\G.+?([a-z]).+?([a-z]).+?([a-z])/g) {
  push @arr, [$1, $2, $3];
}
399: 2020/04/22(水)20:54 ID:gkB+0fgm(3/6) AAS
[[a, b, c], [x, d, e], [f, g, h]]
になっとるよ
400: 2020/04/22(水)20:56 ID:gkB+0fgm(4/6) AAS
でも判った
普通に$1使えばいいだけか
結果を一つずつスカラに取るんだと思ってた
401: 2020/04/22(水)21:01 ID:gkB+0fgm(5/6) AAS
/\G.*?1(.)2(.)3(.)/g
これがやりたかったこと
402: 2020/04/22(水)21:27 ID:gkB+0fgm(6/6) AAS
結局コードはあんまり変わらなくて、ループで
push @array, ($1, $2, $3)
にするか、後で
splice(@elements, 0, 3)
を使っていくかの違い

パターンを3つから4つに増やした時に、
$4を追加するか、3を4に増やすかのメンテはやっぱり必要
いきなり2次元配列が得られるスマートさからは劣る
403: 2020/04/22(水)21:30 ID:WLkEu+yG(2/3) AAS
どうやら今回は必要ないみたいだけど事前にグループの個数が
判らないという前提なら @- とか見ればいい。
あるいはグループに名前を付けて %+ を使えばいい。
全部ここに書いてあるよ。
外部リンク:perldoc.jp
404: 2020/04/22(水)21:32 ID:f6F85tCk(2/2) AAS
Perlで、とある配列を指定した要素数ごとに別の配列リファレンスに分割する処理をList::MoreUtilsモジュールで書き直してみた
外部リンク:perl48.hatenablog.com
405: 2020/04/22(水)23:57 ID:WLkEu+yG(3/3) AAS
名前を付けるような性格のものじゃなくて個数が変わる可能性があるなら
個数だけ与えてパターンを組み立てればいいよ。
$1,$2 とか書かなくても
map { ${$_}} 1 .. $n
で同じことができるし。
リストコンテキストで配列に入れてから splice する方がいいと思うならそうすればいい。
406: 2020/04/23(木)08:13 ID:7CKy0JPC(1) AAS
目指すのは、個数がいくつなのか人間が把握しなくていいコード
407: 2020/04/23(木)08:30 ID:IlZrBGCM(1) AAS
できるでしょ。自分がスマートになってスマートなコードを書けばいい。
408: 2020/04/23(木)12:10 ID:2vqGx7d4(1) AAS
完全に数値って決まってるんなら、俺ならsplit使っちゃうな
@a = split /\d/, $str;
まあこんな単純な話じゃないんだろうけど
409: 2020/05/01(金)10:49 ID:baJ3Dlo6(1/3) AAS
activeperlで
$res = `exefile $file`;
みたいなことをした時に、
コマンドプロンプトからスクリプトを起動するとちゃんと動く
でも、スクリプトをランチャーから起動するとno such fileになる
ファイル名が英数ならどちらもok
2byte文字が混じると挙動が変わる

起動の仕方によってパスの取り扱いとか変わる?
410: 2020/05/01(金)12:19 ID:baJ3Dlo6(2/3) AAS
あ、違う
2byte文字ではなくドライブの違いだった
ネットワークドライブにあるとアクセスできない
コマンドプロンプトからならできる
411: 2020/05/01(金)13:08 ID:baJ3Dlo6(3/3) AAS
結局、ランチャーに管理者権限が付いてるのが原因

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System
EnableLUA 1 -> 0
これで解決する
perl関係ない
412: 2020/05/01(金)13:13 ID:9YL7RFP8(1/2) AAS
ランチャー自身か、ランチャーの起動方法がよくないんやろ。
ネットワークドライブの認証(ログオン)かそのタイミングがあやしい。
413: 2020/05/01(金)13:13 ID:9YL7RFP8(2/2) AAS
あら、自己解決?
414: 2020/05/10(日)19:19 ID:gcVsfbhd(1/2) AAS
質問させてください。
WindowsでActivePerlを使っています。
perl で、あるファイルを、関連付けられたアプリケーションで開く
には、どのようにすればよろしいでしょうか?

例えば、xx_system('foo.txt') のようにすると、'.txt'に
関連つけられたアプリケーションで、'foo.txt'を開くような
動作を実現したいのですが。
415
(1): 2020/05/10(日)21:12 ID:04IHVppx(1) AAS
system(1, 'foo.txt');
416: 2020/05/10(日)22:26 ID:gcVsfbhd(2/2) AAS
>>415
動きました。ありがとうございました。
417: 2020/05/28(木)11:01 ID:5kmQgXWn(1) AAS
最近 python を使い始めたんだけど、使うほどに perl 凄げーって思う。
perlって細かいこと気にしないでも書けるって感じ。
まあ、 python に慣れてないってのもあるけどw
418
(1): 2020/05/28(木)12:00 ID:yN32+nQR(1/3) AAS
細かいことを気にしないせいでバグの原因になるので、
きちっとしか書けないようにした

perlの不満を解消してもっと簡単に書けるようにしたのは、
rubyの方が正常進化だと思う
419: 2020/05/28(木)12:46 ID:d4ggzNnr(1) AAS
>>418
use strict;
use warnings;
420
(1): 2020/05/28(木)12:49 ID:MEC8WK3T(1) AAS
Perl は、暗号のような記号が多いから、皆嫌う

Ruby は可読性を上げるために、それらの記号を無くそうとしている
421: 2020/05/28(木)13:57 ID:EGYBOXys(1) AAS
>>420
変数の型を知るのに
宣言まで見ないとわからないのがJava
代入まで探さないとわからないのがpython
見るとその場でわかるのがperl
宗教論争は終わらない
1-
あと 581 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ

ぬこの手 ぬこTOP 0.012s