Если префикс всегда одинаков в содержании «второго файла»
alias/a/b/c/${phone_number_1}
alias/a/b/c/${phone_number_2}
alias/a/b/c/${phone_number_3}
Затем префикс можно удалить, выполнив substr
:
my $offset = length("alias/a/b/c/");
while(my $line = <$fh_file>) {
chomp($line);
$line = substr($line, $offset);
}
Если это не тот же префикс, поскольку вы упоминаете, что они выглядят как «путь», я предполагаю, что последняя часть этого пути - это фактический номер телефона. Таким образом, решение простое: взять последнюю часть пути. Который также является "самой длинной подстрокой без /
в ней привязанной в конце строки $" (при условии, что структура цикла while такая же, как и выше):
my ($phone) = $line =~ m{([^/]+)\z};
Или, с другой точки зрения: «Удалите самый длинный префикс с /
в конце его из $ line, чем возьмите оставшуюся часть $ line»:
my $phone = $line =~ s{\A.+/}{}r;
И, конечно, если сами номера телефонов можно легко перечислить, например, [0-9]{8}
(8 символов из набора [0123456789]
), возможно, будет проще просто "взять часть, привязанную к конец строки $, совпадающей с шаблоном телефонного номера ":
my ($phone) = $line =~ m{([0-9]{8})\z};
Если ни один из вышеперечисленных не охватывает ваш сценарий, ну ... я просто плохо догадываюсь:)