Οι printf και sprintf αποτελούν «αδελφές» συναρτήσεις. Δέχονται τις ίδιες ακριβώς παραμέτρους και η διαφορά τους βρίσκεται στο γεγονός ότι η printf τυπώνει αμέσως, ενώ η sprintf χρησιμοποιείται για να τροποποιήσει μια τιμή (που φυσικά μετά μπορεί να τυπωθεί αν το επιθυμούμε).
Ας δούμε ένα παράδειγμα:
my $number = 8/3;
Το 8 δια του 3 μας δίνει: 2,66666666666666666666 κ.λπ. Εμείς όμως θέλουμε να στρογγυλέψουμε αυτό το νούμερο.
my $simpler = sprintf ("%.0f", $number);
Το % είναι υποχρεωτικό και το .0f σημαίνει ότι δεν θέλουμε καθόλου δεκαδικά ψηφία (floating point).
print "$simpler\n";
Η εκτύπωση εδώ θα είναι: 3 (2,7 που στρογγυλοποιείται σε 3).
Με ένα δεκαδικό ψηφίο έχουμε:
my $simpler = sprintf ("%.1f", $number);
Εδώ η $simpler γίνεται 2,7.
Αν θέλουμε να υπάρχουν 3 δεκαδικά ψηφία θα δηλώσουμε:
printf ("%.3f", $number);
Εδώ η εκτύπωση γίνεται απευθείας (χρησιμοποιήσαμε την printf αντί για τη sprintf) και το αποτέλεσμα θα είναι 2,667 (στρογγυλοποίηση του τελευταίου ψηφίου). Προσέξτε ότι εδώ ξεχάσαμε να βάλουμε το \n οπότε μετά την εκτύπωση δεν θα αλλάξει γραμμή.
Ας δούμε μερικά ακόμη παραδείγματα:
my $value = 4567899.789456123;
printf ("To akeraio meros ths timhs einai: %d\n" , $value);
Μας δίνει:
To akeraio meros ths timhs einai: 4567899
Το d σημαίνει ότι ενδιαφερόμαστε μόνο για το ακέραιο μέρος της τιμής και αγνοούμε τα δεκαδικά.
printf ("%.5f edo exoyme 5 dekadika\n", $value);
Μας δίνει:
4567899.78946 edo exoyme 5 dekadika