ZetCode

Perl uc 函数

最后修改于 2025 年 4 月 4 日

Perl 的 uc 函数将字符串中的所有字符转换为大写。它是一个内置的字符串操作函数,可以处理特定于语言环境的大小写转换。

uc 返回一个新字符串,不会修改原始字符串。要进行原地修改,Perl 提供了 uc 与赋值的组合。

uc 的基本用法

使用 uc 的最简单方法是将其应用于单个字符串变量。

basic.pl
#!/usr/bin/perl

use strict;
use warnings;
use v5.34.0;

my $text = "Hello World";
my $upper = uc($text);

print "Original: $text\n";
print "Uppercase: $upper\n";

我们演示了 uc 如何将字符串转换为大写。原始字符串保持不变,同时创建了一个新的大写版本。

$ ./basic.pl
Original: Hello World
Uppercase: HELLO WORLD

原地转换

要直接修改字符串,请将 uc 与赋值结合使用。

inplace.pl
#!/usr/bin/perl

use strict;
use warnings;
use v5.34.0;

my $text = "perl programming";
print "Before: $text\n";

$text = uc($text);
print "After: $text\n";

这展示了如何在修改原始变量的同时将字符串转换为大写。赋值会替换原始值。

$ ./inplace.pl
Before: perl programming
After: PERL PROGRAMMING

语言环境感知

uc 在大小写转换时会考虑当前的语言环境设置。

locale.pl
#!/usr/bin/perl

use strict;
use warnings;
use v5.34.0;
use locale;

my $text = "straße";  # German street
my $upper = uc($text);

print "Original: $text\n";
print "Uppercase: $upper\n";

使用 use locale 后,uc 会根据当前语言环境正确处理特殊字符。德语的 ß 会变成 SS。

$ ./locale.pl
Original: straße
Uppercase: STRASSE

数组处理

uc 可以使用 map 处理数组元素。

array.pl
#!/usr/bin/perl

use strict;
use warnings;
use v5.34.0;

my @words = ("apple", "banana", "cherry");
my @upper = map { uc } @words;

print "Original: @words\n";
print "Uppercase: @upper\n";

我们使用 mapuc 应用于每个数组元素。这会创建一个新数组,其中所有元素都已转换为大写。

$ ./array.pl
Original: apple banana cherry
Uppercase: APPLE BANANA CHERRY

哈希键转换

uc 对于将哈希键规范化为大写很有用。

hash.pl
#!/usr/bin/perl

use strict;
use warnings;
use v5.34.0;

my %config = (
    "timeout" => 30,
    "retries" => 3,
    "debug" => 0
);

my $key = "Timeout";
print "Value: ", $config{lc $key}, "\n";

# Convert all keys to uppercase
my %upper_config = map { uc $_ => $config{$_} } keys %config;
print join(", ", keys %upper_config), "\n";

这演示了将哈希键转换为大写以实现不区分大小写的查找。我们同时使用 uclc 进行规范化。

$ ./hash.pl
Value: 30
TIMEOUT, RETRIES, DEBUG

文件处理

uc 可以在处理文件时标准化文本。

file.pl
#!/usr/bin/perl

use strict;
use warnings;
use v5.34.0;

open(my $fh, '<', 'data.txt') or die "Can't open file: $!";

while (my $line = <$fh>) {
    chomp $line;
    print uc($line), "\n";
}

close($fh);

此脚本逐行读取文件,将每一行转换为大写,然后打印出来。将 chompuc 结合使用很常见。

Unicode 处理

当使用适当的 Perl 版本和设置时,uc 可以正确处理 Unicode 字符。

unicode.pl
#!/usr/bin/perl

use strict;
use warnings;
use v5.34.0;
use utf8;

my $text = "café résumé";
my $upper = uc($text);

binmode STDOUT, ':utf8';
print "Original: $text\n";
print "Uppercase: $upper\n";

使用 use utf8 后,Perl 可以正确处理非 ASCII 字符。输出显示了带重音字母转换为大写的正确性。

$ ./unicode.pl
Original: café résumé
Uppercase: CAFÉ RÉSUMÉ

最佳实践

来源

Perl uc 文档

本教程涵盖了 Perl 的 uc 函数,并通过实际示例演示了其在各种场景中的用法。

作者

我的名字是 Jan Bodnar,我是一位热情的程序员,拥有丰富的编程经验。我自 2007 年以来一直在撰写编程文章。到目前为止,我已撰写了 1400 多篇文章和 8 本电子书。我在编程教学方面拥有超过十年的经验。

列出 所有 Perl 教程