2013-04-12 17 views
0

我在輸入文本文件的每一行中都有N個浮點數。我試圖將它們轉換成二進制格式(四字節浮點序列)。從輸入一系列花車的包裝模板是什麼?

採樣線:-12.391 -5.301 -12.854 0.438 8.499 4.862 -2.481 3.962

我使用Perl的pack功能如下

foreach my $line (@inputData) { 
    print $outFileHandle pack('fxfxfxfx... N times', $line); 
} 

而不是寫fx N次,我能做些什麼?

+2

我認爲這是重複操作符('x')工作:'...包( 'FX' X $ N, $ line)...' – larsen

+0

@larsen,謝謝,但是這給了我這個錯誤'Argument「-10.309 0.337 -17.267 6.611 6.937 5.338 -0.870 ...」包中沒有數字「 – user13107

+0

包模板中是否真的需要x ('fx')?它只是增加了一個額外的空字節。它會返回一個肯定的錯誤,您需要將行分割爲實數,正如dan1111所建議的那樣。 – TrueY

回答

4

pack takes a list of values,而您試圖在一個變量內給它多個值。先分割空白。

然後你可以使用*修改接受任何數量的花車:

pack "f*", split(' ',$line); 
+2

如果N已知,包裝模板可以是'f '。這是不明確的,如果這是個案。但是無論如何你的解決方案都是正確的。 – TrueY