my @values = qw/ a ab. d ef def g|h /;
my ($regex) = map { qr/$_/ } # 5.
join '|', # 4.
map {quotemeta} # 3.
sort { length $b <=> length $a } # 2.
@values; # 1.
print "$regex\n"; # 6.
####
(?^:ab\.|def|g\|h|ef|a|d)
##
##
if ($input=~$regex) {
print "It matches!\n";
}
# or
while ($input=~/($regex)/g) {
print "Found string: $1\n";
}
##
##
my %map = ( a=>1, ab=>23, cd=>45 ); # 1.
my ($regex) = map { qr/$_/ } # 2.
join '|', map {quotemeta}
sort { length $b <=> length $a
or $a cmp $b } # 3.
keys %map;
print "$regex\n"; # 4.
# Now, use the regex
my @strings = qw/ abcd aacd abaab /; # 5.
for (@strings) {
my $before = $_;
s/($regex)/$map{$1}/g; # 6.
print "$before -> $_\n"; # 7.
}
##
##
abcd -> 2345
aacd -> 1145
abaab -> 23123