Tag: perl

为什么使用严格和警告?

在我看来,如果人们使用Perl标签中的许多问题都可以解决: use strict; use warnings; 我认为有些人认为这些与训练轮相似,或者是不必要的复杂性,这显然是不正确的,因为即使是非常熟练的Perl程序员也使用它们。 似乎大多数精通Perl的人总是使用这两个编译指示,而那些从中受益最多的人却很less使用这两个编译指示。 所以,我认为在鼓励人们use strict和warnings时候,有一个问题要联系起来是个好主意。 那么,Perl开发者为什么要use strict和warnings呢?

检查一个string是否包含一个子string

我怎样才能检查给定的string是否包含一个特定的子string,使用Perl? 更具体地说,我想看看s1.domain.com是否存在于给定的stringvariables中。

简单的方法来打印Perl数组? (有一点格式)

有一个简单的方法来打印每个元素之间用逗号的Perl数组? 编写一个for循环来做到这一点很简单,但不是很优雅….如果这是有道理的。

我如何守护unix中的任意脚本?

我想要一个守护进程 ,可以将一个任意的通用脚本或命令变成一个守护进程 。 有两个我想处理的常见情况: 我有一个应该永远运行的脚本。 如果它死了(或重新启动),重新启动它。 不要让一次运行两个副本(检测副本是否已经运行,在这种情况下不要启动副本)。 我有一个简单的脚本或命令行命令,我想永远反复执行(在运行之间短暂的停顿)。 同样,不要让脚本的两个副本同时运行。 当然,在案例2中编写一个围绕脚本的“while(true)”循环,然后为案例1应用一个解决scheme,这是微不足道的,但是一个更一般的解决scheme将直接解决案例2,因为它适用于案例1中的脚本好吧(如果脚本不打算永远不会死的话,你可能只需要一个短暂的停顿或不停顿(当然如果脚本真的不会死的话那么停顿实际上并不重要))。 请注意,该解决scheme不应该涉及,例如,添加文件locking代码或PIDlogging到现有的脚本。 更具体地说,我想要一个我可以运行的程序“daemonize” % daemonize myscript arg1 arg2 或者,例如, % daemonize 'echo `date` >> /tmp/times.txt' 这将保持越来越多的date列表附加到times.txt。 (注意,如果守护进程的参数是一个像上面第一种情况一样运行的脚本,那么守护进程仍然会做正确的事情,必要时重新启动它。)然后,我可以在我的.login中放置一个类似上面的命令和/或cron它每小时或每分钟(取决于我有多么担心它意外死亡)。 注意:守护进程脚本将需要记住它是守护进程的命令string,以便如果同一个命令string被再次守护进程,它不会启动第二个副本。 此外,该解决scheme应理想的工作在OS X和Linux,但解决scheme之一是受欢迎的。 编辑:这很好,如果你不得不用sudo daemonize myscript myargs来调用它。 (如果我想到这一切都是错误的,或者有一些快速而肮脏的部分解决scheme,我也很想听到。) PS:万一它有用, 这里是一个类似于python的问题。 对类似问题的这个答案似乎是一个对任意脚本进行快速而邪恶的妖魔化的有用成语:

我应该在Windows上使用哪个版本的Perl?

win32.perl.org网站提供了几个适用于MS Windows的Perl发行版的参考。 很长时间以来,我一直使用ActiveState的 ActivePerl,但最近我转而使用Strawberry Perl 。 恕我直言,活性Perl仍然超过草莓Perl的唯一好处是,它附带了Perl Tk,这意味着它很容易安装Devel :: ptkdbgraphicsdebugging器。 除此之外,我认为草莓Perl有所有的优势。

我怎样才能从Perl输出UTF-8?

我正在尝试使用“utf8”编译指示来编写Perl脚本,并且得到了意想不到的结果。 我正在使用Mac OS X 10.5(Leopard),并使用TextMate进行编辑。 我的编辑器和操作系统的所有设置默认为以utf-8格式编写文件。 但是,当我将下面的内容input到一个文本文件中时,将它保存为“.pl”并执行它,我得到友善的“有问号的钻石”代替非ASCII字符。 #!/usr/bin/env perl -w use strict; use utf8; my $str = 'Çirçös'; print( "$str\n" ); 任何想法我做错了什么? 我希望在输出中得到“Çirçös”,但是我得到“ ir s”。

如何在Perl中input多行注释?

可能重复: Perl中多行注释的常见解决方法是什么? 如何在Perl源代码中添加多行注释?

我应该selectWindows的ActivePerl或草莓Perl?

我对Perl完全陌生,但我想尝试一下。 我读了两个可用于Windows平台的竞争对手发行版(我猜在其他操作系统上只有 Perl)。 维基百科说,如果需要的话,Strawberry附带了额外的开发工具来编译CPAN模块。 听起来不错。 它还说,ActivePerl有很多预先打包的模块,使用PPM更容易安装。 听起来不错! 这两者之间有明显的折衷。 我想知道我应该select什么来开始? 如果我select一个迁移到另一个有多难? 编辑:我给这两个分发运行了几个星期。 我真的很喜欢这两件事是一件好事! 这两者中的任何一个都不会出错。 我最终只用ActivePerl,因为它带有脱机文档(在HTML中) – 对于那些在路上或者并不总是连接的人来说,这是一个伟大的救命恩人。 在我休假的时候,我并不总是在线,所以开始使用Perl语言是非常容易的。 草莓至less是一样大,如果不是更大。 所以我也可以完全推荐它。 我不得不说,应该学习Perl – 这是一个非常漂亮的语言。 试一试!

如何解决我的Perl CGI脚本?

我有一个Perl脚本不工作,我不知道如何开始缩小这个问题。 我能做什么? 注意:我添加了这个问题,因为我真的想把我很长的答案添加到Stackoverflow。 我保持外部链接到其他答案,它值得在这里。 如果你有要添加的东西,不要害怕编辑我的答案。

如何可靠猜测MacRoman,CP1252,Latin1,UTF-8和ASCII之间的编码

在工作中,似乎没有一周没有一些编码相关的内涵,灾难或灾难。 这个问题通常来自程序员,他们认为他们可以在不指定编码的情况下可靠地处理“文本”文件。 但是你不能。 所以决定今后禁止以*.txt或*.text结尾的文件。 这样的想法是,这些扩展误导了偶然的程序员对编码的沉闷自满,这导致不正确的处理。 根本就没有延伸,因为至less你知道你不知道你有什么。 但是,我们并不想走得太远。 相反,您将需要使用以编码结尾的文件名。 所以对于文本文件,例如,这些就像README.ascii , README.latin1 , README.utf8等 对于需要特定扩展名的文件,如果可以在文件本身内指定编码,例如Perl或Python,那么您应该这样做。 对于文件中没有这样的工具的文件,例如Java源文件,您将在扩展之前放置编码,例如SomeClass-utf8.java 。 对于输出,UTF-8将是强烈的首选。 但是对于input,我们需要弄清楚如何处理名为*.txt的代码库中的数千个文件。 我们想重新命名所有这些以符合我们的新标准。 但是,我们不可能把所有的东西都放在眼里。 所以我们需要一个实际工作的图书馆或者程序。 这些是在ASCII,ISO-8859-1,UTF-8,微软CP1252,或苹果MacRoman各种。 虽然我们知道我们可以判断出是ASCII是什么,而且我们知道是否有可能是UTF-8的一个很好的变化,但我们对8位编码难以理解。 因为我们运行在混合的Unix环境(Solaris,Linux,Darwin)中,而大多数桌面机都是Mac,所以我们有很多恼人的MacRoman文件。 而这些尤其是一个问题。 一段时间以来,我一直在寻找一种方法来编程确定哪一个 ASCII ISO-8859-1 CP1252 的MacRoman UTF-8 一个文件是在,我还没有find一个程序或库,可以可靠地区分这三个不同的8位编码。 我们可能有超过一千个MacRoman文件,所以无论使用什么字符集检测器,都必须能够嗅出这些文件。 我看过的没有什么可以pipe理的。 我对ICU字符集检测器库有很大的希望,但是却无法处理MacRoman。 我也研究过在Perl和Python中做同样的事情的模块,但是总是一样的:不支持检测MacRoman。 因此,我所寻找的是一个现有的图书馆或程序,可以可靠地确定这五个编码中哪一个是文件所在的位置,最好是多于这个编码。 特别是它必须区分我引用的三种3位编码, 尤其是MacRoman 。 这些文件超过99%的英文文本; 在其他语言中有一些,但不是很多。 如果是库代码,我们的语言偏好是按照Perl,C,Java或Python的顺序。 如果它只是一个程序,那么我们并不关心它是什么语言,只要它来自全部源代码,在Unix上运行,并且完全没有妨碍。 有没有其他人有这个问题的随机编码的十亿遗留文本文件? 如果是这样,你是怎么试图解决这个问题的,你是多么的成功? 这是我的问题中最重要的一个方面,但是我也很感兴趣的是,是否鼓励程序员使用这些文件的实际编码来命名(或重命名)它们的文件,这将有助于我们避免将来出现问题。 有没有人曾试图在体制上强制执行这项规定,如果是的话,是否成功?为什么? 是的,我完全明白为什么在这个问题的性质上不能保证一个明确的答案。 对于那些没有足够数据的小文件尤其如此。 幸运的是,我们的文件很less。 除了随机的README文件外,大多数的大小范围是50k到250k,而且很多都是大的。 任何超过几K的大小都保证是英文的。 问题领域是生物医学文本挖掘,所以我们有时处理广泛的和非常大的语料库,像所有PubMedCentral的开放式访问存储库。 BioThesaurus […]