2013-07-15 37 views
0

文件數據塊是在類似於下面的文件我想從通過perl腳本指定的文件

edit_file content{ 
     val0  data0 
     val0  data0 
     val0  data0 
     val0  data0 
     val0  data0 
    } 

相同的格式編輯數據的特定塊,我的代碼是

my $temp_hash; 
open FD, "<temp.cfg"; 
@array = <FD>; 
foreach $line (@array) { 
    if ($line =~ /\s+(.*?)\s+(.*)/) { 
     foreach $key (keys %tem) { 
      $temp_hash{$1} = $2; 
     } 
    } 
    print $temp_hash; 
} 
foreach $array (keys $1) { 
    print "$key is $temp_hash{$key}\n"; 
} 
+1

是什麼問題?什麼不起作用?你期望得到哪個結果?請明確點! – daxim

+0

'%tem'從哪裏來?數據文件到底是什麼? - CPAN上可能已經有東西來解析這些文件 – plusplus

+0

數據文件是上述給定格式的配置文件,並且%tem是臨時哈希值我已經聲明如果您發現給定的代碼是錯誤的可以幫我用代碼 –

回答

0

如果你只是想解析你的文件到哈希:

my %data; 
open my $fh, "<", "temp.cfg" or die $!; 
while (my $line = readline($fh)) { 

    if ($line =~ m{^\s+(\S+)\s+(\S+)$}) { 

     $data{$1} = $2; 
    } 
} 
close $fh; 

foreach my $key (keys %data) { 
    print "$key is $data{$key}\n"; 
} 
+0

該文件包含幾個這樣的塊,因此如何識別單個/特定數據塊 –