File: sprintf.html

package info (click to toggle)
perl-doc-html 5.10.1-1
  • links: PTS
  • area: main
  • in suites: squeeze
  • size: 33,152 kB
  • ctags: 24,035
  • sloc: makefile: 10
file content (588 lines) | stat: -rw-r--r-- 46,570 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
  <title>sprintf - perldoc.perl.org</title>
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  <meta http-equiv="Content-Language" content="en-gb">
  <link href="../static/css-20090810.css" rel="stylesheet" rev="stylesheet" type="text/css" media="screen">
</head>

<body onLoad="perldoc.startup();" onPageShow="if (event.persisted) perldoc.startup();">
    <div id="page">
      
      <div id="header">
	<div id="homepage_link">
	  <a href="../index.html"></a>
	</div>
        <div id="search_form">
          <form action="../search.html" method="GET" id="search">
            <input type="text" name="q" id="search_box" alt="Search">
          </form>
        </div>
      </div>
      
      <div id="body">
        <div id="left_column">
          <div class="side_group">
            <div class="side_panel doc_panel">
              <p>Manual</p>
              <ul>
                <li><a href="../index-overview.html">Overview</a>
                <li><a href="../index-tutorials.html">Tutorials</a>
                <li><a href="../index-faq.html">FAQs</a>
                <li><a href="../index-history.html">History / Changes</a>
                <li><a href="../index-licence.html">License</a>
              </ul>
            </div>
            <div class="side_panel doc_panel">
              <p>Reference</p>
              <ul>
                <li><a href="../index-language.html">Language</a>
                <li><a href="../index-functions.html">Functions</a>
                <li><a href="../perlop.html">Operators</a>
                <li><a href="../perlvar.html">Special Variables</a>
                <li><a href="../index-pragmas.html">Pragmas</a>
                <li><a href="../index-utilities.html">Utilities</a>
                <li><a href="../index-internals.html">Internals</a></li>
                <li><a href="../index-platforms.html">Platform Specific</a>
              </ul>
            </div>
            <div class="side_panel doc_panel">
              <p>Modules</p>
              <ul>
		<li>
		
                
                  
		    
		  
		
                  
		    
		  
		
                  
		    
		  
		
                  
		    
		  
		
                  
		    
		  
		
                  
		    
		  
		
                  
		    
		  
		
                  
		    
		  
		
                  
		    
		  
		
                  
		
                  
		
                  
		    
		  
		
                  
		    
		  
		
                  
		    
		  
		
                  
		    
		  
		
                  
		    
		  
		
                  
		
                  
		
                  
		    
		  
		
                  
		    
		  
		
                  
		    
		  
		
                  
		
                  
		
                  
		    
		  
		
                  
		
                  
		
		
                    <a href="../index-modules-A.html">A</a>
                    
                      
                        &bull;
                      
                    
                
                    <a href="../index-modules-B.html">B</a>
                    
                      
                        &bull;
                      
                    
                
                    <a href="../index-modules-C.html">C</a>
                    
                      
                        &bull;
                      
                    
                
                    <a href="../index-modules-D.html">D</a>
                    
                      
                        &bull;
                      
                    
                
                    <a href="../index-modules-E.html">E</a>
                    
                      
                        <li>
                      
                    
                
                    <a href="../index-modules-F.html">F</a>
                    
                      
                        &bull;
                      
                    
                
                    <a href="../index-modules-G.html">G</a>
                    
                      
                        &bull;
                      
                    
                
                    <a href="../index-modules-H.html">H</a>
                    
                      
                        &bull;
                      
                    
                
                    <a href="../index-modules-I.html">I</a>
                    
                      
                        &bull;
                      
                    
                
                    <a href="../index-modules-L.html">L</a>
                    
                      
                        <li>
                      
                    
                
                    <a href="../index-modules-M.html">M</a>
                    
                      
                        &bull;
                      
                    
                
                    <a href="../index-modules-N.html">N</a>
                    
                      
                        &bull;
                      
                    
                
                    <a href="../index-modules-O.html">O</a>
                    
                      
                        &bull;
                      
                    
                
                    <a href="../index-modules-P.html">P</a>
                    
                      
                        &bull;
                      
                    
                
                    <a href="../index-modules-S.html">S</a>
                    
                      
                        <li>
                      
                    
                
                    <a href="../index-modules-T.html">T</a>
                    
                      
                        &bull;
                      
                    
                
                    <a href="../index-modules-U.html">U</a>
                    
                      
                        &bull;
                      
                    
                
                    <a href="../index-modules-X.html">X</a>
                    
                
              </ul>
            </div>
          </div>
          <div class="side_group">
            <div class="side_panel links_panel">
              <p>News / Blogs</p>
              <ul>
        <li><a href="http://perlbuzz.com">Perl Buzz</a></li>
        <li><a href="http://ironman.enlightenedperl.org">Perl Iron Man</a></li>
        <li><a href="http://perlsphere.net">Perlsphere</a></li>
        <li><a href="http://planet.perl.org">Planet Perl</a></li>
	<li><a href="http://news.perlfoundation.org/">TPF news</a></li>
        <li><a href="http://use.perl.org">Use Perl</a></li>
              </ul>
            </div>            
            <div class="side_panel links_panel">
              <p>See also</p>
              <ul>
        <li><a href="http://search.cpan.org">CPAN</a></li>
        <li><a href="http://www.perl.org">Perl.org</a></li>
        <li><a href="http://www.perl.com">Perl.com</a></li>
        <li><a href="http://www.perlfoundation.org/perl5/index.cgi">Perl 5 Wiki</a></li>
        <li><a href="http://jobs.perl.org">Perl Jobs</a></li>
        <li><a href="http://www.pm.org">Perl Mongers</a></li>
        <li><a href="http://www.perlmonks.org">Perl Monks</a></li>
              </ul>
            </div>
            <div class="side_panel links_panel">
              <p>Contact</p>
              <ul>
                <li><a href="http://perl.jonallen.info">Site designed and maintained by Jon&nbsp;Allen&nbsp;(JJ)</a>
                <li><a href="http://perl.jonallen.info">http://perl.jonallen.info</a>
              </ul>
              <ul>
                <li><a href="http://perl.jonallen.info/projects/perldoc">View the project page and FAQs</a>
              </ul>
            </div>
          </div>
        </div>
        <div id="centre_column">
          <div id="content_header">
            <div id="title_bar">
              <div id="page_name">
                <h1>sprintf</h1>
              </div>
              <div id="perl_version">
                Perl 5 version 10.1 documentation
              </div>
              <div id="page_links">
                <a href="#" onClick="toolbar.goToTop();return false;">Go to top</a>
		
		
              </div>
            </div>
            <div id="breadcrumbs">
                
    <a href="../index.html">Home</a> &gt;
    
      
        <a href="../index-language.html">Language reference</a> &gt;
      
        <a href="../index-functions.html">Functions</a> &gt;
      
    
    sprintf
  

            </div>
          </div>
          <div id="content_body">
	    <!--[if lt IE 7]>
 <div class="noscript">
   <p>
     <strong>It looks like you're using Internet Explorer 6. This is a very old
     browser which does not offer full support for modern websites.</strong>
   </p>
   <p>
     Unfortunately this means that this website will not work on
     your computer.
   </p>
   <p>
     Don't miss out though! To view the site (and get a better experience from
     many other websites), simply upgrade to
     <a href="http://www.microsoft.com/windows/Internet-explorer/default.aspx">Internet
Explorer 8</a>
     or download an alternative browser such as
     <a href="http://www.mozilla.com/en-US/firefox/firefox.html">Firefox</a>,
     <a href="http://www.apple.com/safari/download/">Safari</a>, or
     <a href="http://www.google.co.uk/chrome">Google Chrome</a>.
   </p>
   <p>
     All of these browsers are free. If you're using a PC at work, you may
     need to contact your IT administrator.
   </p>
 </div>
<![endif]-->
	    <noscript>
	      <div class="noscript">
	      <p>
                <strong>Please note: Many features of this site require JavaScript. You appear to have JavaScript disabled,
	        or are running a non-JavaScript capable web browser.</strong>
	      </p>
	      <p>
		To get the best experience, please enable JavaScript or download a modern web browser such as <a href="http://www.microsoft.com/windows/Internet-explorer/default.aspx">Internet Explorer 8</a>, <a href="http://www.mozilla.com/en-US/firefox/firefox.html">Firefox</a>, <a href="http://www.apple.com/safari/download/">Safari</a>, or <a href="http://www.google.co.uk/chrome">Google Chrome</a>.
              </p>
	      </div>
	    </noscript>
	    <div id="from_search"></div>
            <h1>sprintf</h1>

<div class="mod_az_list">
  <a href="../index-functions.html">Perl functions A-Z</a> |
  <a href="../index-functions-by-cat.html">Perl functions by category</a> |
  <a href="../perlfunc.html">The 'perlfunc' manpage</a>
</div>


  <!--    -->
<ul>
<li><a name="sprintf-FORMAT%2c-LIST"></a><b>sprintf FORMAT, LIST</b>
<p></p>
<p>Returns a string formatted by the usual <code class="inline"><a class="l_k" href="../functions/printf.html">printf</a></code> conventions of the C
library function <code class="inline"><a class="l_k" href="../functions/sprintf.html">sprintf</a></code>.  See below for more details
and see <code class="inline"><a class="l_k" href="../functions/sprintf.html">sprintf(3)</a></code> or <code class="inline"><a class="l_k" href="../functions/printf.html">printf(3)</a></code> on your system for an explanation of
the general principles.</p>
<p>For example:</p>
<pre class="verbatim"><ol><li>        <span class="c"># Format number with up to 8 leading zeroes</span></li><li>        <span class="i">$result</span> = <a class="l_k" href="../functions/sprintf.html">sprintf</a><span class="s">(</span><span class="q">&quot;%08d&quot;</span><span class="cm">,</span> <span class="i">$number</span><span class="s">)</span><span class="sc">;</span></li><li></li><li>        <span class="c"># Round number to 3 digits after decimal point</span></li><li>        <span class="i">$rounded</span> = <a class="l_k" href="../functions/sprintf.html">sprintf</a><span class="s">(</span><span class="q">&quot;%.3f&quot;</span><span class="cm">,</span> <span class="i">$number</span><span class="s">)</span><span class="sc">;</span></li></ol></pre><p>Perl does its own <code class="inline"><a class="l_k" href="../functions/sprintf.html">sprintf</a></code> formatting--it emulates the C
function <code class="inline"><a class="l_k" href="../functions/sprintf.html">sprintf</a></code>, but it doesn&#39;t use it (except for floating-point
numbers, and even then only the standard modifiers are allowed).  As a
result, any non-standard extensions in your local <code class="inline"><a class="l_k" href="../functions/sprintf.html">sprintf</a></code> are not
available from Perl.</p>
<p>Unlike <code class="inline"><a class="l_k" href="../functions/printf.html">printf</a></code>, <code class="inline"><a class="l_k" href="../functions/sprintf.html">sprintf</a></code> does not do what you probably mean when you
pass it an array as your first argument. The array is given scalar context,
and instead of using the 0th element of the array as the format, Perl will
use the count of elements in the array as the format, which is almost never
useful.</p>
<p>Perl&#39;s <code class="inline"><a class="l_k" href="../functions/sprintf.html">sprintf</a></code> permits the following universally-known conversions:</p>
<pre class="verbatim"><ol><li>   %%	a percent sign</li><li>   %c	a character with the given number</li><li>   %s	a string</li><li>   %d	a signed integer, in decimal</li><li>   %u	an unsigned integer, in decimal</li><li>   %o	an unsigned integer, in octal</li><li>   %x	an unsigned integer, in hexadecimal</li><li>   %e	a floating-point number, in scientific notation</li><li>   %f	a floating-point number, in fixed decimal notation</li><li>   %g	a floating-point number, in %e or %f notation</li></ol></pre><p>In addition, Perl permits the following widely-supported conversions:</p>
<pre class="verbatim"><ol><li>   %X	like %x, but using upper-case letters</li><li>   %E	like %e, but using an upper-case "E"</li><li>   %G	like %g, but with an upper-case "E" (if applicable)</li><li>   %b	an unsigned integer, in binary</li><li>   %B	like %b, but using an upper-case "B" with the # flag</li><li>   %p	a pointer (outputs the Perl value's address in hexadecimal)</li><li>   %n	special: *stores* the number of characters output so far</li><li>        into the next variable in the parameter list</li></ol></pre><p>Finally, for backward (and we do mean &quot;backward&quot;) compatibility, Perl
permits these unnecessary but widely-supported conversions:</p>
<pre class="verbatim"><ol><li>   %i	a synonym for %d</li><li>   %D	a synonym for %ld</li><li>   %U	a synonym for %lu</li><li>   %O	a synonym for %lo</li><li>   %F	a synonym for %f</li></ol></pre><p>Note that the number of exponent digits in the scientific notation produced
by <code class="inline"><span class="i">%e</span></code>
, <code class="inline"><span class="i">%E</span></code>
, <code class="inline"><span class="i">%g</span></code>
 and <code class="inline"><span class="i">%G</span></code>
 for numbers with the modulus of the
exponent less than 100 is system-dependent: it may be three or less
(zero-padded as necessary).  In other words, 1.23 times ten to the
99th may be either &quot;1.23e99&quot; or &quot;1.23e099&quot;.</p>
<p>Between the <code class="inline"><span class="i">%</span></code>
 and the format letter, you may specify a number of
additional attributes controlling the interpretation of the format.
In order, these are:</p>
<ul>
<li><a name="format-parameter-index"></a><b>format parameter index</b>
<p>An explicit format parameter index, such as <code class="inline">2$</code>. By default sprintf
will format the next unused argument in the list, but this allows you
to take the arguments out of order, e.g.:</p>
<pre class="verbatim"><ol><li>  <a class="l_k" href="../functions/printf.html">printf</a> <span class="q">&#39;%2$d %1$d&#39;</span><span class="cm">,</span> <span class="n">12</span><span class="cm">,</span> <span class="n">34</span><span class="sc">;</span>      <span class="c"># prints &quot;34 12&quot;</span></li><li>  <a class="l_k" href="../functions/printf.html">printf</a> <span class="q">&#39;%3$d %d %1$d&#39;</span><span class="cm">,</span> <span class="n">1</span><span class="cm">,</span> <span class="n">2</span><span class="cm">,</span> <span class="n">3</span><span class="sc">;</span>  <span class="c"># prints &quot;3 1 1&quot;</span></li></ol></pre></li>
<li><a name="flags"></a><b>flags</b>
<p>one or more of:</p>
<pre class="verbatim"><ol><li>   space   prefix non-negative number with a space</li><li>   +       prefix non-negative number with a plus sign</li><li>   -       left-justify within the field</li><li>   0       use zeros, not spaces, to right-justify</li><li>   #       ensure the leading "0" for any octal,</li><li>           prefix non-zero hexadecimal with "0x" or "0X",</li><li>           prefix non-zero binary with "0b" or "0B"</li></ol></pre><p>For example:</p>
<pre class="verbatim"><ol><li>  <a class="l_k" href="../functions/printf.html">printf</a> <span class="q">'&lt;% d&gt;'</span><span class="cm">,</span>  <span class="n">12</span><span class="sc">;</span>   <span class="c"># prints &quot;&lt; 12&gt;&quot;</span></li><li>  <a class="l_k" href="../functions/printf.html">printf</a> <span class="q">'&lt;%+d&gt;'</span><span class="cm">,</span>  <span class="n">12</span><span class="sc">;</span>   <span class="c"># prints &quot;&lt;+12&gt;&quot;</span></li><li>  <a class="l_k" href="../functions/printf.html">printf</a> <span class="q">'&lt;%6s&gt;'</span><span class="cm">,</span>  <span class="n">12</span><span class="sc">;</span>   <span class="c"># prints &quot;&lt;    12&gt;&quot;</span></li><li>  <a class="l_k" href="../functions/printf.html">printf</a> <span class="q">'&lt;%-6s&gt;'</span><span class="cm">,</span> <span class="n">12</span><span class="sc">;</span>   <span class="c"># prints &quot;&lt;12    &gt;&quot;</span></li><li>  <a class="l_k" href="../functions/printf.html">printf</a> <span class="q">'&lt;%06s&gt;'</span><span class="cm">,</span> <span class="n">12</span><span class="sc">;</span>   <span class="c"># prints &quot;&lt;000012&gt;&quot;</span></li><li>  <a class="l_k" href="../functions/printf.html">printf</a> <span class="q">'&lt;%#o&gt;'</span><span class="cm">,</span>  <span class="n">12</span><span class="sc">;</span>   <span class="c"># prints &quot;&lt;014&gt;&quot;</span></li><li>  <a class="l_k" href="../functions/printf.html">printf</a> <span class="q">'&lt;%#x&gt;'</span><span class="cm">,</span>  <span class="n">12</span><span class="sc">;</span>   <span class="c"># prints &quot;&lt;0xc&gt;&quot;</span></li><li>  <a class="l_k" href="../functions/printf.html">printf</a> <span class="q">'&lt;%#X&gt;'</span><span class="cm">,</span>  <span class="n">12</span><span class="sc">;</span>   <span class="c"># prints &quot;&lt;0XC&gt;&quot;</span></li><li>  <a class="l_k" href="../functions/printf.html">printf</a> <span class="q">'&lt;%#b&gt;'</span><span class="cm">,</span>  <span class="n">12</span><span class="sc">;</span>   <span class="c"># prints &quot;&lt;0b1100&gt;&quot;</span></li><li>  <a class="l_k" href="../functions/printf.html">printf</a> <span class="q">'&lt;%#B&gt;'</span><span class="cm">,</span>  <span class="n">12</span><span class="sc">;</span>   <span class="c"># prints &quot;&lt;0B1100&gt;&quot;</span></li></ol></pre><p>When a space and a plus sign are given as the flags at once,
a plus sign is used to prefix a positive number.</p>
<pre class="verbatim"><ol><li>  <a class="l_k" href="../functions/printf.html">printf</a> <span class="q">'&lt;%+ d&gt;'</span><span class="cm">,</span> <span class="n">12</span><span class="sc">;</span>   <span class="c"># prints &quot;&lt;+12&gt;&quot;</span></li><li>  <a class="l_k" href="../functions/printf.html">printf</a> <span class="q">'&lt;% +d&gt;'</span><span class="cm">,</span> <span class="n">12</span><span class="sc">;</span>   <span class="c"># prints &quot;&lt;+12&gt;&quot;</span></li></ol></pre><p>When the # flag and a precision are given in the %o conversion,
the precision is incremented if it&#39;s necessary for the leading &quot;0&quot;.</p>
<pre class="verbatim"><ol><li>  <a class="l_k" href="../functions/printf.html">printf</a> <span class="q">'&lt;%#.5o&gt;'</span><span class="cm">,</span> <span class="n">012</span><span class="sc">;</span>      <span class="c"># prints &quot;&lt;00012&gt;&quot;</span></li><li>  <a class="l_k" href="../functions/printf.html">printf</a> <span class="q">'&lt;%#.5o&gt;'</span><span class="cm">,</span> <span class="n">012345</span><span class="sc">;</span>   <span class="c"># prints &quot;&lt;012345&gt;&quot;</span></li><li>  <a class="l_k" href="../functions/printf.html">printf</a> <span class="q">'&lt;%#.0o&gt;'</span><span class="cm">,</span> <span class="n">0</span><span class="sc">;</span>        <span class="c"># prints &quot;&lt;0&gt;&quot;</span></li></ol></pre></li>
<li><a name="vector-flag"></a><b>vector flag</b>
<p>This flag tells perl to interpret the supplied string as a vector of
integers, one for each character in the string. Perl applies the format to
each integer in turn, then joins the resulting strings with a separator (a
dot <code class="inline">.</code> by default). This can be useful for displaying ordinal values of
characters in arbitrary strings:</p>
<pre class="verbatim"><ol><li>  <a class="l_k" href="../functions/printf.html">printf</a> <span class="q">&quot;%vd&quot;</span><span class="cm">,</span> <span class="q">&quot;AB\x{100}&quot;</span><span class="sc">;</span>           <span class="c"># prints &quot;65.66.256&quot;</span></li><li>  <a class="l_k" href="../functions/printf.html">printf</a> <span class="q">&quot;version is v%vd\n&quot;</span><span class="cm">,</span> <span class="i">$^V</span><span class="sc">;</span>     <span class="c"># Perl&#39;s version</span></li></ol></pre><p>Put an asterisk <code class="inline"><span class="i">*</span></code>
 before the <code class="inline"><span class="w">v</span></code>
 to override the string to
use to separate the numbers:</p>
<pre class="verbatim"><ol><li>  <a class="l_k" href="../functions/printf.html">printf</a> <span class="q">&quot;address is %*vX\n&quot;</span><span class="cm">,</span> <span class="q">&quot;:&quot;</span><span class="cm">,</span> <span class="i">$addr</span><span class="sc">;</span>   <span class="c"># IPv6 address</span></li><li>  <a class="l_k" href="../functions/printf.html">printf</a> <span class="q">&quot;bits are %0*v8b\n&quot;</span><span class="cm">,</span> <span class="q">&quot; &quot;</span><span class="cm">,</span> <span class="i">$bits</span><span class="sc">;</span>   <span class="c"># random bitstring</span></li></ol></pre><p>You can also explicitly specify the argument number to use for
the join string using e.g. <code class="inline">*2$v</code>:</p>
<pre class="verbatim"><ol><li>  <a class="l_k" href="../functions/printf.html">printf</a> <span class="q">&#39;%*4$vX %*4$vX %*4$vX&#39;</span><span class="cm">,</span> <span class="i">@addr</span>[<span class="n">1</span>..<span class="n">3</span>]<span class="cm">,</span> <span class="q">&quot;:&quot;</span><span class="sc">;</span>   <span class="c"># 3 IPv6 addresses</span></li></ol></pre></li>
<li><a name="(minimum)-width"></a><b>(minimum) width</b>
<p>Arguments are usually formatted to be only as wide as required to
display the given value. You can override the width by putting
a number here, or get the width from the next argument (with <code class="inline"><span class="i">*</span></code>
)
or from a specified argument (with e.g. <code class="inline">*2$</code>):</p>
<pre class="verbatim"><ol><li>  <a class="l_k" href="../functions/printf.html">printf</a> <span class="q">&#39;&lt;%s&gt;&#39;</span><span class="cm">,</span> <span class="q">&quot;a&quot;</span><span class="sc">;</span>       <span class="c"># prints &quot;&lt;a&gt;&quot;</span></li><li>  <a class="l_k" href="../functions/printf.html">printf</a> <span class="q">&#39;&lt;%6s&gt;&#39;</span><span class="cm">,</span> <span class="q">&quot;a&quot;</span><span class="sc">;</span>      <span class="c"># prints &quot;&lt;     a&gt;&quot;</span></li><li>  <a class="l_k" href="../functions/printf.html">printf</a> <span class="q">&#39;&lt;%*s&gt;&#39;</span><span class="cm">,</span> <span class="n">6</span><span class="cm">,</span> <span class="q">&quot;a&quot;</span><span class="sc">;</span>   <span class="c"># prints &quot;&lt;     a&gt;&quot;</span></li><li>  <a class="l_k" href="../functions/printf.html">printf</a> <span class="q">&#39;&lt;%*2$s&gt;&#39;</span><span class="cm">,</span> <span class="q">&quot;a&quot;</span><span class="cm">,</span> <span class="n">6</span><span class="sc">;</span> <span class="c"># prints &quot;&lt;     a&gt;&quot;</span></li><li>  <a class="l_k" href="../functions/printf.html">printf</a> <span class="q">&#39;&lt;%2s&gt;&#39;</span><span class="cm">,</span> <span class="q">&quot;long&quot;</span><span class="sc">;</span>   <span class="c"># prints &quot;&lt;long&gt;&quot; (does not truncate)</span></li></ol></pre><p>If a field width obtained through <code class="inline"><span class="i">*</span></code>
 is negative, it has the same
effect as the <code class="inline">-</code>
 flag: left-justification.</p>
</li>
<li><a name="precision%2c-or-maximum-width"></a><b>precision, or maximum width
</b>
<p>You can specify a precision (for numeric conversions) or a maximum
width (for string conversions) by specifying a <code class="inline">.</code> followed by a number.
For floating point formats, with the exception of &#39;g&#39; and &#39;G&#39;, this specifies
the number of decimal places to show (the default being 6), e.g.:</p>
<pre class="verbatim"><ol><li>  <span class="c"># these examples are subject to system-specific variation</span></li><li>  <a class="l_k" href="../functions/printf.html">printf</a> <span class="q">&#39;&lt;%f&gt;&#39;</span><span class="cm">,</span> <span class="n">1</span><span class="sc">;</span>    <span class="c"># prints &quot;&lt;1.000000&gt;&quot;</span></li><li>  <a class="l_k" href="../functions/printf.html">printf</a> <span class="q">&#39;&lt;%.1f&gt;&#39;</span><span class="cm">,</span> <span class="n">1</span><span class="sc">;</span>  <span class="c"># prints &quot;&lt;1.0&gt;&quot;</span></li><li>  <a class="l_k" href="../functions/printf.html">printf</a> <span class="q">&#39;&lt;%.0f&gt;&#39;</span><span class="cm">,</span> <span class="n">1</span><span class="sc">;</span>  <span class="c"># prints &quot;&lt;1&gt;&quot;</span></li><li>  <a class="l_k" href="../functions/printf.html">printf</a> <span class="q">&#39;&lt;%e&gt;&#39;</span><span class="cm">,</span> <span class="n">10</span><span class="sc">;</span>   <span class="c"># prints &quot;&lt;1.000000e+01&gt;&quot;</span></li><li>  <a class="l_k" href="../functions/printf.html">printf</a> <span class="q">&#39;&lt;%.1e&gt;&#39;</span><span class="cm">,</span> <span class="n">10</span><span class="sc">;</span> <span class="c"># prints &quot;&lt;1.0e+01&gt;&quot;</span></li></ol></pre><p>For &#39;g&#39; and &#39;G&#39;, this specifies the maximum number of digits to show,
including prior to the decimal point as well as after it, e.g.:</p>
<pre class="verbatim"><ol><li>  <span class="c"># these examples are subject to system-specific variation</span></li><li>  <a class="l_k" href="../functions/printf.html">printf</a> <span class="q">&#39;&lt;%g&gt;&#39;</span><span class="cm">,</span> <span class="n">1</span><span class="sc">;</span>        <span class="c"># prints &quot;&lt;1&gt;&quot;</span></li><li>  <a class="l_k" href="../functions/printf.html">printf</a> <span class="q">&#39;&lt;%.10g&gt;&#39;</span><span class="cm">,</span> <span class="n">1</span><span class="sc">;</span>     <span class="c"># prints &quot;&lt;1&gt;&quot;</span></li><li>  <a class="l_k" href="../functions/printf.html">printf</a> <span class="q">&#39;&lt;%g&gt;&#39;</span><span class="cm">,</span> <span class="n">100</span><span class="sc">;</span>      <span class="c"># prints &quot;&lt;100&gt;&quot;</span></li><li>  <a class="l_k" href="../functions/printf.html">printf</a> <span class="q">&#39;&lt;%.1g&gt;&#39;</span><span class="cm">,</span> <span class="n">100</span><span class="sc">;</span>    <span class="c"># prints &quot;&lt;1e+02&gt;&quot;</span></li><li>  <a class="l_k" href="../functions/printf.html">printf</a> <span class="q">&#39;&lt;%.2g&gt;&#39;</span><span class="cm">,</span> <span class="n">100.01</span><span class="sc">;</span> <span class="c"># prints &quot;&lt;1e+02&gt;&quot;</span></li><li>  <a class="l_k" href="../functions/printf.html">printf</a> <span class="q">&#39;&lt;%.5g&gt;&#39;</span><span class="cm">,</span> <span class="n">100.01</span><span class="sc">;</span> <span class="c"># prints &quot;&lt;100.01&gt;&quot;</span></li><li>  <a class="l_k" href="../functions/printf.html">printf</a> <span class="q">&#39;&lt;%.4g&gt;&#39;</span><span class="cm">,</span> <span class="n">100.01</span><span class="sc">;</span> <span class="c"># prints &quot;&lt;100&gt;&quot;</span></li></ol></pre><p>For integer conversions, specifying a precision implies that the
output of the number itself should be zero-padded to this width,
where the 0 flag is ignored:</p>
<pre class="verbatim"><ol><li>  <a class="l_k" href="../functions/printf.html">printf</a> <span class="q">&#39;&lt;%.6d&gt;&#39;</span><span class="cm">,</span> <span class="n">1</span><span class="sc">;</span>      <span class="c"># prints &quot;&lt;000001&gt;&quot;</span></li><li>  <a class="l_k" href="../functions/printf.html">printf</a> <span class="q">&#39;&lt;%+.6d&gt;&#39;</span><span class="cm">,</span> <span class="n">1</span><span class="sc">;</span>     <span class="c"># prints &quot;&lt;+000001&gt;&quot;</span></li><li>  <a class="l_k" href="../functions/printf.html">printf</a> <span class="q">&#39;&lt;%-10.6d&gt;&#39;</span><span class="cm">,</span> <span class="n">1</span><span class="sc">;</span>   <span class="c"># prints &quot;&lt;000001    &gt;&quot;</span></li><li>  <a class="l_k" href="../functions/printf.html">printf</a> <span class="q">&#39;&lt;%10.6d&gt;&#39;</span><span class="cm">,</span> <span class="n">1</span><span class="sc">;</span>    <span class="c"># prints &quot;&lt;    000001&gt;&quot;</span></li><li>  <a class="l_k" href="../functions/printf.html">printf</a> <span class="q">&#39;&lt;%010.6d&gt;&#39;</span><span class="cm">,</span> <span class="n">1</span><span class="sc">;</span>   <span class="c"># prints &quot;&lt;    000001&gt;&quot;</span></li><li>  <a class="l_k" href="../functions/printf.html">printf</a> <span class="q">&#39;&lt;%+10.6d&gt;&#39;</span><span class="cm">,</span> <span class="n">1</span><span class="sc">;</span>   <span class="c"># prints &quot;&lt;   +000001&gt;&quot;</span></li><li></li><li>  <a class="l_k" href="../functions/printf.html">printf</a> <span class="q">&#39;&lt;%.6x&gt;&#39;</span><span class="cm">,</span> <span class="n">1</span><span class="sc">;</span>      <span class="c"># prints &quot;&lt;000001&gt;&quot;</span></li><li>  <a class="l_k" href="../functions/printf.html">printf</a> <span class="q">&#39;&lt;%#.6x&gt;&#39;</span><span class="cm">,</span> <span class="n">1</span><span class="sc">;</span>     <span class="c"># prints &quot;&lt;0x000001&gt;&quot;</span></li><li>  <a class="l_k" href="../functions/printf.html">printf</a> <span class="q">&#39;&lt;%-10.6x&gt;&#39;</span><span class="cm">,</span> <span class="n">1</span><span class="sc">;</span>   <span class="c"># prints &quot;&lt;000001    &gt;&quot;</span></li><li>  <a class="l_k" href="../functions/printf.html">printf</a> <span class="q">&#39;&lt;%10.6x&gt;&#39;</span><span class="cm">,</span> <span class="n">1</span><span class="sc">;</span>    <span class="c"># prints &quot;&lt;    000001&gt;&quot;</span></li><li>  <a class="l_k" href="../functions/printf.html">printf</a> <span class="q">&#39;&lt;%010.6x&gt;&#39;</span><span class="cm">,</span> <span class="n">1</span><span class="sc">;</span>   <span class="c"># prints &quot;&lt;    000001&gt;&quot;</span></li><li>  <a class="l_k" href="../functions/printf.html">printf</a> <span class="q">&#39;&lt;%#10.6x&gt;&#39;</span><span class="cm">,</span> <span class="n">1</span><span class="sc">;</span>   <span class="c"># prints &quot;&lt;  0x000001&gt;&quot;</span></li></ol></pre><p>For string conversions, specifying a precision truncates the string
to fit in the specified width:</p>
<pre class="verbatim"><ol><li>  <a class="l_k" href="../functions/printf.html">printf</a> <span class="q">&#39;&lt;%.5s&gt;&#39;</span><span class="cm">,</span> <span class="q">&quot;truncated&quot;</span><span class="sc">;</span>   <span class="c"># prints &quot;&lt;trunc&gt;&quot;</span></li><li>  <a class="l_k" href="../functions/printf.html">printf</a> <span class="q">&#39;&lt;%10.5s&gt;&#39;</span><span class="cm">,</span> <span class="q">&quot;truncated&quot;</span><span class="sc">;</span> <span class="c"># prints &quot;&lt;     trunc&gt;&quot;</span></li></ol></pre><p>You can also get the precision from the next argument using <code class="inline">.*</code>:</p>
<pre class="verbatim"><ol><li>  <a class="l_k" href="../functions/printf.html">printf</a> <span class="q">&#39;&lt;%.6x&gt;&#39;</span><span class="cm">,</span> <span class="n">1</span><span class="sc">;</span>       <span class="c"># prints &quot;&lt;000001&gt;&quot;</span></li><li>  <a class="l_k" href="../functions/printf.html">printf</a> <span class="q">&#39;&lt;%.*x&gt;&#39;</span><span class="cm">,</span> <span class="n">6</span><span class="cm">,</span> <span class="n">1</span><span class="sc">;</span>    <span class="c"># prints &quot;&lt;000001&gt;&quot;</span></li></ol></pre><p>If a precision obtained through <code class="inline"><span class="i">*</span></code>
 is negative, it has the same
effect as no precision.</p>
<pre class="verbatim"><ol><li>  <a class="l_k" href="../functions/printf.html">printf</a> <span class="q">&#39;&lt;%.*s&gt;&#39;</span><span class="cm">,</span>  <span class="n">7</span><span class="cm">,</span> <span class="q">&quot;string&quot;</span><span class="sc">;</span>   <span class="c"># prints &quot;&lt;string&gt;&quot;</span></li><li>  <a class="l_k" href="../functions/printf.html">printf</a> <span class="q">&#39;&lt;%.*s&gt;&#39;</span><span class="cm">,</span>  <span class="n">3</span><span class="cm">,</span> <span class="q">&quot;string&quot;</span><span class="sc">;</span>   <span class="c"># prints &quot;&lt;str&gt;&quot;</span></li><li>  <a class="l_k" href="../functions/printf.html">printf</a> <span class="q">&#39;&lt;%.*s&gt;&#39;</span><span class="cm">,</span>  <span class="n">0</span><span class="cm">,</span> <span class="q">&quot;string&quot;</span><span class="sc">;</span>   <span class="c"># prints &quot;&lt;&gt;&quot;</span></li><li>  <a class="l_k" href="../functions/printf.html">printf</a> <span class="q">&#39;&lt;%.*s&gt;&#39;</span><span class="cm">,</span> <span class="n">-1</span><span class="cm">,</span> <span class="q">&quot;string&quot;</span><span class="sc">;</span>   <span class="c"># prints &quot;&lt;string&gt;&quot;</span></li><li></li><li>  <a class="l_k" href="../functions/printf.html">printf</a> <span class="q">&#39;&lt;%.*d&gt;&#39;</span><span class="cm">,</span>  <span class="n">1</span><span class="cm">,</span> <span class="n">0</span><span class="sc">;</span>   <span class="c"># prints &quot;&lt;0&gt;&quot;</span></li><li>  <a class="l_k" href="../functions/printf.html">printf</a> <span class="q">&#39;&lt;%.*d&gt;&#39;</span><span class="cm">,</span>  <span class="n">0</span><span class="cm">,</span> <span class="n">0</span><span class="sc">;</span>   <span class="c"># prints &quot;&lt;&gt;&quot;</span></li><li>  <a class="l_k" href="../functions/printf.html">printf</a> <span class="q">&#39;&lt;%.*d&gt;&#39;</span><span class="cm">,</span> <span class="n">-1</span><span class="cm">,</span> <span class="n">0</span><span class="sc">;</span>   <span class="c"># prints &quot;&lt;0&gt;&quot;</span></li></ol></pre><p>You cannot currently get the precision from a specified number,
but it is intended that this will be possible in the future using
e.g. <code class="inline">.*2$</code>:</p>
<pre class="verbatim"><ol><li>  <a class="l_k" href="../functions/printf.html">printf</a> <span class="q">&#39;&lt;%.*2$x&gt;&#39;</span><span class="cm">,</span> <span class="n">1</span><span class="cm">,</span> <span class="n">6</span><span class="sc">;</span>   <span class="c"># INVALID, but in future will print &quot;&lt;000001&gt;&quot;</span></li></ol></pre></li>
<li><a name="size"></a><b>size</b>
<p>For numeric conversions, you can specify the size to interpret the
number as using <code class="inline"><span class="w">l</span></code>
, <code class="inline"><span class="w">h</span></code>
, <code class="inline"><span class="w">V</span></code>
, <code class="inline"><a class="l_k" href="../functions/q.html">q</a></code>, <code class="inline"><span class="w">L</span></code>
, or <code class="inline"><span class="w">ll</span></code>
. For integer
conversions (<code class="inline"><span class="w">d</span> <span class="w">u</span> <span class="w">o</span> <span class="w">x</span> <span class="w">X</span> <span class="w">b</span> <span class="w">i</span> <span class="w">D</span> <span class="w">U</span> <span class="w">O</span></code>
), numbers are usually assumed to be
whatever the default integer size is on your platform (usually 32 or 64
bits), but you can override this to use instead one of the standard C types,
as supported by the compiler used to build Perl:</p>
<pre class="verbatim"><ol><li>   l           interpret integer as C type "long" or "unsigned long"</li><li>   h           interpret integer as C type "short" or "unsigned short"</li><li>   q, L or ll  interpret integer as C type "long long", "unsigned long long".</li><li>               or "quads" (typically 64-bit integers)</li></ol></pre><p>The last will produce errors if Perl does not understand &quot;quads&quot; in your
installation. (This requires that either the platform natively supports quads
or Perl was specifically compiled to support quads.) You can find out
whether your Perl supports quads via <a href="../Config.html">Config</a>:</p>
<pre class="verbatim"><ol><li>	<a class="l_k" href="../functions/use.html">use</a> <span class="w">Config</span><span class="sc">;</span></li><li>	<span class="s">(</span><span class="i">$Config</span>{<span class="w">use64bitint</span>} eq <span class="q">&#39;define&#39;</span> || <span class="i">$Config</span>{<span class="w">longsize</span>} &gt;= <span class="n">8</span><span class="s">)</span> &amp;&amp;</li><li>		<a class="l_k" href="../functions/print.html">print</a> <span class="q">&quot;quads\n&quot;</span><span class="sc">;</span></li></ol></pre><p>For floating point conversions (<code class="inline"><span class="w">e</span> <span class="w">f</span> <span class="w">g</span> <span class="w">E</span> <span class="w">F</span> <span class="w">G</span></code>
), numbers are usually assumed
to be the default floating point size on your platform (double or long double),
but you can force &#39;long double&#39; with <code class="inline"><a class="l_k" href="../functions/q.html">q</a></code>, <code class="inline"><span class="w">L</span></code>
, or <code class="inline"><span class="w">ll</span></code>
 if your
platform supports them. You can find out whether your Perl supports long
doubles via <a href="../Config.html">Config</a>:</p>
<pre class="verbatim"><ol><li>	<a class="l_k" href="../functions/use.html">use</a> <span class="w">Config</span><span class="sc">;</span></li><li>	<span class="i">$Config</span>{<span class="w">d_longdbl</span>} eq <span class="q">&#39;define&#39;</span> &amp;&amp; <a class="l_k" href="../functions/print.html">print</a> <span class="q">&quot;long doubles\n&quot;</span><span class="sc">;</span></li></ol></pre><p>You can find out whether Perl considers &#39;long double&#39; to be the default
floating point size to use on your platform via <a href="../Config.html">Config</a>:</p>
<pre class="verbatim"><ol><li>        <a class="l_k" href="../functions/use.html">use</a> <span class="w">Config</span><span class="sc">;</span></li><li>        <span class="s">(</span><span class="i">$Config</span>{<span class="w">uselongdouble</span>} eq <span class="q">&#39;define&#39;</span><span class="s">)</span> &amp;&amp;</li><li>                <a class="l_k" href="../functions/print.html">print</a> <span class="q">&quot;long doubles by default\n&quot;</span><span class="sc">;</span></li></ol></pre><p>It can also be the case that long doubles and doubles are the same thing:</p>
<pre class="verbatim"><ol><li>        <a class="l_k" href="../functions/use.html">use</a> <span class="w">Config</span><span class="sc">;</span></li><li>        <span class="s">(</span><span class="i">$Config</span>{<span class="w">doublesize</span>} == <span class="i">$Config</span>{<span class="w">longdblsize</span>}<span class="s">)</span> &amp;&amp;</li><li>                <a class="l_k" href="../functions/print.html">print</a> <span class="q">&quot;doubles are long doubles\n&quot;</span><span class="sc">;</span></li></ol></pre><p>The size specifier <code class="inline"><span class="w">V</span></code>
 has no effect for Perl code, but it is supported
for compatibility with XS code; it means &#39;use the standard size for
a Perl integer (or floating-point number)&#39;, which is already the
default for Perl code.</p>
</li>
<li><a name="order-of-arguments"></a><b>order of arguments</b>
<p>Normally, sprintf takes the next unused argument as the value to
format for each format specification. If the format specification
uses <code class="inline"><span class="i">*</span></code>
 to require additional arguments, these are consumed from
the argument list in the order in which they appear in the format
specification <i>before</i> the value to format. Where an argument is
specified using an explicit index, this does not affect the normal
order for the arguments (even when the explicitly specified index
would have been the next argument in any case).</p>
<p>So:</p>
<pre class="verbatim"><ol><li>  <a class="l_k" href="../functions/printf.html">printf</a> <span class="q">&#39;&lt;%*.*s&gt;&#39;</span><span class="cm">,</span> <span class="i">$a</span><span class="cm">,</span> <span class="i">$b</span><span class="cm">,</span> <span class="i">$c</span><span class="sc">;</span></li></ol></pre><p>would use <code class="inline"><span class="i">$a</span></code>
 for the width, <code class="inline"><span class="i">$b</span></code>
 for the precision and <code class="inline"><span class="i">$c</span></code>

as the value to format, while:</p>
<pre class="verbatim"><ol><li>  <a class="l_k" href="../functions/printf.html">printf</a> <span class="q">'&lt;%*1$.*s&gt;'</span><span class="cm">,</span> <span class="i">$a</span><span class="cm">,</span> <span class="i">$b</span><span class="sc">;</span></li></ol></pre><p>would use <code class="inline"><span class="i">$a</span></code>
 for the width and the precision, and <code class="inline"><span class="i">$b</span></code>
 as the
value to format.</p>
<p>Here are some more examples - beware that when using an explicit
index, the <code class="inline"><span class="i">$</span></code>
 may need to be escaped:</p>
<pre class="verbatim"><ol><li>  <a class="l_k" href="../functions/printf.html">printf</a> <span class="q">&quot;%2\$d %d\n&quot;</span><span class="cm">,</span>    <span class="n">12</span><span class="cm">,</span> <span class="n">34</span><span class="sc">;</span>		<span class="c"># will print &quot;34 12\n&quot;</span></li><li>  <a class="l_k" href="../functions/printf.html">printf</a> <span class="q">&quot;%2\$d %d %d\n&quot;</span><span class="cm">,</span> <span class="n">12</span><span class="cm">,</span> <span class="n">34</span><span class="sc">;</span>		<span class="c"># will print &quot;34 12 34\n&quot;</span></li><li>  <a class="l_k" href="../functions/printf.html">printf</a> <span class="q">&quot;%3\$d %d %d\n&quot;</span><span class="cm">,</span> <span class="n">12</span><span class="cm">,</span> <span class="n">34</span><span class="cm">,</span> <span class="n">56</span><span class="sc">;</span>		<span class="c"># will print &quot;56 12 34\n&quot;</span></li><li>  <a class="l_k" href="../functions/printf.html">printf</a> <span class="q">&quot;%2\$*3\$d %d\n&quot;</span><span class="cm">,</span> <span class="n">12</span><span class="cm">,</span> <span class="n">34</span><span class="cm">,</span> <span class="n">3</span><span class="sc">;</span>		<span class="c"># will print &quot; 34 12\n&quot;</span></li></ol></pre></li>
</ul>
<p>If <code class="inline"><a class="l_k" href="../functions/use.html">use</a> <span class="w">locale</span></code>
 is in effect, and POSIX::setlocale() has been called,
the character used for the decimal separator in formatted floating
point numbers is affected by the LC_NUMERIC locale.  See <a href="../perllocale.html">perllocale</a>
and <a href="../POSIX.html">POSIX</a>.</p>
</li>
</ul>



	    &nbsp;
          </div>
          <div id="content_footer">
          </div>
        </div>
        <div id="right_column">
          <div class="side_group">
	    
            <div class="side_panel tools_panel">
              <p>Recently read</p>
              <div id="recent_pages"></div>
            </div>
            <div class="side_panel tools_panel">
              <p>Tools</p>
              <ul>
		<li><a href="../preferences.html">Preferences</a>
              </ul>
            </div>
          </div>
        </div>
        <div class="clear"></div>
      </div>
      
      <div id="footer">
	<div id="footer_content">
	  
	</div>
      </div>
      
    </div>
      <script language="JavaScript" src="../static/combined-20090809.js" type="text/javascript"></script>
<script language="JavaScript" type="text/javascript">
  perldoc.setPath(1);
  perldoc.pageName    = 'sprintf';
  perldoc.pageAddress = 'functions/sprintf.html';
  perldoc.contentPage = 1;
</script>
    
  </body>
</html>