入出力

VOID close HANDLE
ファイルハンドルHANDLEをクローズします。

 
VOID listhandle VOID
現在オープンされているファイルハンドルのstatusを表示します。

 
BOOL isfileexist STRING
STRINGからなるファイルが存在するか結果を返します。

 
VOID open (HANDLE, STRING)
STRINGからなるファイル名をオープンし、ファイルハンドルHANDLEに結び付けます。HANDLEが既に存在する場合や、有効なハンドルが得られなかった場合、スクリプトは中断します。

 
VOID print HANDLE STRING
HANDLEにSTRINGを出力します。HANDLEが省略された場合、CUIMENUが立ち上がっていればメッセージエリアに、立ち上がっていなければSTDOUTに出力します。

 
VOID print HANDLE ARRAY
HANDLEにARRAYの各要素を特殊変数$,で区切って出力します。$,のデフォルト値は""です。HANDLEが省略された場合、メッセージエリアに出力します。

 
VOID printf HANDLE (FORMAT, STRING1, STRING2, ...)
HANDLEにFORMATでフォーマットされたSTRING1、STRING2、...を出力します。HANDLEが省略された場合、CUIMENUが立ち上がっていればメッセージエリアに、立ち上がっていなければSTDOUTに出力します。FORMATは、CやPerlの場合と同様ですが、ポインタを修飾する修飾子(F, N)やポインタ型(p)、%n等は用いることはできません。

 
BOOL readline STRING
STRINGをプロンプトとしてテキスト入力を促します。テキスト編集結果は$_RETに返されます。カーソル移動はBashと同様なキーアサインでテキスト編集ができます。また、ファイル名の補完やヒストリ機能もあります。

特殊なファイルハンドル

通常ファイルハンドルは、"open"関数によって定義されますが、以下のハンドルはデフォルトで定義されています。これらのユーザ側でハンドルはクローズできません。
  STDIN     標準入力
  STDOUT    標準出力
  STDERR    標準エラー出力

ハンドルを用いた入出力の例

例1:「ファイル"test"を読み込みモードでオープンし、ファイルハンドル"F"に結び付けます。 この後1行ずつファイルを読み込み、メッセージエリアに表示します。」
     open(F, '&lttest');
     while ($a = &ltF>)
     {
       print $a;
     }
     close(F);

例2:「ファイル"test"を読み込みモードでオープンし、ファイルハンドル"F"に結び付けます。この後1行ずつファイルを読み込み、行番号を付けてメッセージエリアに表示します。」
     $index = 0;
     open(F, '&lttest');
     while ($a = &ltF>)
     {
       $index++;
       print "$index : $a";
     }
     close(F);
例3:「ファイル"test"を読み込みモードでオープンし、ファイルハンドル"F"に結び付けます。この後ファイル内容を配列変数@aに一気に読み込みます。この後メッセージエリアにファイル内容を表示します。」
     open(F, '&lttest');
     @a = &ltF>
     close(F);
     print @a;

例4:「ファイル"test"を書き込みモードでオープンし、ファイルハンドル"F"に結び付けます。この後配列変数@aの内容を書き込みます。但し、@aの各要素毎に改行するとします。そこでprint @aの配列の各要素の区切りを定義する特殊変数$,の値を'\n'としておきます。」
     $, = '\n';
     open(F, '&gttest');
     print F @a;
     close(F);

例5:「tpv2psへのパイプをオープンし、グラフイメージをpostscript形式に変換してから、ファイル"test.ps"に書き込みます。」
     open(F, '|tpv2ps > test');
     $graph->paintall(F);
     close(F);

例6:「lsの出力を配列$aに読み込みます。」
     open(F, 'ls |');
     $a = &ltF>
     close(F);