in reply to Need to speed up many regex substitutions and somehow make them a here-doc list
See haukex's article Building Regex Alternations Dynamically:
Win8 Strawberry 5.8.9.5 (32) Sat 10/01/2022 17:18:27 C:\@Work\Perl\monks >perl use strict; use warnings; use Data::Dump qw(dd); # for debug my $text = <<'TEXT'; Regular expressions have the undeserved reputation of being abstract and difficult to understand. TEXT print "before ---$text--- \n"; my @regexlist = split /\n/, <<'REGEX'; a A i I e E REGEX my %replace = map split, @regexlist; # dd \%replace; # for debug my ($rx_search) = map qr{ $_ }xms, join ' | ', map quotemeta, reverse sort keys %replace ; # dd $rx_search; # for debug $text =~ s{ ($rx_search) }{$replace{$1}}xmsg; print "after +++$text+++ \n"; ^Z before ---Regular expressions have the undeserved reputation of being abstract and difficult to understand. --- after +++REgulAr ExprEssIons hAvE thE undEsErvEd rEputAtIon of bEIng AbstrAct And dIffIcult to undErstAnd. +++
Update: This approach assumes each text file can be slurped to memory; 2-100 MB should be no problem. It also assumes the number of substitutions is "reasonable"; 150-1000 should be no problem. Care must be exercised in building the $rx_search regex if it is more complex than shown in the example; see haukex's article for tips on this. I have no idea how fast this approach is versus the one you're using now. Good luck :)
Give a man a fish: <%-{-{-{-<
|
---|
Replies are listed 'Best First'. | |
---|---|
Re^2: Need to speed up many regex substitutions and somehow make them a here-doc list
by LanX (Saint) on Oct 02, 2022 at 10:02 UTC | |
by AnomalousMonk (Archbishop) on Oct 02, 2022 at 20:02 UTC | |
by LanX (Saint) on Oct 02, 2022 at 22:39 UTC |