Во-первых, не используйте \d
, если вы не хотите сопоставить все символы Unicode (например, ? или ᠕).Если вы хотите совпадать с нуля до девяти, вы должны сказать [0-9]
.
К сожалению, вы не можете сократить это значение до
if ($Hour =~ /^([0-9]{2}){3}$/) { $result = "$1:$2:$3" }
, потому что вы заботитесь обо всех матчах, и это сохранит только последний.Аналогично
if ($Hour =~ /^([0-9]{6})$/) { $result = "$1:$2:$3" }
отсутствует.Вы могли бы сказать
($result = $Hour) =~ s/([0-9]{2})(?!$)/$1:/g;
, но вы бы обменяли ясность на немного более короткую линию.