- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我偶尔需要从大型 XML 数据库导出中提取数据。文件大小在 600 到 700 MB 之间。经过几天的研究,我得出结论 XML::Twig
是要走的路,因为它的处理程序允许我逐块处理文件。
我按照示例进行操作,经过数小时的反复试验,我编写了执行我需要完成的工作的 Perl 代码。代码有效,它提取了我想要的数据并计算了我需要的细节。但是在运行脚本时(处理 620MB 的 XML 需要大约 15 分钟),我在事件监视器中注意到,到最后内存使用率迅速增加到不合理的高水平。
我删除了处理我感兴趣的 XML 标签的 Perl 代码,并用一条指令替换它来增加一个变量,只需计算 product
的数量。元素已被发现。内存使用情况类似。首先是正常的,然后是最后几个元素,它开始迅速增加并吃掉我拥有的一切。
我添加了一些代码来监视时间、处理的项目数以及我的 Perl 进程使用了多少内存。此代码显示在此处:
#!/usr/bin/perl
use strict;
use utf8;
use XML::Twig;
binmode STDOUT, ":encoding(UTF-8)";
binmode STDERR, ":encoding(UTF-8)";
my $my_processID = $$;
my ($xml_file_name, $second_arg) = @ARGV;
unless (defined($xml_file_name)) { die "Please provide XML filename as 1st argument."; }
my $product_counter = 0;
my @shell_command_output_text;
my $resource_usage_status;
my $reference_timestamp;
my $datetimeNow;
my $t = XML::Twig->new(
twig_handlers => { 'product' => \&do_what_needs_to_be_done_with_each_product },
pretty_print => 'indented'
);
$reference_timestamp = time();
$t->parsefile( $xml_file_name, ErrorContext => 2 );
print "(Parse finished)\n";
showstatus();
$t->purge;
print "(Purge finished)\n";
showstatus();
print "\nJOB COMPLETE.\n$product_counter items processed.\n";
exit 0;
sub do_what_needs_to_be_done_with_each_product() {
my( $twig, $product)= @_;
$product_counter++;
## Display status every 5 seconds:
if ( ( time()-$reference_timestamp ) > 5 ) {
showstatus();
$reference_timestamp = time();
}
$twig->purge;
} ## end-sub
sub showstatus() {
@shell_command_output_text = `top -l 1 -pid $my_processID -stats pid,command,cpu,mem`;
## I only need the last line of that output.
$resource_usage_status = $shell_command_output_text[$#shell_command_output_text];
$datetimeNow = localtime();
chomp $resource_usage_status;
print "Res: $resource_usage_status -> item count: $product_counter <- time: $datetimeNow\n";
} ## end-sub
keve@deimos:DATA$ ./twigExample.pl product_db_extract.xml
Res: 3237 perl5.18 0.0 12M+ -> item count: 3086 <- time: Sat Nov 18 23:45:48 2017
Res: 3237 perl5.18 0.0 12M+ -> item count: 6521 <- time: Sat Nov 18 23:45:55 2017
Res: 3237 perl5.18 0.0 12M+ -> item count: 9909 <- time: Sat Nov 18 23:46:02 2017
Res: 3237 perl5.18 0.0 12M+ -> item count: 12751 <- time: Sat Nov 18 23:46:09 2017
Res: 3237 perl5.18 0.0 12M+ -> item count: 15570 <- time: Sat Nov 18 23:46:16 2017
Res: 3237 perl5.18 0.0 12M+ -> item count: 18151 <- time: Sat Nov 18 23:46:23 2017
Res: 3237 perl5.18 0.0 12M+ -> item count: 20828 <- time: Sat Nov 18 23:46:30 2017
Res: 3237 perl5.18 0.0 12M+ -> item count: 23561 <- time: Sat Nov 18 23:46:37 2017
Res: 3237 perl5.18 0.0 12M+ -> item count: 26230 <- time: Sat Nov 18 23:46:44 2017
Res: 3237 perl5.18 0.0 12M+ -> item count: 28861 <- time: Sat Nov 18 23:46:51 2017
Res: 3237 perl5.18 0.0 12M+ -> item count: 31665 <- time: Sat Nov 18 23:46:58 2017
Res: 3237 perl5.18 0.0 13M+ -> item count: 34443 <- time: Sat Nov 18 23:47:05 2017
Res: 3237 perl5.18 0.0 13M+ -> item count: 36952 <- time: Sat Nov 18 23:47:12 2017
Res: 3237 perl5.18 0.0 13M+ -> item count: 39461 <- time: Sat Nov 18 23:47:19 2017
Res: 3237 perl5.18 0.0 13M+ -> item count: 42113 <- time: Sat Nov 18 23:47:26 2017
Res: 3237 perl5.18 0.0 13M+ -> item count: 44794 <- time: Sat Nov 18 23:47:33 2017
Res: 3237 perl5.18 0.0 13M+ -> item count: 47510 <- time: Sat Nov 18 23:47:40 2017
Res: 3237 perl5.18 0.0 15M+ -> item count: 50154 <- time: Sat Nov 18 23:47:47 2017
Res: 3237 perl5.18 0.0 15M+ -> item count: 52869 <- time: Sat Nov 18 23:47:54 2017
Res: 3237 perl5.18 0.0 15M+ -> item count: 55497 <- time: Sat Nov 18 23:48:01 2017
Res: 3237 perl5.18 0.0 15M+ -> item count: 57725 <- time: Sat Nov 18 23:48:08 2017
Res: 3237 perl5.18 0.0 15M+ -> item count: 59754 <- time: Sat Nov 18 23:48:15 2017
Res: 3237 perl5.18 0.0 15M+ -> item count: 61600 <- time: Sat Nov 18 23:48:22 2017
Res: 3237 perl5.18 0.0 15M+ -> item count: 63244 <- time: Sat Nov 18 23:48:29 2017
Res: 3237 perl5.18 0.0 15M+ -> item count: 64801 <- time: Sat Nov 18 23:48:36 2017
Res: 3237 perl5.18 0.0 15M+ -> item count: 66448 <- time: Sat Nov 18 23:48:43 2017
Res: 3237 perl5.18 0.0 15M+ -> item count: 68022 <- time: Sat Nov 18 23:48:50 2017
Res: 3237 perl5.18 0.0 15M+ -> item count: 69561 <- time: Sat Nov 18 23:48:57 2017
Res: 3237 perl5.18 0.0 15M+ -> item count: 71180 <- time: Sat Nov 18 23:49:04 2017
Res: 3237 perl5.18 0.0 15M+ -> item count: 73009 <- time: Sat Nov 18 23:49:11 2017
Res: 3237 perl5.18 0.0 15M+ -> item count: 75259 <- time: Sat Nov 18 23:49:18 2017
Res: 3237 perl5.18 0.0 15M+ -> item count: 77331 <- time: Sat Nov 18 23:49:25 2017
Res: 3237 perl5.18 0.0 15M+ -> item count: 79344 <- time: Sat Nov 18 23:49:32 2017
Res: 3237 perl5.18 0.0 15M+ -> item count: 81389 <- time: Sat Nov 18 23:49:39 2017
Res: 3237 perl5.18 0.0 15M+ -> item count: 83345 <- time: Sat Nov 18 23:49:46 2017
Res: 3237 perl5.18 0.0 15M+ -> item count: 85346 <- time: Sat Nov 18 23:49:53 2017
Res: 3237 perl5.18 0.0 15M+ -> item count: 87350 <- time: Sat Nov 18 23:50:00 2017
Res: 3237 perl5.18 0.0 15M+ -> item count: 89359 <- time: Sat Nov 18 23:50:07 2017
Res: 3237 perl5.18 0.0 15M+ -> item count: 91374 <- time: Sat Nov 18 23:50:14 2017
Res: 3237 perl5.18 0.0 15M+ -> item count: 93451 <- time: Sat Nov 18 23:50:21 2017
Res: 3237 perl5.18 0.0 15M+ -> item count: 95542 <- time: Sat Nov 18 23:50:28 2017
Res: 3237 perl5.18 0.0 15M+ -> item count: 97635 <- time: Sat Nov 18 23:50:35 2017
Res: 3237 perl5.18 0.0 15M+ -> item count: 99764 <- time: Sat Nov 18 23:50:42 2017
Res: 3237 perl5.18 0.0 15M+ -> item count: 101914 <- time: Sat Nov 18 23:50:49 2017
Res: 3237 perl5.18 0.0 15M+ -> item count: 103896 <- time: Sat Nov 18 23:50:56 2017
Res: 3237 perl5.18 0.0 15M+ -> item count: 105982 <- time: Sat Nov 18 23:51:03 2017
Res: 3237 perl5.18 0.0 15M+ -> item count: 108023 <- time: Sat Nov 18 23:51:10 2017
Res: 3237 perl5.18 0.0 15M+ -> item count: 110090 <- time: Sat Nov 18 23:51:17 2017
Res: 3237 perl5.18 0.0 15M+ -> item count: 112033 <- time: Sat Nov 18 23:51:24 2017
Res: 3237 perl5.18 0.0 15M+ -> item count: 114039 <- time: Sat Nov 18 23:51:31 2017
Res: 3237 perl5.18 0.0 15M+ -> item count: 116038 <- time: Sat Nov 18 23:51:38 2017
Res: 3237 perl5.18 0.0 15M+ -> item count: 118031 <- time: Sat Nov 18 23:51:45 2017
(Parse finished)
Res: 3237 perl5.18 0.0 3780M+ -> item count: 119335 <- time: Sat Nov 18 23:54:21 2017
(Purge finished)
Res: 3237 perl5.18 0.0 2634M+ -> item count: 119335 <- time: Sat Nov 18 23:54:27 2017
JOB COMPLETE.
119335 items processed.
keve@deimos:DATA$
#!/bin/bash
while true
do
perlStat=`top -l 1 -pid $1 -stats pid,command,cpu,mem,purg,vsize | grep perl5`
echo "`date` ::> $perlStat"
sleep 5
done
keve@deimos:DATA$ ./monitorTWIGprocess.sh 3237
2017 Nov 18 Szo 23:45:53 CET ::> 3237 perl5.18 0.0 12M+ 0B N/A
2017 Nov 18 Szo 23:46:00 CET ::> 3237 perl5.18 0.0 12M+ 0B N/A
2017 Nov 18 Szo 23:46:06 CET ::> 3237 perl5.18 0.0 12M+ 0B N/A
2017 Nov 18 Szo 23:46:12 CET ::> 3237 perl5.18 0.0 12M+ 0B N/A
2017 Nov 18 Szo 23:46:18 CET ::> 3237 perl5.18 0.0 12M+ 0B N/A
2017 Nov 18 Szo 23:46:24 CET ::> 3237 perl5.18 0.0 12M+ 0B N/A
2017 Nov 18 Szo 23:46:30 CET ::> 3237 perl5.18 0.0 12M+ 0B N/A
2017 Nov 18 Szo 23:46:36 CET ::> 3237 perl5.18 0.0 12M+ 0B N/A
2017 Nov 18 Szo 23:46:42 CET ::> 3237 perl5.18 0.0 12M+ 0B N/A
2017 Nov 18 Szo 23:46:48 CET ::> 3237 perl5.18 0.0 12M+ 0B N/A
2017 Nov 18 Szo 23:46:54 CET ::> 3237 perl5.18 0.0 12M+ 0B N/A
2017 Nov 18 Szo 23:47:01 CET ::> 3237 perl5.18 0.0 12M+ 0B N/A
2017 Nov 18 Szo 23:47:07 CET ::> 3237 perl5.18 0.0 13M+ 0B N/A
2017 Nov 18 Szo 23:47:13 CET ::> 3237 perl5.18 0.0 13M+ 0B N/A
2017 Nov 18 Szo 23:47:19 CET ::> 3237 perl5.18 0.0 13M+ 0B N/A
2017 Nov 18 Szo 23:47:25 CET ::> 3237 perl5.18 0.0 13M+ 0B N/A
2017 Nov 18 Szo 23:47:31 CET ::> 3237 perl5.18 0.0 13M+ 0B N/A
2017 Nov 18 Szo 23:47:37 CET ::> 3237 perl5.18 0.0 13M+ 0B N/A
2017 Nov 18 Szo 23:47:43 CET ::> 3237 perl5.18 0.0 15M+ 0B N/A
2017 Nov 18 Szo 23:47:49 CET ::> 3237 perl5.18 0.0 15M+ 0B N/A
2017 Nov 18 Szo 23:47:56 CET ::> 3237 perl5.18 0.0 15M+ 0B N/A
2017 Nov 18 Szo 23:48:02 CET ::> 3237 perl5.18 0.0 15M+ 0B N/A
2017 Nov 18 Szo 23:48:08 CET ::> 3237 perl5.18 0.0 15M+ 0B N/A
2017 Nov 18 Szo 23:48:14 CET ::> 3237 perl5.18 0.0 15M+ 0B N/A
2017 Nov 18 Szo 23:48:20 CET ::> 3237 perl5.18 0.0 15M+ 0B N/A
2017 Nov 18 Szo 23:48:26 CET ::> 3237 perl5.18 0.0 15M+ 0B N/A
2017 Nov 18 Szo 23:48:32 CET ::> 3237 perl5.18 0.0 15M+ 0B N/A
2017 Nov 18 Szo 23:48:38 CET ::> 3237 perl5.18 0.0 15M+ 0B N/A
2017 Nov 18 Szo 23:48:44 CET ::> 3237 perl5.18 0.0 15M+ 0B N/A
2017 Nov 18 Szo 23:48:51 CET ::> 3237 perl5.18 0.0 15M+ 0B N/A
2017 Nov 18 Szo 23:48:57 CET ::> 3237 perl5.18 0.0 15M+ 0B N/A
2017 Nov 18 Szo 23:49:03 CET ::> 3237 perl5.18 0.0 15M+ 0B N/A
2017 Nov 18 Szo 23:49:09 CET ::> 3237 perl5.18 0.0 15M+ 0B N/A
2017 Nov 18 Szo 23:49:15 CET ::> 3237 perl5.18 0.0 15M+ 0B N/A
2017 Nov 18 Szo 23:49:21 CET ::> 3237 perl5.18 0.0 15M+ 0B N/A
2017 Nov 18 Szo 23:49:27 CET ::> 3237 perl5.18 0.0 15M+ 0B N/A
2017 Nov 18 Szo 23:49:33 CET ::> 3237 perl5.18 0.0 15M+ 0B N/A
2017 Nov 18 Szo 23:49:39 CET ::> 3237 perl5.18 0.0 15M+ 0B N/A
2017 Nov 18 Szo 23:49:46 CET ::> 3237 perl5.18 0.0 15M+ 0B N/A
2017 Nov 18 Szo 23:49:52 CET ::> 3237 perl5.18 0.0 15M+ 0B N/A
2017 Nov 18 Szo 23:49:58 CET ::> 3237 perl5.18 0.0 15M+ 0B N/A
2017 Nov 18 Szo 23:50:04 CET ::> 3237 perl5.18 0.0 15M+ 0B N/A
2017 Nov 18 Szo 23:50:10 CET ::> 3237 perl5.18 0.0 15M+ 0B N/A
2017 Nov 18 Szo 23:50:16 CET ::> 3237 perl5.18 0.0 15M+ 0B N/A
2017 Nov 18 Szo 23:50:22 CET ::> 3237 perl5.18 0.0 15M+ 0B N/A
2017 Nov 18 Szo 23:50:28 CET ::> 3237 perl5.18 0.0 15M+ 0B N/A
2017 Nov 18 Szo 23:50:35 CET ::> 3237 perl5.18 0.0 15M+ 0B N/A
2017 Nov 18 Szo 23:50:41 CET ::> 3237 perl5.18 0.0 15M+ 0B N/A
2017 Nov 18 Szo 23:50:47 CET ::> 3237 perl5.18 0.0 15M+ 0B N/A
2017 Nov 18 Szo 23:50:53 CET ::> 3237 perl5.18 0.0 15M+ 0B N/A
2017 Nov 18 Szo 23:50:59 CET ::> 3237 perl5.18 0.0 15M+ 0B N/A
2017 Nov 18 Szo 23:51:05 CET ::> 3237 perl5.18 0.0 15M+ 0B N/A
2017 Nov 18 Szo 23:51:11 CET ::> 3237 perl5.18 0.0 15M+ 0B N/A
2017 Nov 18 Szo 23:51:17 CET ::> 3237 perl5.18 0.0 15M+ 0B N/A
2017 Nov 18 Szo 23:51:23 CET ::> 3237 perl5.18 0.0 15M+ 0B N/A
2017 Nov 18 Szo 23:51:29 CET ::> 3237 perl5.18 0.0 15M+ 0B N/A
2017 Nov 18 Szo 23:51:36 CET ::> 3237 perl5.18 0.0 15M+ 0B N/A
2017 Nov 18 Szo 23:51:42 CET ::> 3237 perl5.18 0.0 15M+ 0B N/A
2017 Nov 18 Szo 23:51:48 CET ::> 3237 perl5.18 0.0 15M+ 0B N/A
2017 Nov 18 Szo 23:51:54 CET ::> 3237 perl5.18 0.0 125M+ 0B N/A
2017 Nov 18 Szo 23:52:00 CET ::> 3237 perl5.18 0.0 278M+ 0B N/A
2017 Nov 18 Szo 23:52:06 CET ::> 3237 perl5.18 0.0 430M+ 0B N/A
2017 Nov 18 Szo 23:52:12 CET ::> 3237 perl5.18 0.0 584M+ 0B N/A
2017 Nov 18 Szo 23:52:18 CET ::> 3237 perl5.18 0.0 737M+ 0B N/A
2017 Nov 18 Szo 23:52:24 CET ::> 3237 perl5.18 0.0 889M+ 0B N/A
2017 Nov 18 Szo 23:52:31 CET ::> 3237 perl5.18 0.0 1042M+ 0B N/A
2017 Nov 18 Szo 23:52:37 CET ::> 3237 perl5.18 0.0 1195M+ 0B N/A
2017 Nov 18 Szo 23:52:43 CET ::> 3237 perl5.18 0.0 1349M+ 0B N/A
2017 Nov 18 Szo 23:52:49 CET ::> 3237 perl5.18 0.0 1502M+ 0B N/A
2017 Nov 18 Szo 23:52:55 CET ::> 3237 perl5.18 0.0 1656M+ 0B N/A
2017 Nov 18 Szo 23:53:01 CET ::> 3237 perl5.18 0.0 1809M+ 0B N/A
2017 Nov 18 Szo 23:53:07 CET ::> 3237 perl5.18 0.0 1961M+ 0B N/A
2017 Nov 18 Szo 23:53:13 CET ::> 3237 perl5.18 0.0 2114M+ 0B N/A
2017 Nov 18 Szo 23:53:19 CET ::> 3237 perl5.18 0.0 2267M+ 0B N/A
2017 Nov 18 Szo 23:53:26 CET ::> 3237 perl5.18 0.0 2420M+ 0B N/A
2017 Nov 18 Szo 23:53:32 CET ::> 3237 perl5.18 0.0 2573M+ 0B N/A
2017 Nov 18 Szo 23:53:38 CET ::> 3237 perl5.18 0.0 2726M+ 0B N/A
2017 Nov 18 Szo 23:53:44 CET ::> 3237 perl5.18 0.0 2879M+ 0B N/A
2017 Nov 18 Szo 23:53:50 CET ::> 3237 perl5.18 0.0 3032M+ 0B N/A
2017 Nov 18 Szo 23:53:56 CET ::> 3237 perl5.18 0.0 3186M+ 0B N/A
2017 Nov 18 Szo 23:54:02 CET ::> 3237 perl5.18 0.0 3339M+ 0B N/A
2017 Nov 18 Szo 23:54:08 CET ::> 3237 perl5.18 0.0 3492M+ 0B N/A
2017 Nov 18 Szo 23:54:15 CET ::> 3237 perl5.18 0.0 3646M+ 0B N/A
2017 Nov 18 Szo 23:54:21 CET ::> 3237 perl5.18 0.0 3786M+ 0B N/A
2017 Nov 18 Szo 23:54:27 CET ::> 3237 perl5.18 0.0 3502M+ 0B N/A
2017 Nov 18 Szo 23:54:33 CET ::>
^C
keve@deimos:DATA$
my $t = XML::Twig->new(
##twig_handlers => { 'product' => \&do_what_needs_to_be_done_with_each_product },
twig_roots => { 'product' => \&do_what_needs_to_be_done_with_each_product },
twig_print_outside_roots => 0,
pretty_print => 'indented'
);
$twig->purge();
我的潜艇内的指令。
keve@deimos:DATA$ ./twigExample.pl product_db_extract.xml
Res: 1591 perl5.18 0.0 12M+ -> item count: 2852 <- time: Sun Nov 19 15:20:51 2017
Res: 1591 perl5.18 0.0 12M+ -> item count: 6106 <- time: Sun Nov 19 15:20:58 2017
Res: 1591 perl5.18 0.0 12M+ -> item count: 9341 <- time: Sun Nov 19 15:21:05 2017
Res: 1591 perl5.18 0.0 12M+ -> item count: 12141 <- time: Sun Nov 19 15:21:12 2017
.
.
.
Res: 1591 perl5.18 0.0 15M+ -> item count: 112293 <- time: Sun Nov 19 15:26:41 2017
Res: 1591 perl5.18 0.0 15M+ -> item count: 114255 <- time: Sun Nov 19 15:26:48 2017
Res: 1591 perl5.18 0.0 15M+ -> item count: 116171 <- time: Sun Nov 19 15:26:55 2017
Res: 1591 perl5.18 0.0 15M+ -> item count: 118099 <- time: Sun Nov 19 15:27:02 2017
(Parse finished)
Res: 1591 perl5.18 0.0 15M+ -> item count: 119335 <- time: Sun Nov 19 15:27:56 2017
(Purge finished)
Res: 1591 perl5.18 0.0 15M+ -> item count: 119335 <- time: Sun Nov 19 15:27:57 2017
JOB COMPLETE.
119335 items processed.
keve@deimos:DATA$
keve@deimos:DATA$ ./monitorTWIGprocess.sh 1591
2017 Nov 19 Vas 15:20:57 CET ::> 1591 perl5.18 0.0 12M+ 0B N/A
2017 Nov 19 Vas 15:21:03 CET ::> 1591 perl5.18 0.0 12M+ 0B N/A
2017 Nov 19 Vas 15:21:09 CET ::> 1591 perl5.18 0.0 12M+ 0B N/A
2017 Nov 19 Vas 15:21:16 CET ::> 1591 perl5.18 0.0 12M+ 0B N/A
2017 Nov 19 Vas 15:21:22 CET ::> 1591 perl5.18 0.0 12M+ 0B N/A
2017 Nov 19 Vas 15:21:28 CET ::> 1591 perl5.18 0.0 12M+ 0B N/A
2017 Nov 19 Vas 15:21:34 CET ::> 1591 perl5.18 0.0 12M+ 0B N/A
2017 Nov 19 Vas 15:21:40 CET ::> 1591 perl5.18 0.0 12M+ 0B N/A
2017 Nov 19 Vas 15:21:46 CET ::> 1591 perl5.18 0.0 12M+ 0B N/A
2017 Nov 19 Vas 15:21:52 CET ::> 1591 perl5.18 0.0 12M+ 0B N/A
2017 Nov 19 Vas 15:21:58 CET ::> 1591 perl5.18 0.0 12M+ 0B N/A
2017 Nov 19 Vas 15:22:04 CET ::> 1591 perl5.18 0.0 12M+ 0B N/A
2017 Nov 19 Vas 15:22:10 CET ::> 1591 perl5.18 0.0 12M+ 0B N/A
2017 Nov 19 Vas 15:22:16 CET ::> 1591 perl5.18 0.0 13M+ 0B N/A
2017 Nov 19 Vas 15:22:22 CET ::> 1591 perl5.18 0.0 13M+ 0B N/A
2017 Nov 19 Vas 15:22:28 CET ::> 1591 perl5.18 0.0 13M+ 0B N/A
2017 Nov 19 Vas 15:22:35 CET ::> 1591 perl5.18 0.0 13M+ 0B N/A
2017 Nov 19 Vas 15:22:41 CET ::> 1591 perl5.18 0.0 13M+ 0B N/A
2017 Nov 19 Vas 15:22:47 CET ::> 1591 perl5.18 0.0 13M+ 0B N/A
2017 Nov 19 Vas 15:22:53 CET ::> 1591 perl5.18 0.0 15M+ 0B N/A
2017 Nov 19 Vas 15:22:59 CET ::> 1591 perl5.18 0.0 15M+ 0B N/A
2017 Nov 19 Vas 15:23:05 CET ::> 1591 perl5.18 0.0 15M+ 0B N/A
2017 Nov 19 Vas 15:23:11 CET ::> 1591 perl5.18 0.0 15M+ 0B N/A
2017 Nov 19 Vas 15:23:17 CET ::> 1591 perl5.18 0.0 15M+ 0B N/A
2017 Nov 19 Vas 15:23:23 CET ::> 1591 perl5.18 0.0 15M+ 0B N/A
2017 Nov 19 Vas 15:23:29 CET ::> 1591 perl5.18 0.0 15M+ 0B N/A
2017 Nov 19 Vas 15:23:35 CET ::> 1591 perl5.18 0.0 15M+ 0B N/A
2017 Nov 19 Vas 15:23:41 CET ::> 1591 perl5.18 0.0 15M+ 0B N/A
2017 Nov 19 Vas 15:23:47 CET ::> 1591 perl5.18 0.0 15M+ 0B N/A
2017 Nov 19 Vas 15:23:54 CET ::> 1591 perl5.18 0.0 15M+ 0B N/A
2017 Nov 19 Vas 15:24:00 CET ::> 1591 perl5.18 0.0 15M+ 0B N/A
2017 Nov 19 Vas 15:24:06 CET ::> 1591 perl5.18 0.0 15M+ 0B N/A
2017 Nov 19 Vas 15:24:12 CET ::> 1591 perl5.18 0.0 15M+ 0B N/A
2017 Nov 19 Vas 15:24:18 CET ::> 1591 perl5.18 0.0 15M+ 0B N/A
2017 Nov 19 Vas 15:24:24 CET ::> 1591 perl5.18 0.0 15M+ 0B N/A
2017 Nov 19 Vas 15:24:30 CET ::> 1591 perl5.18 0.0 15M+ 0B N/A
2017 Nov 19 Vas 15:24:36 CET ::> 1591 perl5.18 0.0 15M+ 0B N/A
2017 Nov 19 Vas 15:24:42 CET ::> 1591 perl5.18 0.0 15M+ 0B N/A
2017 Nov 19 Vas 15:24:48 CET ::> 1591 perl5.18 0.0 15M+ 0B N/A
2017 Nov 19 Vas 15:24:54 CET ::> 1591 perl5.18 0.0 15M+ 0B N/A
2017 Nov 19 Vas 15:25:00 CET ::> 1591 perl5.18 0.0 15M+ 0B N/A
2017 Nov 19 Vas 15:25:06 CET ::> 1591 perl5.18 0.0 15M+ 0B N/A
2017 Nov 19 Vas 15:25:13 CET ::> 1591 perl5.18 0.0 15M+ 0B N/A
2017 Nov 19 Vas 15:25:19 CET ::> 1591 perl5.18 0.0 15M+ 0B N/A
2017 Nov 19 Vas 15:25:25 CET ::> 1591 perl5.18 0.0 15M+ 0B N/A
2017 Nov 19 Vas 15:25:31 CET ::> 1591 perl5.18 0.0 15M+ 0B N/A
2017 Nov 19 Vas 15:25:37 CET ::> 1591 perl5.18 0.0 15M+ 0B N/A
2017 Nov 19 Vas 15:25:43 CET ::> 1591 perl5.18 0.0 15M+ 0B N/A
2017 Nov 19 Vas 15:25:49 CET ::> 1591 perl5.18 0.0 15M+ 0B N/A
2017 Nov 19 Vas 15:25:55 CET ::> 1591 perl5.18 0.0 15M+ 0B N/A
2017 Nov 19 Vas 15:26:01 CET ::> 1591 perl5.18 0.0 15M+ 0B N/A
2017 Nov 19 Vas 15:26:07 CET ::> 1591 perl5.18 0.0 15M+ 0B N/A
2017 Nov 19 Vas 15:26:13 CET ::> 1591 perl5.18 0.0 15M+ 0B N/A
2017 Nov 19 Vas 15:26:19 CET ::> 1591 perl5.18 0.0 15M+ 0B N/A
2017 Nov 19 Vas 15:26:26 CET ::> 1591 perl5.18 0.0 15M+ 0B N/A
2017 Nov 19 Vas 15:26:32 CET ::> 1591 perl5.18 0.0 15M+ 0B N/A
2017 Nov 19 Vas 15:26:38 CET ::> 1591 perl5.18 0.0 15M+ 0B N/A
2017 Nov 19 Vas 15:26:44 CET ::> 1591 perl5.18 0.0 15M+ 0B N/A
2017 Nov 19 Vas 15:26:50 CET ::> 1591 perl5.18 0.0 15M+ 0B N/A
2017 Nov 19 Vas 15:26:56 CET ::> 1591 perl5.18 0.0 15M+ 0B N/A
2017 Nov 19 Vas 15:27:02 CET ::> 1591 perl5.18 0.0 15M+ 0B N/A
2017 Nov 19 Vas 15:27:08 CET ::> 1591 perl5.18 0.0 15M+ 0B N/A
2017 Nov 19 Vas 15:27:14 CET ::> 1591 perl5.18 0.0 15M+ 0B N/A
2017 Nov 19 Vas 15:27:20 CET ::> 1591 perl5.18 0.0 15M+ 0B N/A
2017 Nov 19 Vas 15:27:26 CET ::> 1591 perl5.18 0.0 15M+ 0B N/A
2017 Nov 19 Vas 15:27:32 CET ::> 1591 perl5.18 0.0 15M+ 0B N/A
2017 Nov 19 Vas 15:27:38 CET ::> 1591 perl5.18 0.0 15M+ 0B N/A
2017 Nov 19 Vas 15:27:44 CET ::> 1591 perl5.18 0.0 15M+ 0B N/A
2017 Nov 19 Vas 15:27:51 CET ::> 1591 perl5.18 0.0 15M+ 0B N/A
2017 Nov 19 Vas 15:27:57 CET ::> 1591 perl5.18 0.0 15M+ 0B N/A
2017 Nov 19 Vas 15:28:03 CET ::>
^C
keve@deimos:DATA$
最佳答案
您正在构建一个完整的 XML 数据结构,除了 product
元素,只在最后丢弃它
你没有说你真正想用数据做什么,但如果你提供 twig_handlers
然后 XML::Twig
期望生成输入数据的过滤/修改版本
如果您根本不需要任何输出 XML,或者您想构建自己的而不是修改输入,那么我建议您使用 twig_roots
相反,像这样
这是未经测试的代码。我目前正在旅行,离 PC 系统很远,无法使用 进行测试
my $t = XML::Twig->new(
twig_roots => { product => \&do_what_needs_to_be_done_with_each_product },
twig_print_outside_roots => 0,
pretty_print => 'indented',
);
do_what_needs_to_be_done_with_each_product
(我希望这不是真正的标识符)不应该包含
$t->purge
当这样工作时
关于xml - 使用 Perl XML::Twig 处理程序处理大文件的内存使用效率低下,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47372689/
如果我的 Perl 程序使用 Perl 模块,它将如何确定在哪里可以找到包含模块代码的文件? 例如,如果程序包含: use MyModule1; # Example 1 us
我在一个文件中有一些不同格式的数字:8.3、0.001、9e-18。我正在寻找一种简单的方法来读取它们并存储它们而不会损失任何精度。这在 AWK 中很容易,但在 Perl 中是如何完成的呢?我只愿意使
我在一个文件中有一些不同格式的数字:8.3、0.001、9e-18。我正在寻找一种简单的方法来读取它们并存储它们而不会损失任何精度。这在 AWK 中很容易,但在 Perl 中是如何完成的呢?我只愿意使
我正在自学 Perl,并且在我的 Windows 8 64 位系统上安装了 Strawberry。 Strawberry 命令行似乎工作正常,我在 C 驱动器上的 Strawberry 文件夹中创建了
我在 Perl 模块 IO::Socket::SSL 中发现了一个错误,我可能会修复它,但是,我担心测试修复。我从 Debian 下载了源码包(因为我打算为它制作一个 Debian 包或补丁)并查看了
我有一个 perl 文件,它使用了两个 perl 模块 A.pm 和 B.pm。 但是在 B.pm 中我需要调用 A.pm 的子程序。即使我在 A.pm 中使用并尝试使用它,我仍然遇到未定义的错误。
有没有办法在 Perl 运行时加载整个模块?我原以为我用 autouse 找到了一个很好的解决方案,但以下代码无法编译: package tryAutouse2; use autouse 'tryAu
过去,我编写过许多 perl 模块,以及不止一些独立的 perl 程序,但我之前从未发布过多文件 perl 程序。 我有一个几乎处于 beta 阶段的 perl 程序,它将被开源发布。它需要一些数据文
我有 1 个 perl 脚本,我们在其中编写了几个子例程。例子: # Try_1.pl main(); sub main{ --- --- check(); } check { -- --} 现在,
似乎 CPAN 上的一些(很多?)模块部分是使用 XS 在 C 中实现的,如果需要,可以回退到纯 perl 实现。虽然这很聪明,但它显然会损害性能,我想知道它是否会发生,以便我可以解决问题。 有没有一
我对 perl 很陌生。我希望我可以从 perl 安装一些软件包,我这样做是这样的: perl -MCPAN -e 'install VM::EC2' 我猜它由于依赖而失败,它显示: Result:
给定一个 Perl 包 Foo.pm,例如 package Foo; use strict; sub bar { # some code here } sub baz { # more
我有一个用 Perl 编写的测试生成器。它生成连接到模拟器的测试。这些测试本身是用 Perl 编写的,并通过其 API 连接到模拟器。我希望生成的代码是人类可读的,这意味着我希望它能够正确缩进和格式化
我正在学习 Perl,非常新的用户。我可以知道这些 Perl 代码之间有什么区别吗? #!/usr/bin/perl & #!/usr/bin/perl -w 最佳答案 那不是 perl 代码,它是
我不认为这是一个重复的问题。这专门针对 Perl 模块附带的脚本。 通常,在安装多个 Perl 版本时,您可以将 perl 可执行文件标记为版本号 (perl5.32),这样它们就可以在 /whate
我有一个在文件中使用 Blowfish 加密的程序和第二个 perl 程序,它提示输入用于将其解密为字符串的密码,我希望不必将解密的源代码写入硬盘驱动器,尽管将它放在内存中并不是真正的问题,因为运行程
有没有人为 Perl 中的惰性求值列表找到了一个好的解决方案?我尝试了很多方法来改变类似的东西 for my $item ( map { ... } @list ) { } 进入懒惰的评估——例如,通
我安装了多个版本的 Perl。 我已经指定了要使用的版本。但是为了验证,我想从 .pl 脚本本身输出 Perl 的版本。 这可能吗? 在 Perl 脚本中解析“perl --version”的输出似乎
人们还经常问“我怎样才能编译 Perl?”而他们真正想要的是创建一个可以在机器上运行的可执行文件,即使他们没有安装 Perl。 我知道有几种解决方案: perl2exe靛蓝之星 它是商业的。我从未尝试
关闭。这个问题是opinion-based .它目前不接受答案。 想改进这个问题?更新问题,以便 editing this post 可以用事实和引用来回答它. 8年前关闭。 Improve this
我是一名优秀的程序员,十分优秀!