我正在编写一个perl脚本来处理文本文件。我需要从文本文件中删除项目符号并创建一个没有项目符号的新项目符号。当我查看文本文件的二进制版本时,项目符号存储为unicode项目符号(0xe280a2)。如何从字符串中删除子弹。
我尝试过以下代码:
open($filehandle, '<:encoding(UTF-8)', $filename)
or die "Could not open file '$filename' $!";
while ($row = <$filehandle>)
{
@txt_str = split(/\•/, $row);
$row = join(" ",@txt_str);
}
答案 0 :(得分:5)
反斜杠在这里没有帮助,因为子弹不是正则表达式中的特殊字符。
如果您指定输入为UTF-8,则应搜索UTF-8项目符号。为此,要么预先
use utf8;
并将脚本保存为UTF-8;或者,使用
\N{BULLET}
在您的情况下,拆分和连接可以通过用空格简单地替换子弹来代替:
while (<$filehandle>) {
s/\N{BULLET}/ /g; # or s/•/ /g under utf8
print; # <-- this was missing in your code
}
答案 1 :(得分:2)
为什么不使用简单的s /•/ / g而不是分裂/加入?并且您应该将结果变量(在您的情况下为$ row)打印到另一个文件或标准输出,否则您将无法看到“未爆炸的&#39;版 但是对于这个任务我从命令行使用sed,我很确定它也可以处理unicode字符