问题——我有一个字符串,比如Buna$002C_TexasBuna$002C_Texas
' 和 where$
后面是 Unicode。我想用它们各自的 Unicode 字符表示来替换这些 Unicode。
在Perl中,如果任何 Unicode 采用 " 的形式,\x{002C}
那么它将被转换为相应的 Unicode 字符。下面是示例代码。
#!/usr/bin/perl
my $string = "Hello \x{263A}!\n";
@arr= split //,$string;
print "@arr";
我正在处理一个包含 1000 万条记录的文件。所以我将这些字符串放在一个标量变量中。要执行与上述相同的操作,我将替换$4_digit_unicode
为\x{4_digit_unicode}
如下。
$str = 'Buna$002C_TexasBuna$002C_Texas';
$str =~s/\$(.{4})/\\x\{$1\}/g;
$str = "$str"
它给了我
Buna\x{002C}_TexasBuna\x{002C}_Texas
这是因为在$str = "$str"
, line$str
被插值,而不是它的值。因此\x{002C}
,Perl 不会对其进行插值。
有没有办法强制 Perl 让它也插入内容$str
?
或者
有没有另一种方法来实现这一目标?我不想取出每个 Unicode,然后将其打包使用pack "U4",0x002C
,然后再将其替换回去。但是一行中的某些内容(例如以下不成功的尝试)是可以的。
$str =~ s/\$(.{4})/pack("U4",$1)/g;
我知道以上是错误的;但我可以做上面的事情吗?
对于输入字符串$str = 'Buna$002C_TexasBuna$002C_Texas'
,所需的输出是Buna,_TexasBuna,_Texas
.