Tag: perl

如何在使用模块时查找Perl加载的文件?

在Perl中,当我use <module name> <ver>; ,系统在@INCpath的某处find库的.pm文件。 有没有一种可靠的方式来实际加载文件?

Perl正则expression式(使用variables作为searchstring,包括perl运算符字符)

$text_to_search = "example text with [foo] and more"; $search_string = "[foo]"; if($text_to_search =~ m/$search_string/) print "wee"; 请遵守上面的代码。 出于某种原因,我想在$ text_to_searchvariables中find文本“[foo]”,如果find它,则输出“wee”。 要做到这一点,我必须确保[和]被replace为[和]使perl把它当作字符而不是操作符。 问题:如何在不必首先用s///expression式replace[和]情况下执行此操作?

在Perl中打开和读取文件的最佳方式是什么?

请注意 – 我不是在寻找打开/读取文件的“正确”方式,也不是每次打开/读取文件的方式。 我只是想找出大多数人使用什么方式,也许在同一时间学习一些新的方法:)* 我的Perl程序中一个非常常见的代码块是打开一个文件并读取或写入。 我已经看到了很多这样做的方式,而且我这几年来执行这个任务的风格已经改变了。 我只是想知道什么是最好的 (如果有最好的方法)是这样做的? 我曾经打开过这样的文件: my $input_file = "/path/to/my/file"; open INPUT_FILE, "<$input_file" || die "Can't open $input_file: $!\n"; 但是我认为这有错误陷阱的问题。 添加括号似乎可以修复错误陷印: open (INPUT_FILE, "<$input_file") || die "Can't open $input_file: $!\n"; 我知道你也可以将一个文件句柄分配给一个variables,所以不用像上面那样使用“INPUT_FILE”,我可以使用$ input_filehandle – 这样更好吗? 对于阅读文件,如果它很小,那么这个文件是否有什么问题呢? my @array = <INPUT_FILE>; 要么 my $file_contents = join( "\n", <INPUT_FILE> ); 或者你应该总是循环,就像这样: my @array; while (<INPUT_FILE>) […]

我如何知道Perl模块是核心还是标准安装的一部分?

我如何检查Perl模块是否是核心的一部分 – 也就是说它是标准安装的一部分? 我在找: 一个命令行命令: 一个Perl子程序/函数在代码中检查 也许这个问题应该是:我怎么知道在一台机器上最初提供了什么模块与特定的 Perl安装? (实际上,现在被问到如何告诉在一台机器上最初提供了什么模块的Perl特定安装? ) 鉴于现在似乎没有一个完整的Perl标准安装,至less这个新问题的答案会告诉我什么,我最初安装时,它是在第一次安装。 有了这些知识,如果我保留原始的安装程序映像/包或知道如何再次在网上得到确切的东西,那么我有一个可重复的Perl安装几台机器知道什么模块将出席,什么模块不会。 为了进一步阐明:我正在查看最初安装的内容,提供了哪些模块作为安装的一部分,以及内置内容。 不是从那以后安装的。 我希望能够在安装的机器上执行此操作 。 所以为此,我将依靠安装来以某种formslogging原来的内容。 我问了一个分拆的问题: 我怎么知道在一台机器上最初提供了什么模块的特定Perl安装? (我怎么知道在一台机器上最初提供了什么模块的Perl特定安装?)

保持Perl内存使用率低的技巧

在Perl脚本中保持内存使用率低的一些好的技巧是什么? 我有兴趣学习如何保持我的内存占用尽可能低的系统取决于Perl程序。 我知道Perl在内存使用方面并不是很好,但是我想知道是否有改进它的提示。 那么,你可以做些什么来保持一个Perl脚本使用较less的内存。 我对任何build议感兴趣,无论是写代码的实际技巧,还是关于如何以不同方式编译Perl的技巧。 编辑赏金:我有一个perl程序,作为一个networking应用程序的服务器。 每个连接到它的客户端当前都有自己的subprocess。 我已经使用线程,而不是叉,但我一直无法确定,如果使用线程而不是福克斯实际上是更高效的内存。 我想尝试使用线程而不是叉子。 我相信在理论上应该节省内存使用。 在这方面我有几个问题: Perl中创build的线程是否阻止将Perl模块库复制到每个线程的内存中? 线程 (使用线程)是在Perl中创build线程的最有效的方法(或唯一的方法)吗? 在线程中,我可以指定一个stack_size参数,在指定这个值的时候应该考虑什么,以及它如何影响内存的使用? 使用Perl / Linux中的线程,在每个线程的基础上确定实际内存使用情况的最可靠方法是什么?

一个Perl程序员的Python

我是一位经验丰富的Perl开发人员,具有一定的经验和/或熟悉其他语言的经验(具有C / C ++工作经验,具有Java和Scheme的学校经验以及熟悉许多其他语言)。 我可能需要使用Python完成一些networking工作(最直接的,与Google App Engine相关)。 因此,我想问一下,如何从Perl背景中获得最好的Python学习资源(例如,强调两者之间的差异,以及如何将perl习惯用法翻译成Python惯用语,相反,到genericsPython引用)。 还有一些以Web开发为中心的东西甚至更好。 我会采取任何东西 – 文章,教程,书籍,示例应用程序? 谢谢!

我应该使用YAML还是JSON来存储我的Perl数据?

在过去6个月左右,我一直使用YAML格式取得合理成功。 然而,YAMLparsing器的纯粹的Perl实现是相当烦琐的手写一个可读的文件,并有(在我看来)恼人的怪癖,如在文件的末尾需要一个换行符。 与我的其他程序相比,速度也非常慢。 我正在思考我的项目的下一个发展,我正在考虑使用JSON(YAML的一个最严格的子集,事实certificate)。 但是哪种格式在Perl中最具社区吸引力和努力? 这对于Perl,YAML或JSON中的简单数据描述来说,今天看来是更好的长期格式,为什么呢?

如何检查一个散列在Perl中是否为空

我使用下面的代码来检查散列是否为空。 有没有更好的方法,这是安全的使用? if (!keys %hash) { print "Empty";}

我如何在Perl中重复使用N次string?

在Python中,如果我这样做: print "4" * 4 我明白了 > "4444" 在Perl中,我会得到 > 16 在Perl中有没有简单的方法来做前者?

我怎样才能从命令行检查我的系统上是否安装了Perl模块?

我试图检查XML :: Simple是否安装在我的系统中。 perl -e 'while (<@INC>) { while (<$_/*.pm>) { print "$_\n"; } }' 上面的一行代码用于列出我系统中安装的所有模块。 但是,它并没有列出XML模块。 但是,以下执行罚款。 perl -e "use XML::Simple " 可能是什么问题?