# 字符串长度
my $len = length($string);
# 大小写转换
my $upper = uc($string); # 全大写
my $lower = lc($string); # 全小写
my $first = ucfirst($string); # 首字母大写
my $title = lcfirst($string); # 首字母小写
# 查找子串位置(从0开始)
my $pos = index($string, $substr); # 第一次出现
my $pos = index($string, $substr, 3); # 从位置3开始查找
my $pos = rindex($string, $substr); # 最后一次出现
# 检查包含
if (index($string, $substr) != -1) {
# 包含子串
}
# 使用正则查找位置
if ($string =~ /pattern/) {
my $pos = $-[0]; # 匹配开始位置
my $end = $+[0]; # 匹配结束位置
}
# substr - 提取/替换子串
my $sub = substr($string, $start, $length); # 提取
substr($string, $start, $length, $replacement); # 替换
# 示例
my $str = "Hello World";
my $sub = substr($str, 6, 5); # "World"
substr($str, 0, 5, "Hi"); # $str 变为 "Hi World"
# split - 分割字符串
my @parts = split(/pattern/, $string);
my @words = split(/\s+/, $string); # 按空白分割
my @chars = split(//, $string); # 分割为字符
my @lines = split(/\n/, $string); # 按行分割
# join - 连接数组为字符串
my $joined = join($delimiter, @array);
my $csv = join(",", @fields); # 创建CSV
my $path = join("/", $dir, $file); # 路径拼接
# 替换操作符
$string =~ s/pattern/replacement/; # 替换第一个
$string =~ s/pattern/replacement/g; # 替换所有
$string =~ s/pattern/replacement/i; # 忽略大小写
# 删除子串
$string =~ s/pattern//g; # 删除所有匹配
# 使用变量
my $old = "foo";
my $new = "bar";
$string =~ s/\Q$old\E/$new/g; # \Q \E 转义特殊字符
# tr/// 或 y/// - 字符转换
$string =~ tr/abc/ABC/; # a->A, b->B, c->C
$string =~ tr/a-z/A-Z/; # 转为大写
$string =~ tr/0-9//d; # 删除数字 (d=delete)
$count = $string =~ tr/a//; # 统计'a'的数量
$count = $string =~ tr/ //c; # 统计非空格字符
# 去除首尾空白
$string =~ s/^\s+|\s+$//g; # 方法1
use String::Util qw(trim); # 方法2(需安装模块)
$string = trim($string);
# 去除左侧空白
$string =~ s/^\s+//;
# 去除右侧空白
$string =~ s/\s+$//;
# 压缩内部空白
$string =~ s/\s+/ /g; # 多个空白变一个空格
# sprintf - 格式化字符串
my $formatted = sprintf("%-20s %10d", $name, $value);
my $hex = sprintf("0x%X", $number);
my $float = sprintf("%.2f", $number);
# printf - 直接输出
printf("%-20s %10d\n", $name, $value);
# qq - 双引号(支持变量插值)
my $str = qq(Hello $name); # 等价于 "Hello $name"
# q - 单引号(无变量插值)
my $str = q(Hello $name); # 字面包含 $name
# qw - 单词列表
my @array = qw(apple banana cherry); # 无需引号和逗号
# qx - 执行命令
my $output = qx(date);
# 转义特殊字符
my $escaped = quotemeta($string); # 添加反斜杠
my $safe = quotemeta("file.txt"); # "file\.txt"
# 反转义
use HTML::Entities;
encode_entities($string); # HTML转义
decode_entities($string); # HTML反转义
# URL编码解码
use URI::Escape;
my $encoded = uri_escape($string);
my $decoded = uri_unescape($string);
# 比较操作符
if ($str1 eq $str2) {} # 字符串相等
if ($str1 ne $str2) {} # 字符串不等
if ($str1 lt $str2) {} # 小于(字典序)
if ($str1 gt $str2) {} # 大于
if ($str1 le $str2) {} # 小于等于
if ($str1 ge $str2) {} # 大于等于
# 比较函数
my $cmp = $str1 cmp $str2; # -1,0,1 类似strcmp
# 数字测试
if ($string =~ /^\d+$/) {} # 全是数字
if ($string =~ /^\D+$/) {} # 全非数字
# 空白测试
if ($string =~ /^\s*$/) {} # 全是空白或空
# 包含测试
if ($string =~ /[a-zA-Z]/) {} # 包含字母
if ($string =~ /[0-9]/) {} # 包含数字
# 多行模式
$/ = undef; # 读取整个文件
my $content = <FILE>;
$/ = "\n"; # 恢复行模式
# 行处理
while (my $line = <FILE>) {
chomp($line); # 去除换行符
# 处理每行
}
# 段落模式
$/ = ""; # 按段落读取
use utf8; # 源代码使用UTF-8
use Encode qw(decode encode);
my $utf8 = decode('UTF-8', $bytes);
my $bytes = encode('UTF-8', $utf8);
# Unicode字符串函数
use Unicode::Normalize;
my $nfc = NFC($string); # 标准化格式C
my $nfd = NFD($string); # 标准化格式D
# pack - 数据打包
my $binary = pack("N", 12345); # 32位网络字节序
my $hex = unpack("H*", $binary); # 转十六进制
# 常用格式
# c C 有/无符号字符
# s S 有/无符号短整型
# l L 有/无符号长整型
# n N 网络字节序(16/32位)
# a A 字符串(空填充/空格填充)
# 简单CSV解析
my $csv = "a,b,c,d";
my @fields = split(/,/, $csv);
# 处理带引号的CSV
use Text::CSV;
my $csv_parser = Text::CSV->new();
$csv_parser->parse($line);
my @columns = $csv_parser->fields();
# 简单模板系统
my $template = "Hello {name}, your score is {score}";
my %data = (name => "Alice", score => 95);
$template =~ s/\{(\w+)\}/$data{$1}/g;
# 结果: "Hello Alice, your score is 95"
# 反转字符串
my $reversed = reverse($string);
# 反转单词顺序
my $sentence = "Hello World Perl";
my $reversed_words = join(" ", reverse split(/\s+/, $sentence));
# 结果: "Perl World Hello"
# 随机字符串
sub random_string {
my $length = shift;
my @chars = ('a'..'z', 'A'..'Z', '0'..'9');
return join('', map { $chars[rand @chars] } 1..$length);
}
my $random = random_string(10);
# 标准库
use String::Util; # trim, unquote等
use Text::ParseWords; # 高级分词
use Text::Wrap; # 文本换行
# CPAN热门模块
use String::Random; # 随机字符串生成
use Text::CSV; # CSV处理
use HTML::Strip; # HTML标签去除
use JSON; # JSON编码解码
\Q...\E 转义变量中的正则特殊字符
优先使用 index() 而不是正则进行简单查找
处理Unicode时 明确指定编码
大量字符串拼接 使用 join() 而不是 .=
处理路径 使用 File::Spec 或 Path::Tiny
这个列表涵盖了Perl字符串处理的主要功能。根据具体需求选择合适的函数和模块。