Assuming you want some flexibility about your substitutions, you can use something like this:
use strict;
use warnings;
my @replace_by_level =(
# Level 0 ----
{ "abc.net" => "abcde.net",
"something.else" => "Other.thing"},
# Level 1 ---
{ cm => "dm",
dn => "xx",
ef => "yy"},
# Level 2 --
{ zero => "one",
one => "two",
two => "three"},
# Other levels as required ...
);
my $orig_url = "https://abc.net/cm/one";
my ($transformed_url, $temp) = $orig_url =~m|(\w+://)(.+)|;
my $level=0;
$transformed_url .= join "/", map { $replace_by_level[$level++]{$_} }
+split /\//, $temp;
print qq|$transformed_url\n|; # https://abcde.net/dm/two
Checking whether the transformation exists, before applying it is left as an exercise.
“PHP is a minor evil perpetrated and created by incompetent amateurs, whereas Perl is a great and insidious evil perpetrated by skilled but perverted professionals.”
― Jon Ribbens
|