2012-07-23 43 views
17

我想用Nmap::Parsernmap掃描的XML輸出轉換成CSV文件,我在開始時就遇到了問題。Nmap :: Parser,大文件上的分段錯誤

解析小型TCP/UDP掃描可以正常工作,但是當我嘗試轉換大型文件(例如20 MB)時,尤其是打開所有65535 UDP端口的文件時,出現分段錯誤。

這個問題似乎是「parsefile」的方法。

我試圖在Linux和Mac OS X版本不同的Perl 5.10/5.14的相同的結果。請參閱下面的代碼片段。

#!/usr/bin/env perl 
use strict; use warnings; 
use Nmap::Parser; 

my $np1 = new Nmap::Parser; 
my $xmlin = $ARGV[0]; 

sub read_file { 
    $np1->parsefile($xmlin); 
    for my $host ($np1->all_hosts()) { 
     for my $port ($host->udp_ports()) { 
      print $host->ipv4_addr()." ".$port."\n"; 

     } 
    } 
} 

&read_file; 
+13

可以嘗試用Perl 5.16?它看起來像Perl中的一個錯誤,在這裏描述:http://www.perlmonks.org/?node_id=955478 – mirod 2012-07-23 09:37:57

+4

嗨mirod,非常感謝你的幫助。升級Perl取得了訣竅。我剛剛安裝了perl 5.16,現在一切正常。成功轉換70MB XML文件。 :-) – rhe24 2012-07-23 11:47:11

+0

請提供這作爲一個答案,並接受它。 – 2012-10-15 20:37:41

回答

3

問題的出現是由於在Perl版本< 5.16一個已知的錯誤如在提及: http://www.perlmonks.org/?node_id=955478

升級Perl來5.16或更高會解決這個問題。

+1

這個問題有答案,且朝懸而未決名單。我正要做你做的事情。謝謝你這樣做。 – 2012-10-18 16:11:43

+0

我們得保持非常有用。 :) – askmish 2012-10-18 17:02:14