Tag: perl

我怎样才能卸载通过`cpan`安装的Perl模块?

我正在使用在用户空间运行的Perl(不是通过root安装),并通过命令行cpan安装模块。 我想知道是否有一个简单的方法来删除一个模块,而不必做大量的工作删除单个文件。 我在互联网上search这个问题,并find了一些答案,但我发现的答案似乎要么讨论使用Perl包pipe理器(特定于Microsoft Windows),否则操作系统特定(BSDpan),build议使用cpanplus我有几个不好的经验),或者通过指向死链接结束,如下所示: http://www.cpan.org/misc/cpan-faq.html#How_delete_Perl_modules : http://www.cpan.org/misc/cpan-faq.html#How_delete_Perl_modules 。 我的问题是具体是否有一个干净的方式来删除通过cpan安装的模块。

将相对path转换为绝对path?

我不确定这些path是否重复。 鉴于相对path,如何使用shell脚本确定绝对path? 例: relative path: /x/y/../../a/b/z/../c/d absolute path: /a/b/c/d

Perl有枚举types吗?

Perl是否具有符合最佳实践的枚举types,或者更重要的是,它是否需要? 我正在使用的项目使用了遍布各处的string来表示通常使用C#语言中的Enum的东西。 例如,我们有一组电话号码,每个电话号码都与一个电话types(“家庭”,“工作”,“移动”等)相关联: $phone_number->{type} = 'Home'; 在这里使用一个只读的variables是足够的还是应该使用一个枚举? 我在CPAN上find了一个enum模块,但它似乎使用了违反Perl最佳实践之一的单词。 我对使用只读variables的想法是这样的: use Readonly; Readonly my $HOME => 'Home'; Readonly my $WORK => 'Work'; Readonly my $MOBILE => 'Mobile'; $phone_number->{type} = $HOME; 这是一个好方法还是有更好的方法?

如何查看目录是否存在或不在Perl中?

要在使用文件之前查看文件是否存在,我们可以使用: if (-e "filename.cgi") { #proceed with your code } 但是如何识别一个目录是否存在?

存在和定义有什么区别?

有什么区别 if (defined $hash{$key}) { } 和 if (exists $hash{$key}) { } 我什么时候知道使用哪个?

如何在Perl中find用户的主目录?

我需要检查一个用户的主目录中的文件是否存在,所以使用文件检查: if ( -e "~/foo.txt" ) { print "yes, it exists!" ; } 即使在用户的主目录下有一个名为foo.txt的文件,Perl总是抱怨没有这样的文件或目录。 当我用/ home / jimmyreplace“〜”(假设用户是jimmy),Perl给出正确的判决。 你能解释为什么“〜”不能在Perl中工作,并告诉我什么是Perl的方式来find用户的主目录?

我如何find已安装的Perl模块的版本?

你如何find已安装的Perl模块的版本? 这是在底部的答案,但我认为足够重要的是活在这里。 有了这些build议,我在我的.bashrc创build了一个函数 function perlmodver { perl -M$1 -e 'print "Version " . $ARGV[0]->VERSION . " of " . $ARGV[0] . \ " is installed.\n"' $1 }

正则expression式的最坏情况分析

是否有任何工具会采用特定的正则expression式,并根据正则expression式所匹配的特定字符数所需的操作数返回最差的情况? 例如,给定一个(f|a)oo.*[ ]baz ,引擎可能通过多less个步骤来匹配100个字符? 如果有一个工具,可以采取一堆文本样本,并显示每个运行的平均操作,我也会感兴趣。 我意识到这将取决于所使用的引擎和实现 – 但我不知道这是多么普遍。 所以,如果它是很多语言的常见(使我的问题太模糊),我会特别感兴趣的Perl和Python。

使用Strawberry Perl安装模块

到现在为止,我使用ActiveState的ActivePerl ,并使用ppm来安装模块。 上周我搬到了Strawberry Perl ,但我不知道如何使用Strawberry Perl来安装模块。 有关如何使用Strawberry Perl完成模块安装的一些信息,或者有关于如何安装新模块的链接?

最新的方法来删除Perl中的换行符

我正在维护一个脚本,可以从各种来源获得input,并在每行处理它。 取决于实际使用的源代码,换行符可能是Unix风格,Windows风格,或者甚至对于某些聚合input,混合(!)。 当从文件中读取它是这样的: @lines = <IN>; process(\@lines); … sub process { @lines = shift; foreach my $line (@{$lines}) { chomp $line; #Handle line by line } } 所以,我需要做的是将chompreplace为删除Unix风格或Windows风格的换行符。 我正在想办法解决这个问题,Perl的通常的缺点之一:) 你有什么看法,以扼杀通用的线路突破? 什么是最有效的? 编辑:一个小的澄清 – 方法'进程'从某处获取行的列表, 而不是从文件nessecarily读取 。 每一行可能都有 没有追踪的线索 Unix风格的换行符 Windows风格的线代码 只是回车(当原始数据具有Windows风格的换行符并且用$ / ='\ n'读取时) 线条有不同风格的集合集合