This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta for recent printf changes
authorAaron Crane <arc@cpan.org>
Wed, 8 Jul 2015 11:55:18 +0000 (12:55 +0100)
committerAaron Crane <arc@cpan.org>
Wed, 15 Jul 2015 13:44:02 +0000 (14:44 +0100)
pod/perldelta.pod

index dd22bf1..06e638f 100644 (file)
@@ -59,6 +59,12 @@ feature has no effect; all Perl code can use postfix dereferencing,
 regardless of what feature declarations are in scope. The C<5.24> feature
 bundle now includes the C<postderef_qq> feature.
 
+=head2 printf and sprintf now allow reordered precision arguments
+
+That is, C<< sprintf '|%.*2$|', 2, 3 >> now returns C<|002|>. This extends
+the existing reordering mechanism (which allows reordering for arguments
+that are used as format fields, widths, and vector separators).
+
 =head1 Security
 
 XXX Any security-related notices go here.  In particular, any security
@@ -270,7 +276,11 @@ XXX Changes (i.e. rewording) of diagnostic messages go here
 
 =item *
 
-XXX Describe change here
+The C<printf> and C<sprintf> builtins are now more careful about the
+warnings they emit: argument reordering now disables the "redundant
+argument" warning in all cases; and invalid format strings are no longer
+treated as absorbing arguments (so "redundant argument" warnings can
+correctly be emitted by such code).
 
 =back
 
@@ -397,7 +407,10 @@ well.
 
 =item *
 
-XXX
+C<sv_catpvf> and related functions (including C<sv_vcatpvfn_flags> when
+called with a C<va_list> rather than an array of SV pointers) have never
+handled argument reordering. Attempts to reorder arguments now yield an
+exception, rather than being silently ignored.
 
 =back