2013-03-18 6 views
5

私はいくつかのデータを解析して整理していますが、今は変数の中に取り込む必要があります。Perlを追加して文字列に出力する

これまでにprintfやsprintfを使ったことはありません。

私は、データを整理するために、このような方法で、printf関数を使用しています:

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

は今、私は、文字列を格納しています変数を持っている、と私は、変数$結果に編成されたデータを付加したいです。

私は

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

のようなものを試してみましたが、それは動作しません。私もsprintfを試しました。

アイデア?あなたは右のそれを行う場合、それは動作しません理由はありませんので

おかげで、S

+6

を使用して行うことができます$resultで生成された文字列を格納したいので、私は、私はない」と言うとき、私はここに皆のために話すと思うのです作業 "は、すべての時間の3番目の最も有用な診断メッセージです。実際に何が起こったかを教えてください。 – mob

+2

@mob私は好奇心が強いです:最も重要な2つは何ですか? – TLP

+1

孤独な変数を引用符で囲むのをやめてください。あなたはCやPythonでそれをやりますか?なぜあなたはPerlでそれをしますか?それを「可変補間の役に立たない使用」と呼ぶことにしましょう。また、書式文字列とprintfの最後の引数の両方に\ nがあります。本当に出力に2つの改行が必要でしたか? – runrig

答えて

1

は、あなたが「あまりにも試してみましたsprintfの」によって何を意味するのか分かりません。あなたが示した構文は、pythonやrubyのようなperlのようには見えませんが?

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

私は 'python' =に投票します)あなたの賭けをしてください。 –

+0

ご協力ありがとうございます。はい、「機能しません」という特異性がないのは申し訳ありません。私はより具体的にすべきだった。それは働いていた、または私がしようとしていたような変数にsprintfステートメントを追加するかどうかを示したように、変数に変数を追加することによって.txtファイルに追加する変数の中にsprintfの書式を保存することができました。 – user1610717

+1

@ user1610717 '$ foo'は単なる推移変数です。あなたは' sprintf'を簡単に追加することもできます。 – TLP

8

printf(省略された場合、または現在のデフォルト)指定したハンドルに構成された文字列を出力し、IOエラーが発生したか否かを示すブール値を返します。役に立たない。 sprintfは構築された文字列を返します。

は、2つの文字列を(別のものを追加)連結するためには、.演算子を使用しています(またはjoin

$result . sprintf(...) 

しかし、あなたはこれが動作しないと述べました。おそらく、それはまた、あなたは

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

または短い

$result .= sprintf(...); 
関連する問題