小编Mik*_*lls的帖子

在perl中系列地处理XML数据

我想知道在我的Perl情况下哪个XML解析器的人最好.我做了很多阅读,并尝试了XML::LibXMLXML::SAX.第一个耗尽了太多的内存而第二个对我来说似乎并不那么快(即使在关闭纯perl解析器之后).

我的需求非常具体.我通过Net::SSH图书馆收到了高达50MB的大回复.我希望在收到数据时将此数据传递给XML库,以便将最少量的数据保存在内存中.然后我需要在某些标签中查找数据并对其执行任何操作,在某些情况下总和一堆值,在其他情况下只需提取值并将它们写入文件或其他任何内容.所以我需要一个可以串行工作,快速工作并使用最少内存的XML解析器.我得到的数据是最多1024字节的块,所以我希望能够做类似的事情$myparser->sendData($mynewData),然后在打开或关闭新标签时调用函数XML::SAX.

我不一定需要XPath或XSLT.

xml linux perl centos

9
推荐指数
2
解决办法
411
查看次数

如何设置$!在perl

我想在perl中编写一些设置$的函数!以类似于内置perl函数的方式.当我尝试这样做时,它会抱怨"参数"无法创建管理员用户"在标量赋值中不是数字".我试过谷歌搜索这个但不幸的是谷歌不会看$!所以结果很难得到.

if(!createUser('admin')) { print $!; }

sub createUser
{
  my ($user) = @_;
  if($user eq "admin")
  {
    $! = "Cannot create admin user";
    return 0;
  }
  #create user here
  return 1;
}
Run Code Online (Sandbox Code Playgroud)

PS.我知道Try :: Tiny等,但我想保持与脚本其余部分的一致性,如果我切换到try/catch我想移动整个脚本,我还没准备好.

perl

3
推荐指数
1
解决办法
1706
查看次数

为什么这个正则表达式不适用于grep?

我试图从响应中删除"数据包号码624不匹配",所以显而易见的是尝试

cat somefile.txt | grep -v "Packet number \d+ doesn't match"
Run Code Online (Sandbox Code Playgroud)

如果我删除了-v,只是为了测试,那么它什么都不返回.所以也许命令行正在使用\d+首先执行某些操作.所以我尝试了各种组合,比如\\d+ \\d\+ \\\\d+ \\\\d\+ [0-9]+ [0-9]\+.答对了!!最后一个有效.有人能解释一下这里发生了什么吗?如果这被命令行修改,为什么echo "\d+"还会返回\d+

regex linux grep

3
推荐指数
1
解决办法
520
查看次数

TCL三元运算符不喜欢空字符串

简单的问题,TCL给了我"过早的表达结束",因为三元表达式的最后一个参数是一个空字符串.如果它是其他任何东西那么它的工作正常.我可以在这里使用空字符串吗?

set y 5
set x [expr ($y > 1) ? 1 : ""]
Run Code Online (Sandbox Code Playgroud)

tcl ternary-operator

2
推荐指数
1
解决办法
1574
查看次数

非常简单的perl脚本有大量的内存泄漏

我正在使用perl脚本来转换文件,发现只是从stdin读取并写入stdout足以导致大量内存泄漏.它达到了大约20gig,我猜想被操作系统杀死了.这是一个显示问题的脚本.

#!/usr/bin/perl
use strict;
use warnings;
foreach my $line(<STDIN>)
{
  print $line;
}
Run Code Online (Sandbox Code Playgroud)

而且我这样运行它

cat inputFile.x | perl test.pl > outputFile.x
Run Code Online (Sandbox Code Playgroud)

一旦我以每秒约0.5gig的速度运行这个记忆头.输入文件是68gig所以看起来perl永远不会释放内存.我尝试了各种各样的东西,比如undef $ line,使用ref,在foreach之外定义$ line.有没有办法强制perl释放内存?

编辑:注意,在Red Hat 6.5 64位上运行,Perl 5.10.1

linux perl rhel

0
推荐指数
2
解决办法
419
查看次数

标签 统计

linux ×3

perl ×3

centos ×1

grep ×1

regex ×1

rhel ×1

tcl ×1

ternary-operator ×1

xml ×1