Цель: заменить в файле все даты, представленные в форме 'dd.mm.yyyy', на 'dd-mm-yyyy'
Ошибки: В операциях Регулярное выражение кода настроено на формат даты «дд / мм / гггг», что не соответствует данным во входном файле «дд.мм.гггг»
Процедура: открыть файл, читать файл построчно, подставлять дату в формате 'dd.mm.yyyy' в формат 'dd-mm-yyyy' в каждой строке во всех случаях, выводить результат на консоль, закрывать файл, готово
Примечание: OP выводит дату по одному ди git в каждой строке на консоль - определенно не то, что он намеревался [исправить], чтобы сделать замену во входном файле, код должен быть изменен или см. один вкладыш предоставляется.
use strict;
use warnings;
use feature 'say';
# Uncomment bellow to read from file
# my $filename = 'file.txt';
# open my $file, '<', $filename
# or die "Error\n";
# NOTE:
# In provided file you have dates in following format
# 03.02.2020
# but in question you refer to
# 03/02/2020
# The code adjusted accordingly, substitution applies
# only to dates matching re format in line (no need for 'if')
while(<DATA>) { # replace DATA with $file to read from a file
chomp; # snip eol
s/(\d{1,2})\.(\d{1,2})\.(\d{1,4})/$1-$2-$3/g; # substitute all date 0ccurrences in line
say;
}
__DATA__
#my file.txt
Today is 03.02.2020. Tommorow will be 03.03.2020.
Выход
#my file.txt
Today is 03-02-2020. Tommorow will be 03-03-2020.