Perl chr 函数
最后修改于 2025 年 4 月 4 日
Perl的chr
函数将ASCII或Unicode码点转换为它们对应的字符。它是Perl的ord
函数的逆函数。
chr
接受一个数字,并返回该数字在当前字符集中表示的字符。它同时支持ASCII和Unicode值。
chr 的基本用法
使用chr
最简单的方法是将ASCII值转换为字符。
basic.pl
#!/usr/bin/perl use strict; use warnings; use v5.34.0; my $char = chr(65); print "Character for ASCII 65: '$char'\n"; $char = chr(97); print "Character for ASCII 97: '$char'\n";
我们演示了chr
将ASCII值转换为其对应字符。ASCII码65是'A',97是'a'。
$ ./basic.pl Character for ASCII 65: 'A' Character for ASCII 97: 'a'
生成字母表
chr
可用于生成字符序列。
alphabet.pl
#!/usr/bin/perl use strict; use warnings; use v5.34.0; print "Uppercase alphabet: "; for my $i (65..90) { print chr($i); } print "\n"; print "Lowercase alphabet: "; for my $i (97..122) { print chr($i); } print "\n";
此脚本使用ASCII值生成英文字母表。大写字母范围是65-90,小写字母范围是97-122。
$ ./alphabet.pl Uppercase alphabet: ABCDEFGHIJKLMNOPQRSTUVWXYZ Lowercase alphabet: abcdefghijklmnopqrstuvwxyz
处理 Unicode
当Perl处于Unicode模式时,chr
可以处理Unicode字符。
unicode.pl
#!/usr/bin/perl use strict; use warnings; use v5.34.0; use utf8; my $euro = chr(0x20AC); my $heart = chr(0x2665); my $smiley = chr(0x1F600); print "Euro symbol: $euro\n"; print "Heart symbol: $heart\n"; print "Smiley face: $smiley\n";
我们使用十六进制码点生成几个Unicode字符。use utf8
编译指示启用Unicode支持。
$ ./unicode.pl Euro symbol: € Heart symbol: ♥ Smiley face: 😀
创建特殊字符
chr
对于创建控制字符和特殊符号非常有用。
special.pl
#!/usr/bin/perl use strict; use warnings; use v5.34.0; my $newline = chr(10); my $tab = chr(9); my $bell = chr(7); print "This ends with newline$newline"; print "This\tuses\ttabs$newline"; print "Bell sound: $bell\n";
此示例创建了常见的控制字符。ASCII码10是换行符,9是制表符,7是响铃符。
$ ./special.pl This ends with newline This uses tabs Bell sound:
生成二进制数据
chr
可以通过转换数值来帮助生成二进制数据。
binary.pl
#!/usr/bin/perl use strict; use warnings; use v5.34.0; my $binary = ''; for my $i (0..255) { $binary .= chr($i); } open(my $fh, '>', 'data.bin') or die $!; print $fh $binary; close($fh); print "Generated binary file with all 256 byte values\n";
我们创建一个包含所有可能字节值(0-255)的二进制文件。每个数字都使用chr
转换为其对应的字节。
$ ./binary.pl Generated binary file with all 256 byte values
生成密码
chr
可以作为随机密码生成算法的一部分。
password.pl
#!/usr/bin/perl use strict; use warnings; use v5.34.0; sub generate_password { my $length = shift; my $password = ''; for (1..$length) { # Generate random printable ASCII (33-126) my $char = chr(33 + int(rand(94))); $password .= $char; } return $password; } print "Your password: ", generate_password(12), "\n";
此脚本使用可打印的ASCII字符生成随机密码。chr
将随机数转换为其对应的字符。
$ ./password.pl Your password: kL9#mX@2qP$5
十六进制字符串转换
chr
可以将十六进制字符串表示转换为字符。
hex.pl
#!/usr/bin/perl use strict; use warnings; use v5.34.0; my $hex_str = "48656c6c6f20576f726c64"; # "Hello World" in hex my $string = ''; while ($hex_str =~ /(..)/g) { $string .= chr(hex($1)); } print "Converted string: $string\n";
我们将一个十六进制字符串转换为其ASCII表示。每对十六进制数字都使用chr
转换为一个字符。
$ ./hex.pl Converted string: Hello World
最佳实践
- 使用Unicode模式:启用UTF-8以获得完整的Unicode支持。
- 验证输入:确保数字在有效范围内。
- 与ord结合使用:与ord一起用于字符分析。
- 文档编码:明确指定使用的字符编码。
来源
本教程介绍了Perl的chr
函数,并通过实际示例演示了其在各种场景下的用法。
作者
列出 所有 Perl 教程。