Thread Warnung bei sprintf vermeiden wenn zu wenig Argumente (11 answers)
Opened by GwenDragon at 2018-03-30 10:57

GwenDragon
 2018-03-30 10:57
#188188 #188188
User since
2005-01-17
14748 Artikel
Admin1
[Homepage]
user image
Solche sprintf kommen massenhaft in fremd/von mir erstellten alten Modulen/Programmen vor:

Code beispielhaft:
Code: (dl )
1
2
3
4
5
6
7
8
9
#!/usr/bin/perl

use strict;
use warnings;
use 5.020;

our $VERSION = sprintf 'v.%02d.%03d', q $ Revision 1.12.123 $ =~ /(\d+)\.(\d+)\.(\d+)/;

say "Version ist: $VERSION";


In 5.20 wurden fehlende Argumente einfach ignoriert.

Seit Perl 5.22 wirft das folgende Warnung:
Redundant argument in sprintf at a.pl line 7.
Version ist: v.01.012


Ist das der Perl-Bug https://rt.perl.org/Public/Bug/Display.html?id=122...
Oder ist das keiner?

Wie lässt sich das Warnen bei den Argumenten umgehen?

Sicher kann das vermieden werden, in dem eine non-catching group erzeugt wird.
Sowas wäre eine Möglichkeit:
Code: (dl )
our $VERSION = sprintf 'v.%02d.%03d', q $ Revision 1.02.333 $ =~ /(\d+)\.(\d+)\.(?:\d+)/;

Anders als Code suchen und ändern geht nicht?
Last edited: 2018-03-30 11:11:01 +0200 (CEST)

View full thread Warnung bei sprintf vermeiden wenn zu wenig Argumente