これは私が推測する簡単な質問ですが、次のコマンドを使用して、行の最初の小文字だけを.txtファイルから大文字に変更しようとしていました。
$_ =~ s/^[a-z]/\U/;
実行すると、小文字を大文字に変更する代わりに、行頭の小文字が行の最上位ビットに置き換えられます。たとえば、行がnAkld987aBALPaapofikU88
次のように置き換えられる代わりにNAkld987
Akld987...
を使用できます/使用する必要がありますucfirst
。あなたの意図が文字列の最初の文字を大文字にすることであることがメンテナにとってはるかに明白なので、私はそうすべきだと言います。私は正規表現が大好きですが、この場合、それは正しいアプローチではないと感じています。
my $str = "test";
print ucfirst($str);
first character
キャプチャグループでをキャプチャし、を使用しback reference
てに変換する必要があります。uppercase
\u
これを使ってみてください:-
$_ =~ s/^([a-z])/\u$1/;
関数を使用するだけucfirst
です。
正規表現を使用したい場合は、次のことができます。
$_ =~ s/^([a-z])/\u$1/;
また
$_ =~ s/^([a-z])/\U$1\E/;
正規表現に習熟していないので、これを次のように実行しました(これは、リストを繰り返し、操作されたリストを返すことを除いて、map
基本的には):foreach
$string = join " ", map { ucfirst } split " ", $string;