Perl中基于Unicode的“tweet压缩器”

Perl中基于Unicode的“tweet压缩器”,第1张

概述我想实现我自己的 tweet compressor.基本上这会做到以下几点.但是我遇到了一些unicode问题. 这是我的脚本: #!/usr/bin/env perluse warnings;use strict;print tweet_compress('cc ms ns ps in ls fi fl ffl ffi iv ix vi oy ii xi nj/, "\. " ,", " 我想实现我自己的 tweet compressor.基本上这会做到以下几点.但是我遇到了一些unicode问题.

这是我的脚本:

#!/usr/bin/env perluse warnings;use strict;print tweet_compress('cc ms ns ps in ls fi fl ffl ffi iv ix vi oy ii xi nj/,"\. ",","'),"\n";sub tweet_compress {    my $tweet = shift;    $tweet =~ s/\. ?$//;    my @orig = ( qw/cc ms ns ps in ls fi fl ffl ffi iv ix vi oy ii xi nj/,". ",");    my @new = qw/㏄ ㎳ ㎱ ㎰ ㏌ ʪ fi fl ffl ffi ⅳ ⅸ ⅵ ѹ ⅱ ⅺ nj .,/;    $tweet =~ s/$orig[$_]/$new[$_]/g for 0 .. $#orig;    return $tweet;}

但是这会在终端打印垃圾:

?.?.?.?.?.?.?.f.?.f?.?.?.?.?.?.?.nj/."\..,"."

我究竟做错了什么?

解决方法 两个问题.

首先,源代码中包含unicode字符.确保将文件保存为utf8并使用utf8 pragma.

此外,如果您打算从控制台运行此程序,请确保它可以处理unicode. windows命令提示符不能并且将始终显示?无论您的数据是否正确.我在Mac OS上运行它,终端设置为处理utf8.

其次,如果你有“.”在你的原始列表中,它将被解释为“任何单个字符”并给你错误的结果 – 因此你需要在正则表达式中使用它之前将其转义.我已经修改了一点程序以使其工作.

#!/usr/bin/env perluse warnings;use strict;use utf8; #use character semantics#make sure the data is re-encoded to utf8 when output to terminalbinmode STDOUT,':utf8';print tweet_compress('cc ms ns ps in ls fi fl ffl ffi iv ix vi oy ii xi nj/,'\. ',/;    $tweet =~ s/$orig[$_]/$new[$_]/g for 0 .. $#orig;    return $tweet;}
总结

以上是内存溢出为你收集整理的Perl中基于Unicode的“tweet压缩器”全部内容,希望文章能够帮你解决Perl中基于Unicode的“tweet压缩器”所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1213412.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存