我已经阅读了下一篇文章:
但可能错过了一些BASIC积分.
使用
use open(:utf8);
Run Code Online (Sandbox Code Playgroud)
影响cpan模块呢?例如,当某个CPAN模块打开任何文件时,它将打开:utf8?这个陈述是真的吗?(或者open pragma只是词法范围?)AFAIK - 它也影响模块,但是以"不一致"的方式...(可能是模块的问题).
有open pragma效果opendir吗?- 我已经尝试过的 - 不 - 我仍然需要额外decode的所有文件名来源readdir(除了NFC).所以,IO :: Dir是不同的东西 - open pragma不包含什么?
影响开放的pragma sockets,管道呢?(例如什么是IO :: Handle?)
所有(或大多数)CPAN模块都知道何时进行i/o他们需要怎么做(utf8或lattin1或raw?)(可能不是,因为一个简单的autodie不适用于openpragma ...... :()
在许多地方,我可以阅读类似的规则:记住Unicode的规范规则:始终在应用程序的边缘编码/解码.这是一个很好的规则 - 但应用程序边缘意味着:我自己的源代码.CPAN模块(通常)也在边缘之后 - 不仅仅是"外部世界",如系统或网络......
根据我的经验,我的短脚本(大量使用CPAN)的内容的3/4包含:顶级声明,以及几乎所有的几十种编码/解码/ NFC ......
例如:即使是日志记录工具,也需要显式编码
use Log::Any qw($log);
use Log::Any::Adapter ('File', 'file.log');
$log->error( encode('utf-8', "tökös"));
Run Code Online (Sandbox Code Playgroud)
甚至,当想要添加tie到我的代码时,需要 …
在任何人告诉我RTFM之前,我必须说 - 我已经挖掘过:
那么,基本代码:
use 5.014; #getting 'unicode_strings' feature
use uni::perl; #turning on many utf8 things
use Unicode::Normalize qw(NFD NFC);
use warnings;
while(<>) {
chomp;
my $data = NFD($_);
say "OK" if utf8::is_utf8($data);
}
Run Code Online (Sandbox Code Playgroud)
在这一点上,从该UTF8编码STDIN我得到了正确的Unicode字符串$data,如"\ W"将与多字节[\p{Alphabetic}\p{Decimal_Number}\p{Letter_Number}](也许更多的东西).那没关系,有效.
据我所知$data没有不包含UTF8,但在一个字符串perl's internal Unicode格式.
现在的问题是:
$other_data包含有效的Unicode字符串?据我所知, …
目的: 我想分开单词来计算文档中的频率,然后对这些频率进行一些计算.
单词可以使用以下任何一项开始/包含/结束:
单词可以包含(但不能开头或结尾)
单词可以用任何符号或空格分隔,如$,#,&,制表符
问题:
我尝试过的:
方法: 首先我替换除了\ w(字母数字加"_"),'和 - 之后的所有内容然后我删除',_和'如果在单词的开头或结尾找到它最后我用单个替换多个空格空间和分裂的话
代码: 我正在使用一系列正则表达式替换如下:
$str =~ s/[^\w'-]/ /g;
#Also tried using $str =~ s/[^:alpha:0-9_'-]/ /g; but doesn't work
$str =~ s/- / /;
$str =~ s/' / /;
$str =~ s/_ / /;
$str =~ s/ -/ /;
$str =~ s/ '/ /;
$str =~ s/ _/ /;
$str =~ s/ +/ /;
foreach $word (split(' ', lc $str)) { …Run Code Online (Sandbox Code Playgroud) 如何验证正则表达式的全名?我只想要字母表(没有数字),只需要正则表达式的空格.这就是我到目前为止所做的.你能帮我修一下这个正则表达式吗?非常感谢你
public static boolean isFullname(String str) {
boolean isValid = false;
String expression = "^[a-zA-Z][ ]*$"; //I know this one is wrong for sure >,<
CharSequence inputStr = str;
Pattern pattern = Pattern.compile(expression, Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(inputStr);
if (matcher.matches()) {
isValid = true;
}
return isValid;
}
Run Code Online (Sandbox Code Playgroud) 我只是好奇有现代系统默认为UTF-8以外的东西.我在一个mysql系统可以有不同编码的多个位置上有一整天的人阻塞.很沮丧.
有没有什么好的理由不使用utf-8作为默认值(存储空间似乎不是一个好理由)?不要试图争论,只是好奇.
谢谢
我见过几个职位是国家use 5.12.0;在Perl中默认启用了(例如,某些功能/编译指示use strict;).另一个例子是UTF-8和perl,其中声明use 5.14.0;是
最适合Unicode字符串功能UTF-8处理.
我似乎记得use提供某些默认值(例如use strict; use warnings; use diagnostics;)的可用声明,但不记得具体内容.如何找出给定use 5.##.#;声明中包含的内容?例如,use 5.22.0;默认提供什么?use strict;?
什么字符类或Unicode属性将匹配Perl 中的任何Unicode元音?
错误答案:[aeiouAEIOU].(这里的讲道,洗衣清单中的第24项)
perluniprops仅为Hangul和印度语脚本提及元音.
让我们抛开一个元音是什么的问题.是的,i在某些情况下可能不是元音.所以,任何可以作为元音的角色都可以.
我正在寻找新的语言,对于我不再需要担心字符串问题,我在PHP中用于新项目的过多其他问题.
我倾向于发现Java太冗长和混乱,我不想用6英尺的杆子触摸Windows往往排除.Net.这基本上留下了其他所有东西 - 除了PHP,C和C++(我知道后两个与unicode的东西混乱,无论ICU库如何).
我简要列出了迄今为止的一些语言,即Ruby(喜欢mixins),Python,Lisp和Javascript(node.js).但是,我发现有关unicode 支持的高度不一致的 信息 ,我害怕(缺乏时间......)学习它们中的每一个,以至于我可以安全地破解它以排除它.
据我所知,Python 3 似乎拥有它.和Ruby 1.9一样.Lisp 不一定.大概是Javascript.
对于一种语言来说,可以说比unicode支持更多,但根据我的经验,它在处理语言环境时往往成为一个主要的缺点.
我也意识到这个问题有些主观.(请不要因为这个原因关闭它:我实际上是链接到我发现不满意的几个SO线程.)但是......作为这些语言的用户,它们在实践中如何支持unicode?
两个起点:
use语句的样板代码.关于Unicode的使用的类似问题是如何使用现代perl和utf8默认值来"使用My :: defaults"?该PSGI规范是面向设计字节.编码/解码所有内容是我的责任,因此对于Plack应用程序,正确的方法是对输出和解码输入进行编码,例如:
use Encode;
my $app = sub {
my $output = encode_utf8( myapp() );
return [ 200, [ 'Content-Type' =>'text/plain' ], [ $str ] ];
};
Run Code Online (Sandbox Code Playgroud)使用是否正确
use uni::perl; # or any similar
Run Code Online (Sandbox Code Playgroud)
在PSGI应用程序和/或我的模块中?
uni::perl 将Perl的默认IO更改为UTF-8,因此:
use open qw(:std :utf8);
binmode(STDIN, ":utf8");
binmode(STDOUT, ":utf8");
binmode(STDERR, ":utf8");
Run Code Online (Sandbox Code Playgroud)
这样做会破坏Plack或其中间件吗?或者是在开放时明确编写/解码Plack的应用程序的唯一正确方法,所以没有open编译指示?
我正在尝试找到一个在perl webapp中大写名称的解决方案(使用perl v5.10.1).我原本以为使用Lingua :: EN :: NameCase,但我看到了重音字符的一些问题.
我需要能够处理来自各种欧洲语言(爱尔兰语,法语,德语)的重音字符.
我在网上看到一些迹象表明Lingua :: EN :: NameCase应该适用于我的用例.例如,perlmonks上的这个页面:http://www.perlmonks.org/?node_id = 889135
这是我基于以上链接的测试代码:
#!/usr/bin/perl
use strict;
use warnings;
use Lingua::EN::NameCase;
use locale;
use POSIX qw(locale_h);
my $locale = 'en_FR.utf8';
setlocale( LC_CTYPE, $locale );
binmode DATA, ':encoding(UTF-8)';
binmode STDOUT, ':encoding(UTF-8)';
while (my $original_name = <DATA>) {
chomp $original_name;
my $normalized_name = nc($original_name);
printf "%30s L::EN::NC %30s UCFIRST %30s\n", $original_name, $normalized_name, xlc($original_name);
}
sub xlc {
my $str = shift;
$_ = lc( $str );
return join …Run Code Online (Sandbox Code Playgroud)