Perlファイルの操作
Perl はファイルハンドルタイプと呼ばれる変数を使用してファイルを操作します。
ファイルからのデータの読み取りまたは書き込みには、ファイル ハンドルが必要です。
ファイルハンドルは I/O 接続の名前です。
Perl には、STDIN、STDOUT、および STDERR という 3 つのファイル ハンドルがあり、それぞれ標準入力、標準出力、および標準エラー出力を表します。
Perl でファイルを開くには、次のメソッドを使用できます:
open FILEHANDLE, EXPR open FILEHANDLE sysopen FILEHANDLE, FILENAME, MODE, PERMS sysopen FILEHANDLE, FILENAME, MODE
パラメータの説明:
FILEHANDLE: ファイル ハンドル。一意のファイル識別子を保存するために使用されます。
EXPR: ファイル名とファイル アクセス タイプで構成される式。
MODE: ファイルアクセスタイプ。
PERMS: 許可ビット。
Open 関数
次のコードでは、open 関数を使用してファイル file.txt を読み取り専用モード (<) で開きます:
open(DATA, "<file.txt");
< は読み取り専用モードを意味します。コード内の
DATA は、ファイルの読み取りに使用されるファイル ハンドルです。次の例では、ファイルを開いてファイルの内容を出力します。
#!/usr/bin/perl open(DATA, "<file.txt") or die "file.txt 文件无法打开, $!"; while(<DATA>){ print "$_"; }
次のコードは、( > ) を記述することでファイル file.txt を開きます。
>は書き方を示します。
ファイルを読み取り/書き込みモードで開く必要がある場合は、> または < 文字の前に + 記号を追加できます。open(DATA, ">file.txt") or die "file.txt 文件无法打开, $!";この方法では、ファイルの元のコンテンツは削除されません。形式は次のとおりです。
open(DATA, "+<file.txt"); or die "file.txt 文件无法打开, $!";データをファイルに追加する場合は、データを追加する前に、ファイルを追加モードで開くだけです。
open DATA, "+>file.txt" or die "file.txt 文件无法打开, $!";>> は、データを最後に追加することを意味します。追加するファイルを読み取る必要がある場合は、既存のファイルの内容を + 記号で追加できます:
open(DATA,">>file.txt") || die "file.txt 文件无法打开, $!";次の表に、さまざまなアクセス モードを示します:
Description | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
読み取り専用モードで開き、ファイル ポインターをファイル ヘッダーにポイントします。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
書き込みモードで開き、ファイル ポインタをファイル ヘッダーにポイントし、ファイル サイズをゼロに切り捨てます。ファイルが存在しない場合は、作成してみてください。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
書き込みモードで開き、ファイルポインタをファイルの末尾に指します。ファイルが存在しない場合は、作成してみてください。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
読み取りおよび書き込みモードで開き、ファイル ポインターをファイル ヘッダーにポイントします。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
読み取り/書き込みモードで開き、ファイル ポインターをファイル ヘッダーにポイントし、ファイル サイズをゼロに切り捨てます。ファイルが存在しない場合は、作成してみてください。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
読み取り/書き込みモードで開き、ファイル ポインターをファイルの末尾に指します。ファイルが存在しない場合は、作成してみてください。 |
Mode | Description | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
O_RDWR | 読み取り/書き込みモードで開き、ファイル ポインターがファイル ヘッダーを指すようにします。 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
O_RDONLY | 読み取り専用モードで開き、ファイルポインターをファイルヘッダーにポイントします。 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
O_WRONLY | 書き込みモードで開き、ファイルポインタをファイルヘッダーにポイントし、ファイルサイズをゼロに切り詰めます。ファイルが存在しない場合は、作成してみてください。 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
O_CREAT | ファイルを作成 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
O_APPEND | ファイルを追加 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
O_TRUNC | ファイルサイズをゼロに切り捨てる | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
O_EXCL | O_CREAT を使用するときにファイルが存在する場合、エラー メッセージが表示されます。返されます。ファイルが存在するかどうかをテストできます。 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
Close関数ファイルを使用した後、ファイルハンドルに関連付けられた入出力バッファを更新するためにファイルを閉じる必要があります。ファイルを閉じるための構文は次のとおりです: sysopen(DATA, "file.txt", O_RDWR|O_TRUNC ); FILEHANDLEは指定されたファイルです。ハンドルが返され、正常に閉じられた場合は true が返されます。 close FILEHANDLE close ファイルの読み取りと書き込みファイルへの情報の読み取りと書き込みには、いくつかの異なる方法があります: <FILEHANDL> 演算子開いているファイル ハンドルから情報を読み取る主な方法は、<FILEHANDLE> です。演算子。スカラーコンテキストでは、ファイルハンドルから単一行を返します。例: close(DATA) || die "无法关闭文件"; 上記のプログラムを実行すると、URL を入力すると次の情報が表示されます。 <FILEHANDLE> 演算子を使用すると、次の情報が表示されます。ファイルハンドルリストの各行の値。たとえば、すべての行を配列にインポートできます。 次の内容の import.txt ファイルの作成を実装します: #!/usr/bin/perl print "php中文网网址?\n"; $name = <STDIN>; print "网址:$name\n"; import.txt を読み取り、各行を @lines 配列に入れます: $ cat import.txt 1 2 3 上記のプログラムを実行すると、出力結果は次のようになります: #!/usr/bin/perl open(DATA,"<import.txt") or die "无法打开数据"; @lines = <DATA>; print @lines; # 输出数组内容 close(DATA); getc 関数xgetc この関数は、指定された FILEHANDLE から 1 文字を返します。指定されていない場合は STDIN を返します。 1 2 3 エラーが発生した場合、またはファイル ハンドルがファイルの最後にある場合は、undef が返されます。 read関数read関数は、バッファのファイルハンドルから情報を読み取るために使用されます。 この関数は、ファイルからバイナリデータを読み取るために使用されます。 getc FILEHANDLE getc パラメータの説明:
読み取りが成功した場合は読み取られたバイト数を返し、ファイルの終わりの場合は 0 を返し、エラーが発生した場合は undef を返します。 print関数ファイルハンドルから情報を読み取るすべての関数について、バックエンドの主な書き込み関数はprintです: read FILEHANDLE, SCALAR, LENGTH, OFFSET read FILEHANDLE, SCALAR, LENGTH ファイルハンドルとprint関数を使用して、プログラムの実行結果を出力デバイス(STDOUT:標準)に送信します。出力)、例: print FILEHANDLE LIST print LIST print ファイルのコピー次の例では、既存のファイル file1.txt を開き、その各行を読み取り、ファイル file2.txt に書き込みます。 print "Hello World!\n"; ファイルの名前変更次の例では、既存のファイル file1.txt の名前を file2.txt に変更します。指定されたディレクトリは /usr/php/test/ の下にあります。 #!/usr/bin/perl # 只读方式打开文件 open(DATA1, "<file1.txt"); # 打开新文件并写入 open(DATA2, ">file2.txt"); # 拷贝数据 while(<DATA1>) { print DATA2 $_; } close( DATA1 ); close( DATA2 ); functionrenames は、既存のファイルの名前を変更する場合のみ、2 つのパラメーターのみを受け入れます。 ファイルを削除する次の例は、unlink関数を使用してファイルを削除する方法を示しています: #!/usr/bin/perl rename ("/usr/php/test/file1.txt", "/usr/php/test/file2.txt" ); ファイルの場所を指定するファイルの場所を取得するには、tell関数を使用できます。 seek関数を使用します ファイル内の場所を指定するには: tell関数tell関数はファイルの場所を取得するために使用されます: #!/usr/bin/perl unlink ("/usr/php/test/file1.txt"); FILEHANDLE が指定されている場合、この関数はファイル ポインターの位置をバイト単位で返します。指定しない場合は、デフォルトで選択されたファイル ハンドルを返します。 seek 関数seek() 関数は、ファイル ハンドルを介してファイルの読み取りおよび書き込みポインターを移動することによって、ファイルの読み取りまたは書き込みを行います。読み取りと書き込みはバイト単位で行われます。一意のファイル識別子を保存するために使用されます。
seek FILEHANDLE, POSITION, WHENCE seek DATA, 256, 0; 上記のプログラムを実行すると、出力結果は次のようになります:$ cat file1.txt www.php.cn ファイル テスト演算子を次の表に示します:
|