Perl 提供了四个主要的大小写转换函数:
1. uc - 转换为大写
my $text = "hello world";
my $upper = uc($text); # "HELLO WORLD"
print uc("perl"); # "PERL"
2. lc - 转换为小写
my $text = "HELLO WORLD";
my $lower = lc($text); # "hello world"
print lc("Perl"); # "perl"
3. ucfirst - 首字母大写
my $text = "hello";
my $capitalized = ucfirst($text); # "Hello"
print ucfirst("perl programming"); # "Perl programming"
4. lcfirst - 首字母小写
my $text = "Hello";
my $lower_first = lcfirst($text); # "hello"
print lcfirst("PERL"); # "pERL"
完整示例
#!/usr/bin/perl
my $text = "Hello Perl World";
print "原字符串: $text\n";
print "uc: " . uc($text) . "\n"; # HELLO PERL WORLD
print "lc: " . lc($text) . "\n"; # hello perl world
print "ucfirst: " . ucfirst($text) . "\n"; # Hello Perl World
print "lcfirst: " . lcfirst($text) . "\n"; # hello Perl World
# 处理非ASCII字符(需要开启utf8)
use utf8;
binmode STDOUT, ':encoding(utf8)';
my $unicode = "café naïve";
print "Unicode示例:\n";
print "uc: " . uc($unicode) . "\n"; # CAFÉ NAÏVE
print "lc: " . lc($unicode) . "\n"; # café naïve
实际应用场景
# 1. 规范化用户输入
my $username = "ADMIN";
my $normalized = lc($username); # "admin"
# 2. 标题格式化
my $title = "the great gatsby";
$title = ucfirst($title); # "The great gatsby"
# 3. 变量名转换
my $ClassName = "MyModule";
my $method_name = lcfirst($ClassName); # "myModule"
# 4. 批量处理数组
my @words = ("apple", "BANANA", "Cherry");
my @lowercase = map { lc($_) } @words; # ("apple", "banana", "cherry")
my @uppercase = map { uc($_) } @words; # ("APPLE", "BANANA", "CHERRY")
注意事项
这些函数对非ASCII字符(如带重音符号的字符)的处理取决于Perl版本和编码设置
对于现代Perl(5.16+),建议使用
use feature 'unicode_strings'来获得更好的Unicode支持
这些函数不会修改原始字符串,除非在标量上下文中赋值给原变量
修改原字符串的用法
my $string = "Original Text";
$string = uc($string); # 修改原变量
# 或者使用函数返回值直接覆盖
$_ = "some text";
$_ = uc; # uc在无参数时使用$_作为默认参数
这些函数是Perl字符串处理的基础工具,非常实用且高效。