2013-10-07 25 views
0

此程序從Web獲取數值在我@values陣列 我想在它看起來像格式化輸出數據到Excel文件

 il9 il8 il7 
2012 v1 b1 
2011 v2 b2 
2010 v3 b3 
    . 
    . 
2000 v12 b12 

一個表來打印出這些值的每個值的其中v1 .. v12是@values中第一個變量的值等。這裏是我的程序,請幫助我構造它。是否有可以帶我回到程序的第一行用perl 感謝

#!/usr/bin/perl -w 
    use strict; 
    use LWP::UserAgent; 
    use URI; 
    my $browser = LWP::UserAgent->new; 
    $browser->timeout(10); 
    $browser->env_proxy; 

    open(OUT, ">out"); 
    my $i = 2013; 
    while ($i-- > 2000){print OUT "$i\n"} 
    my $a = 2013 ; 
    my $base = 'http://webtools.mf.uni-lj.si/public/summarisenumbers.php'; 
    my @values = ('il9', 'il8', 'il6'); 
    foreach my $value (@values) { 
print OUT "$value \n" 
    while ($a-- > 2000){ 
       my $b = $a + 1; 
       my $c = $b + 1; 
       my $query = '?query=('.$value.')'.$a.'[dp] NOT   '.$b.'[dp] NOT '.$c.'[dp]'; 
       my $add = $base.$query; 
       #my $url = URI->new($add); 
       #my $response = $browser->get($url); 
       #if($response->is_success) {print OUT $response->decoded_content;} 
       #else {die $response->status_line}; 
       print OUT "$query\n"; 
       } $a = 2013; print OUT 
         } 

    close(OUT); 
+0

是否要創建一個xls Excel文件?或將表格數據打印到文件? –

+0

我想創建一個excel XLSX文件,無論如何,我想出了答案,謝謝你的迴應。 –

回答

0

更加註重格式化/壓痕和變量命名的轉義字符 - 它會幫助你很多。

#!/usr/bin/perl 

use strict; 
use warnings; 
use LWP::UserAgent; 

my $base_url = 'http://webtools.mf.uni-lj.si/public/summarisenumbers.php'; 
my @values = ('il9', 'il8', 'il6'); 
my $stat_data = {}; 

my $browser = LWP::UserAgent->new; 
$browser->timeout(10); 
$browser->env_proxy; 

for my $value (@values) { 

    for my $year (2010 .. 2013) { 

     my $query = '?query=(' . $value . ')' . $year .'[dp] NOT   ' . ($year+1) . '[dp] NOT ' . ($year+2) .'[dp]'; 
     my $url = "$base_url$query"; 

     my $response = $browser->get($url); 

     if($response->is_success) { 
      ## store the fetched content in a hash structure 
      $stat_data->{$year}->{$value} = $response->decoded_content; 
     } 
     else { 
      die $response->status_line; 
     } 
    } 
} 

## print the header 
print "\t", join("\t", @values), "\n"; 

## print the data by the years in reverse order 
for my $year (reverse sort keys %{$stat_data}) { 

    print $year; 

    for my $value (@values) { 
     print "\t", $stat_data->{$year}->{$value}; 
    } 

    print "\n"; 
} 
+0

謝謝德米特里。我正在研究縮進問題,我想出了一個使用excel編寫器模塊更簡單的方法。 –

+0

啊,所以你想要生成一個xls文件,而不僅僅是一個excel般的製表符分隔文本。那好吧。儘管如此,我仍然建議首先獲取數據並將其存儲在某個結構中,然後在單獨的步驟中生成輸出。 –