6. 入出力
Perl6で最も一般的な 入出力 インタフェースは 端末 と ファイル の2つです。
6.1. 端末を使った基本的な入出力
6.1.1. say
say
は標準出力に書き出しを行い、その際、最後に改行を追加します。つまり、以下のコードでは:
say 'Hello Mam.';
say 'Hello Sir.';
出力は2行になります。
6.1.2. print
print
は say
に似ていますが、改行を追加しません。
say
を print
に置き換えて結果を比べてみてください。
6.1.3. get
get
は端末からの入力を受け取るために使います。
my $name;
say "Hi, what's your name?";
$name=get;
say "Dear $name welcome to Perl 6";
上のコードを実行すると、端末はあなたが名前を入力するまで待ちます。 それからあなたにあいさつしてくれるでしょう。
6.1.4. prompt
prompt
は print
と get
を組み合わせたものです。
上の例は、このように書くことができます:
my $name = prompt("Hi, what's your name? ");
say "Dear $name welcome to Perl 6";
6.2. シェルコマンドの実行
シェルコマンドの実行には2種類のサブルーチンが使えます:
-
run
はシェルを介さずに外部コマンドを実行します。 -
shell
はコマンドをシステムのシェルを介して実行します。パイプ、リダイレクト、環境変数の展開など、すべてのシェルのメタキャラクタの展開がシェルによって行われます。
my $name = 'Neo';
run 'echo', "hello $name";
shell "ls";
echo
や ls
はよく使われるシェルコマンドです。
echo
はテキストを端末に表示します(Perl6で言う print
です)。
ls
はカレントディレクトリのすべてのファイルとフォルダを表示します。
6.3. ファイル入出力
6.3.1. slurp
slurp
はファイルからデータを読み込むのに使います。
下の内容のファイルを作って試してみてください:
John 9 Johnnie 7 Jane 8 Joanna 7
my $data = slurp "datafile.txt";
say $data;
6.3.2. spurt
spurt
はデータをファイルに書き出すのに使います。
my $newdata = "New scores:
Paul 10
Paulie 9
Paulo 11";
spurt "newdatafile.txt", $newdata;
上のコードを実行すると、 newdatafile.txt という名前のファイルが作られます。中身は新しいスコア表になっているはずです。
6.4. ファイルとディレクトリの操作
Perl6では、ディレクトリの中身を表示するのに、先の例のようにシェルコマンド(ls
)を実行する必要はありません。
say dir; # カレントディレクトリのファイルとフォルダを表示する
say dir "/Documents"; # 指定されたディレクトリのファイルとフォルダを表示する
さらに、新しいディレクトリを作成したり、削除したりすることもできます。
mkdir "newfolder";
rmdir "newfolder";
mkdir
は新しいディレクトリを作成します。
rmdir
は空のディレクトリを削除します。ディレクトリが空でない場合にはエラーを返します。
指定のパスが存在するか、また、それがファイルなのかディレクトリなのかをチェックすることもできます:
下のスクリプトを実行するディレクトリに空のフォルダ folder123
と空の pl6 ファイル script123.pl6
を作って試してみてください。
say "script123.pl6".IO.e;
say "folder123".IO.e;
say "script123.pl6".IO.d;
say "folder123".IO.d;
say "script123.pl6".IO.f;
say "folder123".IO.f;
IO.e
はディレクトリ/ファイルが存在するかチェックします。
IO.f
はそのパスがファイルなのかどうかチェックします。
IO.d
はパスがディレクトリなのかどうかチェックします。
入出力についてさらに詳しくは http://doc.perl6.org/type/IO(英語) を参照してください。 |