2013-04-23 26 views
-1

的另一部分foreach循環使用的結果我使用foreach循環在我的代碼從腳本

foreach $c1(sort {$a<=>$b} keys %info) { 
    print $c1, "\t", 
      join(',',@{$info{$c1}->{var1}}), "\t", 
      join(',',@{$info{$c1}->{var2}}), "\n"; 
} 

當我運行我的代碼'foreach'的輸出顯示在屏幕上。

但是我想在腳本的其他部分使用'foreach'循環的結果。我怎樣才能做到這一點?我應該在循環內還是之前分配一個變量?

+1

「結果」是什麼意思?你想存儲你輸出的字符串嗎?你想存儲排序返回的元素的順序嗎? – Matteo 2013-04-23 09:53:41

+0

'print'並不是保存轉換數據的最佳選擇。如果你想保存,從一個集合的每個元素(散列或數組)中說一組產品,你應該學習*管道*或['map'](http://perldoc.perl.org/functions/map .html)轉換.. – Axeman 2013-04-23 12:16:39

回答

2

這不是完全清楚你問什麼,但如果你只是想救你正在創建一個字符串,這是很簡單的:

my $result = ""; 
    foreach $c1 (sort {$a <=> $b} keys %info) { 
     $result .= $c1 . "\t" . 
     join(',',@{$info{$c1}->{var1}}) . "\t" . 
     join(',',@{$info{$c1}->{var2}}) . "\n"; 
    } 

然後你就可以打印$result或將其發送給其他功能管他呢。

0

我認爲你可以使用這種類型的東西。 將您的結果推送到數組中。 push(@ array,$ c1); 現在你可以在程序的任何地方使用@array。