Perl入門ゼミ

  1. Perl
  2. 標準関数
  3. here

print関数 - 文字列を出力する

文字列を出力するにはprint関数を使用します。

print "Hello World!";

文字列を変数に代入してからprint関数に渡すこともできます。実際にプログラムを書く場合は、この方法をお勧めします。ひとつの文字列を作成してからprint関数に渡す方法です。

my $message = "Hello World!";
print $message;

print関数にはリストや配列を渡すこともできます。文字列は連結されて出力されます。実際にプログラムを書く場合は、この方法よりも、上記の方法がお勧めです。

# リスト
print "Hello", "World", "!";

# 配列
my @strings = ("Hello", "World", "!");
print @strings;

配列を一つの文字列に連結してから出力する方法

よく使うテクニックに、配列の文字列をカンマで連結して、最後に改行をつけて出力するというのがあります。

これはprint関数とjoin関数文字列連結演算子を使ってきれいに書くことができます。

my @animals = ('Dog', 'Cat', 'Mouse');
print join(',', @animals) . "\n";

print関数のデフォルトの出力先は標準出力

print関数のデフォルトの出力先は、画面、すなわち標準出力です。標準出力については詳しい解説は以下の記事を参考にしてください。

print関数のデフォルトの出力先は、標準出力であり次の二つの書き方の意味は同じです。

print "Hello";
print STDOUT "Hello";

STDOUTの後ろにカンマがないことに注意してください。これは「間接オブジェクト構文」と呼ばれ次の記法と同じ意味を持ちます。

STDOUT->print("Hello");

print関数で出力先を指定する場合は、間接オブジェクト構文を使うことがPerlの慣習となっています。

標準エラー出力を指定する

出力先として標準エラー出力を指定することができます。出力先にSTDERRを指定してください。

print STDERR "Hello";

標準エラー出力はエラー用の出力です。標準エラー出力の詳しい解説は、以下の記事を参考にしてください。

ファイルハンドルを指定する

print関数の出力先をファイルに変えることもできます。その場合はopen関数でファイルを開いて、ファイルハンドルを作成し、そのファイルハンドルをprint関数で指定します。

my $file = "output.txt";
open my $fh, '>', $file
  or die "Can't open \"$file\": $!";
print $fh "Hello";

「output.txt」というファイルに「Hello」が出力されます。

シェルでいうecho関数と同じ

bashを使っていれば出力のためにechoを使うと思いますが、これはPerlのprint関数の機能に該当します。

書式を設定したい場合はprintf関数かsprintf関数

C言語のprintf関数のような書式指定を行いたい場合はprintf関数を使うか、sprintf関数で書式設定した文字列を作成して、print関数に渡しましょう。

# printf関数
printf "Number %d", 3;

# sprintf関数
my $string = sprintf("Number %d", 3);
print $string;

リダイレクトでファイルへ出力するテクニック

よく使うテクニックとして、標準出力をリダイレクトしてファイルに出力するというものがあります。このテクニックを使うとopen関数を使うことなしに、ファイルに出力することができます。

まずは普通にprint関数を書く。

# hello.pl
print "Hello";

次にリダイレクトを使って、ファイルに出力。以下のようにコマンドを実行します。

perl hello.pl > output.txt

「output.txt」というファイルに「Hello」が出力されます。