2013-03-18 73 views
5

我解析一些數據並組織它,現在我需要捕獲它在一個變量內。Perl附加printf輸出到字符串

在此之前,我從未使用過printf或sprintf。

我用printf在這樣的方式來組織數據:

printf("%-30s %18s %18s\n", "$a", "$b", "$c\n"); 

現在我的影片存儲一個字符串變量,我想將組織的數據追加到變量$ result。

我想是這樣

$result.printf("%-30s %18s %18s\n", "$a", "$b", "$c\n"); 

,它不工作。我也試過sprintf。

任何想法?

感謝,S

+6

我想我講在這裏給大家當我說「不工作「是有史以來第三次有用的診斷信息。告訴我們你預期會發生什麼,並告訴我們究竟發生了什麼。 – mob 2013-03-18 22:28:12

+2

@mob我很好奇:什麼是前兩個最不有幫助的? – TLP 2013-03-18 22:29:50

+1

請人們停止用引號包裝單獨的變量嗎?你會用C還是Python來做?你爲什麼用Perl做呢?我們稱之爲「無用的可變插值」。另外,你在你的格式字符串和printf的最後一個參數中都有\ n。你真的想在你的輸出中使用兩個換行符嗎? – runrig 2013-03-19 00:06:14

回答

1

不知道你是什麼意思「試圖sprintf的太」,因爲沒有任何理由,如果你這樣做的權利這是行不通的。儘管你展示的語法看起來不像perl,更像是python或ruby?

my $foo = sprintf("%-30s %18s %18s\n", "$a", "$b", "$c\n"); 
$result .= $foo; 
+0

我投了'python' =)打賭。 – 2013-03-18 22:42:58

+0

感謝您的幫助。是的,對於「不起作用」中缺乏特異性而感到抱歉。我應該更具體。它可以工作,或者我可以通過將變量附加到變量中,將sprintf格式保存到變量中,以附加到.txt文件,並將sprintf語句附加到像我正在嘗試執行的變量。 – user1610717 2013-03-18 23:15:23

+1

@ user1610717'$ foo'只是一個轉換變量,你可以很容易地追加'sprintf'。 – TLP 2013-03-18 23:47:52

8
printf

輸出構造字符串指定的句柄(或者如果省略當前缺省),並返回一個布爾值指示是否發生了IO錯誤或沒有。沒有用。 sprintf返回構造的字符串,所以你需要這個。

連接兩個字符串(附加一個到另一個),一個採用.運營商(或join

$result . sprintf(...) 

但你說這是行不通的。據推測,這是因爲你也想存儲在$result產生的字符串,你可以做使用

$result = $result . sprintf(...); 

或短

$result .= sprintf(...);