使い方を教えてくださいsprintfをゼロに入る可変長Perl?
質問
使いたいのPerlの sprintf にzerofillを可変となります。
sprintf("%08d", $var);
していきたいと思っている動的にどの桁zerofill.
どんな置き換え、"8" sprintf("%08d", $var)
可変という $zerofill
?
解決
最初の引数 sprintf はただの文字列:
my $zerofill = 9;
my $number = 1000;
my $filled = sprintf "%0${zerofill}d", $number;
通知のブレースの設定からの変数名の文字列になります。
お客様から選ばれている特定の問題として若干の巧みな運動 学習Perl にいる文字列は文字列です。:)
しかし、 mobruleポイント自身の回答,sprintfにはさまざまな機能がありますこのような柔軟性です。ドキュメンテーションにどのような単純な機能はかなり長など多数ございます索できます。
他のヒント
sprintf
と(これは、少なくとも5.8ために働いている)printf
表記をサポート*
printf "%0*d", 9, 12345;
000012345
<時間>
printf '$%*.*f', 8, 2, 456.78;
$ 456.78
私は少し違う何かをするために必要な:ゼロパッド浮動小数点値を正確な長さを取得
私の場合は、小数点を含め、正確に12バイトを必要としています。それはあなたが上記の持っているものよりも少しトリッキーです。
:誰もがこれを必要とする場合にはここにありますセイ$ inputValは、の1001.1 のような値をどこかから渡された文字列です。これが確実に機能することが12文字未満でなければならないことに注意してください。
# This will give us extra zeros, but the string may be too long
my $floatVal = sprintf('%*.*f', 12, 12, $inputValue);
# This will remove any extra zeros
$result = substr($floatVal, 0, 12);
所属していません StackOverflow