标签: perl

如何修复Perl的语言环境设置警告?

当我跑步时perl,我收到警告:

perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
    LANGUAGE = (unset),
    LC_ALL = (unset),
    LANG = "en_US.UTF-8"
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").

我如何解决它?

perl locale

559
推荐指数
26
解决办法
50万
查看次数

为什么现代Perl默认会避免使用UTF-8?

我想知道为什么使用Perl构建的大多数现代解决方案默认情况下不启用UTF-8.

我知道核心Perl脚本存在许多遗留问题,可能会破坏它们.但是,从我的角度来看,在21 的世纪,新的大项目(或具有大的方面讲项目)应该从头开始他们的软件UTF-8的证明.我仍然没有看到它发生.例如,Moose启用严格和警告,但不启用Unicode.Modern :: Perl也减少了样板,但没有UTF-8处理.

为什么?是否有一些理由在2011年的现代Perl项目中避免使用UTF-8?


评论@tchrist太长了,所以我在这里添加它.

似乎我没有说清楚.让我尝试添加一些东西.

tchrist和我看到情况非常相似,但我们的结论完全是相反的.我同意,Unicode的情况很复杂,但这就是为什么我们(Perl用户和编码人员)需要一些层(或编译指示),这使得UTF-8处理变得像现在一样容易.

tchrist指出要涵盖的许多方面,我会阅读并思考它们几天甚至几周.不过,这不是我的观点.tchrist试图证明没有一种方法"启用UTF-8".我没有太多的知识可以与之争辩.所以,我坚持住实例.

我和Rakudo一起玩,UTF-8就在我需要的地方.我没有任何问题,它只是奏效了.也许在某些地方存在一些限制,但一开始,我测试的所有工作都按照我的预期进行.

这不应该是现代Perl 5的目标吗?我更强调一点:我不是建议将UTF-8作为核心Perl的默认字符集,我建议可以为那些开发项目的人快速触发它.

另一个例子,但更负面的语气.框架应该使开发更容易.几年前,我尝试过Web框架,但只是把它们扔掉了,因为"启用UTF-8"是如此模糊.我没有找到如何以及在何处挂钩Unicode支持.这是非常耗时的,我发现它更容易走老路.现在我看到这里有一个赏金来处理与梅森 2 相同的问题:如何让Mason2 UTF-8干净?.因此,它是一个非常新的框架,但使用UTF-8需要深入了解其内部.这就像一个大红色标志:停止,不要使用我!

我真的很喜欢Perl.但处理Unicode是痛苦的.我仍然发现自己在墙上奔跑.某种方式tchrist是正确的,并回答我的问题:新项目不吸引UTF-8,因为它在Perl 5中太复杂了.

unicode perl utf-8

555
推荐指数
6
解决办法
10万
查看次数

为什么这个程序有效?我试图创建一个语法错误

我在Windows 7上运行ActiveState的32位ActivePerl 5.14.2.我想用Git预提交钩子来检测正在检查的语法错误的程序.(不知怎的,我只是设法做了这么糟糕的提交.)所以作为一个测试程序,我随机记下了这个:

use strict;
use warnings;

Syntax error!

exit 0;
Run Code Online (Sandbox Code Playgroud)

但是,它在没有警告的情况下编译和执行,退出时errorlevel为零.这个有效的语法怎么样?

perl

487
推荐指数
5
解决办法
2万
查看次数

为什么脚本语言(例如 Perl、Python、Ruby)不适合作为 shell 语言?

bashzshfish等 shell 语言与上述脚本语言之间有什么区别,使它们更适合 shell?

使用命令行时,shell 语言似乎要容易得多。对我来说,使用 bash 比在 ipython 中使用 shell 配置文件要顺畅得多,尽管有相反的报道。我认为大多数人都会同意我的观点,Python 中的大部分中型到大型编程比 bash 更容易。我使用 Python 作为我最熟悉的语言,Perl 和 Ruby 也是如此。

我试图阐明原因,但除了假设两者中对字符串的不同处理与此有关之外,我无法阐明原因。

这个问题的原因是我希望开发一种在两者中都可用的语言。如果你知道这种语言,也请张贴。

正如 S.Lott 所解释的,这个问题需要澄清一下。我在询问 shell语言的特性与脚本语言的特性。所以比较不是关于各种交互式(REPL)环境的特性,例如历史和命令行替换。该问题的另一种表达方式是:

一种适用于复杂系统设计的编程语言能否同时表达有用的单行代码,可以访问文件系统或控制作业?一种编程语言可以有效地扩展和缩减吗?

ruby python bash shell perl

341
推荐指数
9
解决办法
7万
查看次数

如何在Perl中打破循环?

我试图breakfor循环中使用一个语句,但由于我在Perl代码中也使用严格的subs,我收到一个错误说:

在./final.pl第154行使用"严格潜艇"时不允许使用Bareword"break".

有没有解决方法(除了禁用严格的潜艇)?

我的代码格式如下:

for my $entry (@array){
    if ($string eq "text"){
         break;
    }
}
Run Code Online (Sandbox Code Playgroud)

perl loops strict break

291
推荐指数
4
解决办法
55万
查看次数

匹配空格但不匹配换行符

我有时想要匹配空格而不是换行符.

到目前为止,我一直在诉诸[ \t].有一种不那么尴尬的方式吗?

regex perl

258
推荐指数
6
解决办法
13万
查看次数

如何为Perl启动交互式控制台?

如何为Perl启动交互式控制台,类似于irbRuby或pythonPython 的命令?

console perl interactive read-eval-print-loop

255
推荐指数
18
解决办法
12万
查看次数

Perl,Python,AWK和sed有什么区别?

只是想知道它们之间的主要区别是什么?和每种语言的力量(最好使用它).

编辑:这不是"对战" 喜欢话题,只是信息.

python perl awk language-comparisons sed

246
推荐指数
5
解决办法
7万
查看次数

在Perl中查找数组的大小

我似乎遇到了几种不同的方法来查找数组的大小.这三种方法有什么区别?

my @arr = (2);
print scalar @arr; # First way to print array size

print $#arr; # Second way to print array size

my $arrSize = @arr;
print $arrSize; # Third way to print array size
Run Code Online (Sandbox Code Playgroud)

perl

235
推荐指数
6
解决办法
56万
查看次数

Perl的反引号,系统和exec有什么区别?

有人可以帮帮我吗?在Perl中,有什么区别:

exec "command";
Run Code Online (Sandbox Code Playgroud)

system("command");
Run Code Online (Sandbox Code Playgroud)

print `command`;
Run Code Online (Sandbox Code Playgroud)

还有其他方法来运行shell命令吗?

perl

231
推荐指数
4
解决办法
21万
查看次数