我想在名为1_classification.dat,2_classification.dat等的所有文本文件中将“blue”replace为“red”。 我想编辑相同的文件,所以我试过这个代码,但它不起作用。 我哪里错了? @files=glob("*_classification.dat"); foreach my $file (@files) { open(IN,$file) or die $!; <IN>; while(<IN>) { $_='~s/blue/red/g'; print IN $file; } close(IN) }
我最近一直在阅读关于Perl的知识,并且对Perl如何处理传递给子例程的参数有些困惑。 在像Python,Java或PHP这样的语言中,函数定义的forms是(以伪代码的forms): function myFunc(arg1, arg2) { // Do something with arg1 and arg2 here } 然而在Perl中,它只是: sub mySub { # @_ holds all arguments passed } 据我所知,这是唯一的办法。 如果我想限制调用者只传递2个参数呢? 这不就是Perl不允许任何东西,但其他语言(如Python,C等)的可变数字参数吗? 这在某些时候不会成为问题吗? 那么其他语言的所有默认参数检查呢? 一个人必须在Perl中明确地做到这一点? 例如 sub a_sub { if (@_ == 2) { # Continue function } else { return false } }
我遇到了几个Perl模块,例如看起来类似于下面的代码: package MyPackage; use strict; use warnings; use constant PERL510 => ( $] >= 5.0100 ); require Exporter; our @ISA = qw(Exporter); our @EXPORT = qw( ); { #What is the significance of this curly brace? my $somevar; sub Somesub { #Some code here } } 1; 1;的意义是什么1; 以及附上$somevar和Sub的大括号?
我试图parsingFacebook Graph API的 JSON结果,我有一些麻烦。 我希望做的是打印股份数量: my $trendsurl = "https://graph.facebook.com/?ids=http://www.filestube.com"; my $json; { local $/; #enable slurp open my $fh, "<", $trendsurl; $json = <$fh>; } my $decoded_json = @{decode_json{shares}}; print $decoded_json;
我所有的脚本都是用Perl完成的,我可以在命令行执行一行,而Perl正则expression式似乎更容易。 有什么我可以在BASH中做我不能在Perl中做的? 我只是觉得自己不是一个真正的黑客,除非我花时间去研究BASH并开始使用Sed和Awk。 这是值得的,还是我只是要求痛苦和挫折?
我试图将表格的格式从一个OpenOffice Writer文件复制到另一个…我可以告诉我正在将样式的名称写入第二个文档,而不是样式数据。 我怀疑这与odfContainer的'styles'部分有关,但我不清楚如何将其写入第二个文档,尤其是因为当我在debugging器中检查$style对象时,似乎与$doc对象完全相同,后者据说已经加载了'content'部分。 这是我到目前为止… #! /usr/bin/perl use warnings; use strict; use OpenOffice::OODoc; my $file='mytest.odt'; my $outfile='doc2.odt'; # load input file my $container = odfContainer("$file"); $container->raw_export("styles.xml"); my $doc = odfDocument ( container => $container, part => 'content' ); my $style = odfDocument ( container => $container, part => 'styles' ); # load output file my $container2 […]
当我运行git svn clone时,出现以下错误: 0 [main] perl 24432 cygwin_exception::open_stackdumpfile: Dumping stack trace to perl.exe.stackdump fatal: malformed index info 100644 362f1c18ceed5d593eb021432545685283a93 当我打开文件时,我看到以下内容: 例外:STATUS_ACCESS_VIOLATION在RIP = 0048360C537 RAX = 00000006039F81E0 RBX = 000000005219E248 RCX = 000000060003A3C0 RDX = 0000000000000000 RSI = 000000000000FDB4 RDI = 0000000000000004 R8 = 0000000000000000 R9 = 0000000000000000 R10 = 0000000000230000 R11 = 000000048D785FBA R12 = […]
我试图让Plack::App::CGIBin在FreeBSD 8.2上使用Apache2和FastCGI。 最终的目标是能够使用这个设置来通过Plack提供一大堆遗留的CGI脚本,以利用它的中间件function,但是我还没有能够得到一个简单的例子。 我已经在Plack :: Handler :: FCGI和Plack :: App :: CGIBin本身上跟踪了CPAN文档,但是我不确定是否缺less某些东西或者做了哪些错误,这些文档没有涉及。 这是我添加的Apacheconfiguration: # Set up external server FastCgiExternalServer /tmp/placktest.fcgi -socket /tmp/fcgi.socket # URL to be handled by FastCGI Alias /plack/ /tmp/placktest.fcgi/ 运行外部服务器的命令: plackup -s FCGI –listen /tmp/fcgi.socket /data/www/psgi/app.psgi 服务器启动成功,返回以下内容: FastCGI: manager (pid <pid>): initialized FastCGI: manager (pid <pid>): server (pid <pid>) started FastCGI: server […]
当人们想要在IntelliJ中编写Perl时,人们做什么? 我还没有看到任何添加语言支持的插件。 有没有人有任何经验,为IntelliJ编写语言插件? 难吗? 我可以采取一个现有的插件,并改变它,使其支持Perl? 有什么build议么?
我是Perl的新手,而且我是这样使用它们的 $_ foreach (@list) { print "$_\n"; } @_ sub search { my ($no, @list) = @_; } 这些下划线variables究竟是如何在Perl中工作的? 有什么其他的构造,他们是有用的?