Ответ 1
Вам нужно захватить first character
в группе захвата и использовать back reference
для преобразования его в uppercase
с помощью \u
.
Попробуйте использовать: -
$_ =~ s/^([a-z])/\u$1/;
Это простой вопрос, который я предполагаю, но я пытался изменить только первое строчное письмо строки из .txt файла в верхний регистр, используя следующий
$_ =~ s/^[a-z]/\U/;
Что происходит, когда я его выполняю, заключается в том, что вместо изменения строчной буквы в верхний регистр нижний регистр в начале строки заменяется самым значительным битом на линии. Например, строка nAkld987aBALPaapofikU88
вместо замены NAkld987
становится Akld987...
Вам нужно захватить first character
в группе захвата и использовать back reference
для преобразования его в uppercase
с помощью \u
.
Попробуйте использовать: -
$_ =~ s/^([a-z])/\u$1/;
Вы можете/должны использовать ucfirst
. Я говорю, должен, как это гораздо более очевидным для сопровождающего, что ваше намерение состоит в том, чтобы загладить первую букву строки. Мне нравится регулярное выражение, но в этом случае я считаю, что это не правильный подход.
my $str = "test";
print ucfirst($str);
Вы можете просто использовать функцию ucfirst
.
Если вы хотите использовать регулярное выражение, вы можете сделать:
$_ =~ s/^([a-z])/\u$1/;
или
$_ =~ s/^([a-z])/\U$1\E/;