Ihr Problem ist, dass Perl interpretiert "$%. 1f" als Variable $%
von ".1f" gefolgt. $%
ist eine spezielle Perl-Variable, die "Die aktuelle Seitennummer des aktuell ausgewählten Ausgabekanals" enthält (siehe perlvar) und die den Wert 0 hat. Daher wird die Zeichenfolge "0.1f" ausgedruckt.
Es gibt einige Möglichkeiten, dies zu umgehen.
Sie können das Dollarzeichen entfernen: sprintf("%.1f lbs",(77*2.20462))
. Aber das ändert die angezeigte Zeichenfolge.
Sie können dem Dollar entkommen, um Perl zu sagen, dass es nicht speziell ist: sprintf("\$%.1f lbs",(77*2.20462))
.
Aber ich denke, es gibt eine bessere Lösung. Perl behandelt Dollarzeichen als Sonderzeichen in Strings mit doppelten Anführungszeichen. Aber es gibt keinen Grund dafür, dass Ihre Zeichenfolge doppelt zitiert wird. Ändern Sie einfach Ihre Formatzeichenfolge, um einfache Anführungszeichen zu verwenden: sprintf('$%.1f lbs',(77*2.20462))
.
Das letzte ist die Lösung, die ich verwenden würde.
Entfernen Sie das '$' Zeichen, für: 'sprintf ("%. 1f lbs ", ...)'. Siehe ['sprintf'] (http://perldoc.perl.org/functions/sprintf.html). – zdim
Was möchten Sie drucken? Das '$' benötigt eine Argumentposition davor, aber Sie geben nicht an, welches Argument. – verbose