printf関数とsprintf関数

文字列を指定のフォーマットで出力するには printf 関数または sprintf 関数を使います。ここでは Perl で文字列を指定のフォーマットで出力するための printf 関数と sprintf 関数の使い方について解説します。

(Last modified: )

printf関数とsprintf関数

文字列を指定のフォーマットで出力するには printf 関数を使います。書式は次の通りです。

printf([ファイルハンドル] 書式指定文字列, リスト);

printf 関数は指定のファイルハンドルに対して整形した結果の文字列を出力します。ファイルハンドルを省略した場合は標準出力である STDOUT に対して出力しますので結果的に画面に出力されます。

または sprintf 関数も利用できます。書式は次の通りです。

戻り値 = sprintf(書式指定文字列, リスト);

sprintf 関数は printf とほぼ同じですが、整形した結果を文字列として返します。

どちらの関数もリストに指定した値を、書式指定文字列に指定した方法で整形します。結果を画面に出力するなら printf 関数を使い、いったん変数に保存したいのであれば sprintf 関数を使って下さい。

書式指定文字列にはリストに記述された値を変換する方法などを記述します。複数の値を指定し、それぞれの値に対応する変換方法を 1 つの書式指定文字列の中で記述することができます。

例えば次のように記述します。

printf("番号は %03d です", 24);

上記を実際に実行すると "番号は 024 です" と表示されます。変換元の値である 24 を書式指定文字列の中に記述された %03d によって変換し、変換した結果を画面に表示しています。

より詳細は次のページから確認していきます。

サンプルコード

それでは簡単なサンプルを作成します。

use strict;
use warnings;
use utf8;
binmode STDIN, ':encoding(cp932)';
binmode STDOUT, ':encoding(cp932)';
binmode STDERR, ':encoding(cp932)';

printf("番号は %05d です\n", 24);

my $str;
$str = sprintf("番号は %05d です\n", 186);
print $str;

テキストエディタでプログラムを記述したあと sample.pl という名前で保存します。(文字コードは UTF-8 です)。コマンドプロンプトを起動し、プログラムを保存したディレクトリへ移動したあとで次のように実行します。

perl sample.pl

次のように実行結果が表示されます。

printf関数とsprintf関数(1)

今回はフォーマットとして対象の数値が 5 桁以下だった場合は 0 詰めで表示するように設定しました。

-- --

Perl で文字列を指定のフォーマットで出力するための printf 関数と sprintf 関数の使い方について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。