2016-04-27 12 views
12

Qual è l'utilizzo specifico di print, printf e sprintf in Perl?Differenza tra printf, print e sprintf in Perl?

Tutte e tre le parole chiave sono utilizzate per scopi di stampa, ma qualcuno può distinguerla brevemente?

+4

'printf = print sprintf';) –

+0

@ el.pescado. Non proprio. 'perl -e '@t = ("% s \ n "," foo "); print sprintf @t; printf @ t' mob

+0

In che modo questa domanda ha ottenuto un punteggio di 11, mentre è chiarissimo che c'era assolutamente nessuna ricerca o addirittura investimento di sforzo di lettura? –

risposta

14

breve:

consultare i manuali:

lungo:

print è la funzione di uscita predefinita. Lo fa senza formattazione, ma può aggiungere un'interruzione di linea se Perl viene chiamato con -l:

print $foo; 
print "Hello $world"; 
print $filehandle $something; 

sprintf è un formattatore e non fa alcuna stampa a tutti:

$result = sprintf('The %s is %d', 'answer', 42); 

printf è lo stesso sprintf, ma in realtà stampa il risultato:

printf 'This is question %d on %s', 36882022, 'StackOverflow'; 

Vedere la sprintf documentation per maggiori dettagli su segnaposti/formato valido stringhe.

A partire dal 5.10, Perl supporta anche say che è fondamentalmente un print più un ulteriore \n.

+1

E forse dovresti aggiungere anche 'say'. – simbabque

2

print solo uscite.

printf prende una stringa di formattazione come "% 3f" e la usa per formattare l'output.

sprintf è lo stesso di printf tranne che in realtà non emette nulla. Restituisce una stringa formattata.

3

Gli altri coprivano i punti principali, ma un altro piccolo fatto importante è che è possibile passare una lista a print, proprio come die. Può essere conveniente a volte ed è apparentemente più efficiente della concatenazione se si inizia da una lista.

ad es.

sub log_with_timestamp { 
    my $timestamp = get_timestamp(); 
    print $timestamp, ' ', @_, "\n"; 
} 
Problemi correlati