Perlのファイル操作2024 年の最新の入門チュートリアル。このコースでは Open関数,sysopenで機能,Close関数,ファイルを読み書きします,関数を読んで,ファイルの場所を指定します。,ファイル情報, について学習できます。
Perlは、ファイルの種類を操作する変数ファイルハンドルと呼ばれる技術を使用しています。
ファイルからデータを読み取りまたは書き込みファイルハンドルを使用する必要があります。
ファイルハンドル(ファイルハンドル)は、I / O接続の名前です。
STDIN、STDOUT、STDERR、標準入力、標準出力、標準エラー出力を表す:Perlのは、3つのファイルハンドルを提供します。
Perlのファイルは、次の方法で開くことができます。
open FILEHANDLE, EXPR open FILEHANDLE sysopen FILEHANDLE, FILENAME, MODE, PERMS sysopen FILEHANDLE, FILENAME, MODE
パラメータ説明:
私たちは、ファイルfile.txtをを開くには、読み取り専用モード(<)を開くために、次のコード関数を使用します。
open(DATA, "<file.txt");
<読み取り専用表現。
コードデータファイルハンドルがファイルを読み取るために使用され、次の例では、出力のファイルとファイルの内容を開きます。
#!/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 文件无法打开, $!";
>>あなたは+記号を追加するために追加するファイルの内容を読み取るために必要がある場合は、既存のファイルにデータを追加表します:
open(DATA,"+>>file.txt") || die "file.txt 文件无法打开, $!";
次の表は、異なるアクセスモードを示します:
モード | 説明 |
---|---|
<またはR | ファイルヘッダにのみファイルポインタを読み込みのためにオープン。 |
>またはW | ファイルヘッダにファイルポインタを書き込むために開いて、ファイルサイズをゼロにカットされます。 ファイルが存在しない場合は、作成しようとします。 |
>>または、 | ファイルの末尾にファイルポインタを書き込むために開きます。 ファイルが存在しない場合は、作成しようとします。 |
+ <またはR + | 、読み取りと書き込みのためにファイルヘッダへのファイルポインタを開きます。 |
+>またはW + | 読み込みと書き込みのためのオープン、ファイルヘッダへのファイルポインタとファイルサイズがゼロにカットされます。 ファイルが存在しない場合は、作成しようとします。 |
>> +またはA + | ファイルの末尾にファイルポインタを読み書きのためにオープンします。 ファイルが存在しない場合は、作成しようとします。 |
sysopenでの関数は、関数を開くに似ていますが、彼らは、引数の同じ形式ではありません。
次の例は、ファイルを開くには(+ <ファイル名)の道を読み書きに基づいています。
sysopen(DATA, "file.txt", O_RDWR);
あなたはファイルの前に空にファイルを更新する必要がある場合は、次のように書かれています:
sysopen(DATA, "file.txt", O_RDWR|O_TRUNC );
あなたはO_RDONLY、O_WRONLY書き込み専用モードに新しいファイルを作成し、読み取り専用モードにするためにO_CREATを使用することができます。
PERMSパラメータオクタルプロパティ値は、ファイルのアクセス権を作成した後、デフォルトは0x666であることを示しています。
次の表は、使用可能なモードの値を示します。
モード | 説明 |
---|---|
O_RDWR | 、読み取りと書き込みのためにファイルヘッダへのファイルポインタを開きます。 |
O_RDONLY | ファイルヘッダにのみファイルポインタを読み込みのためにオープン。 |
O_WRONLY | ファイルヘッダにファイルポインタを書き込むために開いて、ファイルサイズをゼロにカットされます。 ファイルが存在しない場合は、作成しようとします。 |
O_CREAT | ファイルを作成します。 |
O_APPEND | ファイルを追加 |
O_TRUNC | ファイルサイズがゼロに切断されます |
O_EXCL | あなたがO_CREATファイルが存在している使用している場合、それはエラーメッセージを返し、それはファイルが存在するかどうかをテストすることができます |
O_NONBLOCK | 私たちが成功するか、すぐにエラーを返し、ブロックされていないいずれかのように、I / O操作をノンブロッキング。 |
ファイルで使用した後、ファイルを閉じると、次の構文を持っているに関連付けられているファイルハンドルの入力および出力バッファをリフレッシュしたいファイルを閉じます。
close FILEHANDLE close
指定されたファイルハンドルのFILEHANDLE、正常に閉じられたが真。
close(DATA) || die "无法关闭文件";
読み取りと書き込みの情報をファイルに、いくつかの異なる方法があります。
開いているファイルハンドルから情報を読み取る主な方法は、<FILEHANDLE>演算子です。 スカラコンテキストでは、ファイルハンドルから単一の行を返します。 例えば:
#!/usr/bin/perl print "本教程网址?\n"; $name = <STDIN>; print "网址:$name\n";
上記の手順を実施した後、以下の情報は、我々は、URLのprint文の出力を入力します:
私たちは、リスト内の行ごとにファイルハンドルを返します。<FILEHANDLE>演算子を使用する場合、例えば、我々は、アレイへのすべての行をインポートすることができます。
次のように実装は、IMPORT.TXTファイルを作成します。
$ cat import.txt 1 2 3
IMPORT.TXTと@lines配列にそれぞれの行をお読みください。
#!/usr/bin/perl open(DATA,"<import.txt") or die "无法打开数据"; @lines = <DATA>; print @lines; # 输出数组内容 close(DATA);
上記のプログラムは、出力は次のようになります。
1 2 3
あなたはリターンSTDINを指定しない場合xgetc関数は、指定したFILEHANDLEから単一の文字を返します。
getc FILEHANDLE getc
エラーが発生した場合、またはファイルの末尾にファイルハンドルならば、それはundefを返します。
読み取り機能は、ファイルのバッファから読み出された情報を処理するために使用されます。
この関数は、ファイルからバイナリデータを読み取るために使用されます。
read FILEHANDLE, SCALAR, LENGTH, OFFSET read FILEHANDLE, SCALAR, LENGTH
パラメータ説明:
成功したリターンが読み込まれたバイト数を読み取るようにした場合、ファイルの終わりが、場合は、エラーがundefを返し発生した場合、0を返します。
すべての情報は、main関数の後端にファイルハンドル機能から読み取られるためにプリントを作成することです:
print FILEHANDLE LIST print LIST print
例えば、:ファイルとプリンタの機能は出力装置(標準出力STDOUT)に実行した結果を処理することができます使用します。
print "Hello World!\n";
次の例では、我々は既存のファイルFILE1.TXTを開いて、それをファイルFILE2.TXT内に書き込まれたそれぞれの行を読み込みます。
#!/usr/bin/perl # 只读方式打开文件 open(DATA1, "<file1.txt"); # 打开新文件并写入 open(DATA2, ">file2.txt"); # 拷贝数据 while(<DATA1>) { print DATA2 $_; } close( DATA1 ); close( DATA2 );
以下の例では、我々はすでにFILE2.TXTは/ usr / w3big /テスト/の下に指定したディレクトリの名前を変更FILE1.TXTファイルを既存のでしょう。
#!/usr/bin/perl rename ("/usr/w3big/test/file1.txt", "/usr/w3big/test/file2.txt" );
関数は、唯一のファイルが既に存在する二つのパラメータは、名前が変更されます受け入れ名前を変更します。
次の例では、我々はこのファイルを削除するためには、unlink関数を使用方法を示します。
#!/usr/bin/perl unlink ("/usr/w3big/test/file1.txt");
あなたは、ファイルの場所を取得するのtell機能を使用し、シーク機能を使用して、ファイル内の位置を指定することができます。
ファイルの場所を取得するために使用される関数を言います。
tell FILEHANDLE tell
FILEHANDLE場合、関数はバイト単位で、ファイルポインタの位置を返します。 デフォルト選択したファイルハンドルへの復帰を指定しない場合。
()関数は、読み取りおよび書き込みポインタファイルを読み書きする方法を、バイト単位で読み出しおよび書き込みファイルハンドルファイルを移動するために使用されるシーク:
seek FILEHANDLE, POSITION, WHENCE
パラメータ説明:
次の例では、ファイルの先頭から256バイトを読み取るために、次のとおりです。
seek DATA, 256, 0;
Perlのファイル操作は、ファイルが存在し、読み取り、書き込みを行っているかどうかをテストすることができます。
私は、次の内のようFILE1.TXTファイルを、作成することができますどのような:
$ cat file1.txt www.w3write.com
#/usr/bin/perl my $file = "/usr/test/w3big/file1.txt"; my (@description, $size); if (-e $file) { push @description, '是一个二进制文件' if (-B _); push @description, '是一个socket(套接字)' if (-S _); push @description, '是一个文本文件' if (-T _); push @description, '是一个特殊块文件' if (-b _); push @description, '是一个特殊字符文件' if (-c _); push @description, '是一个目录' if (-d _); push @description, '文件存在' if (-x _); push @description, (($size = -s _)) ? "$size 字节" : '空'; print "$file 信息:", join(', ',@description),"\n"; }
上記のプログラムは、出力は次のようになります。
file1.txt 信息:是一个文本文件, 15 字节
次の表のテスト演算子をファイル:
演算子 | 説明 |
---|---|
-A | ファイルに最初にアクセスした時間(単位:日) |
-B | それはバイナリファイルであるかどうか |
-C | ファイル(iノード)のinode変更時刻(単位:日) |
-M | ファイルだった最終更新時刻(単位:日) |
-O | すべてのファイルが実UIDです |
-R | ファイルまたはディレクトリが実UID / GIDで読み取ることができます |
-S | ソケット(ソケット) |
-T | それはテキストファイルであるか否か |
-W | ファイルまたはディレクトリが実UID / GIDに書き込むことができます |
-X | ファイルやディレクトリは、実UID / GIDを実行することができます |
-b | ブロック型特殊(特別ブロック)ファイル(例えばマウント・ディスクなど) |
-c | 文字特殊(特殊文字)(そのようなI / Oデバイスとしての)ファイル |
-d | ディレクトリ |
-e | ファイルまたはディレクトリ名が存在します |
-f | 通常ファイル |
-g | ファイルまたはディレクトリがsetgidの属性を持っています |
-k | ファイルまたはディレクトリがスティッキービットを持っています |
-l | これは、シンボリックリンクであります |
-o | すべてのファイルが有効なUIDです |
-p | ファイルには、名前付きパイプ(FIFO)であります |
-r | ファイルは、効果的にUID / GID読み取ることができます |
-s | ファイルまたはディレクトリが存在し、0でない(バイト数を返します) |
-t | ファイルハンドルは、TTY(システム関数isatty()は、結果を返します。ファイル名は、このテストを使用することはできません)されています |
-u | ファイルまたはディレクトリがsetuidの属性を持っています |
-w | ファイルが有効なUID / GIDに書き込むことができます |
-x | ファイルは、効果的にUID / GIDを実行することができます |
-z | ファイルが0のサイズ(定数ディレクトリがfalse)、存在し、それは、ファイルが空であるかどうか、です |