operasi file perl
Perl menggunakan teknik yang disebut variabel menangani file untuk mengoperasikan jenis file.
Membaca atau menulis data dari file memerlukan penggunaan file menangani.
Menangani file (file handle) adalah nama dari sebuah koneksi I / O.
Perl menyediakan tiga menangani file: STDIN, STDOUT, stderr, mewakili standard input, output standar dan output standar error.
file perl dapat dibuka dengan cara berikut:
open FILEHANDLE, EXPR open FILEHANDLE sysopen FILEHANDLE, FILENAME, MODE, PERMS sysopen FILEHANDLE, FILENAME, MODE
Parameter Deskripsi:
- Filehandle: menangani file, digunakan untuk menyimpan pengenal unik untuk file.
- EXPR: nama file dan jenis akses file yang terdiri dari ekspresi.
- MODE: akses file jenis.
- PERMS: Access Bit (izin bit).
fungsi terbuka
Kami menggunakan fungsi kode berikut untuk membuka modus read-only (<) untuk membuka file.txt berkas:
open(DATA, "<file.txt");
<Baca-satunya representasi.
File kode DATA menangani digunakan untuk membaca file, contoh berikut akan membuka file dan isi file output:
#!/usr/bin/perl open(DATA, "<file.txt") or die "file.txt 文件无法打开, $!"; while(<DATA>){ print "$_"; }
Kode berikut untuk menulis (>) cara untuk membuka file.txt berkas:
open(DATA, ">file.txt") or die "file.txt 文件无法打开, $!";
> Untuk mode tulis.
Jika Anda perlu membuka file dalam mode read-write, di depan> atau <karakter tanda + untuk menambahkan:
open(DATA, "+<file.txt"); or die "file.txt 文件无法打开, $!";
Pendekatan ini tidak menghapus konten file asli, jika Anda ingin menghapus format berikut:
open DATA, "+>file.txt" or die "file.txt 文件无法打开, $!";
Jika Anda ingin mengajukan data tambahan, data tambahan sebelum, Anda hanya perlu membuka file dalam modus append:
open(DATA,">>file.txt") || die "file.txt 文件无法打开, $!";
>> Merupakan menambahkan data ke file yang ada, jika Anda perlu untuk membaca isi file untuk menambahkan untuk menambahkan tanda +:
open(DATA,"+>>file.txt") || die "file.txt 文件无法打开, $!";
Tabel berikut berisi daftar mode akses yang berbeda:
mode | deskripsi |
---|---|
<Atau r | Terbuka untuk membaca hanya pointer file ke file header. |
> Atau w | Terbuka untuk menulis pointer file ke file header dan ukuran file dipotong ke nol. Jika file tidak ada, mencoba untuk membuat. |
>> Atau | Terbuka untuk menulis pointer file pada akhir file. Jika file tidak ada, mencoba untuk membuat. |
+ <Atau r + | Terbuka untuk membaca dan menulis, file pointer ke file header. |
+> Atau w + | Terbuka untuk membaca dan menulis, file pointer ke file header dan ukuran file dipotong ke nol. Jika file tidak ada, mencoba untuk membuat. |
>> + Atau + | Terbuka untuk membaca dan menulis pointer file pada akhir file. Jika file tidak ada, mencoba untuk membuat. |
fungsi Sysopen
Fungsisysopen mirip dengan membuka fungsi, tetapi mereka tidak bentuk yang sama argumen.
Contoh berikut ini didasarkan pada membaca dan menulis (+ <nama file) cara untuk membuka file:
sysopen(DATA, "file.txt", O_RDWR);
Jika Anda perlu memperbarui file dikosongkan sebelum file ditulis sebagai berikut:
sysopen(DATA, "file.txt", O_RDWR|O_TRUNC );
Anda dapat menggunakan O_CREAT untuk membuat file baru, O_WRONLY menulis-hanya modus, O_RDONLY modus read-only.
The PERMS parameter nilai properti oktal menunjukkan bahwa hak akses file setelah penciptaan, defaultnya adalah 0x666.
Tabel berikut ini berisi nilai modus yang mungkin:
mode | deskripsi |
---|---|
O_RDWR | Terbuka untuk membaca dan menulis, file pointer ke file header. |
O_RDONLY | Terbuka untuk membaca hanya pointer file ke file header. |
O_WRONLY | Terbuka untuk menulis pointer file ke file header dan ukuran file dipotong ke nol. Jika file tidak ada, mencoba untuk membuat. |
O_CREAT | Membuat file |
O_APPEND | menambahkan Berkas |
O_TRUNC | Ukuran file dipotong ke nol |
O_EXCL | Jika Anda menggunakan berkas O_CREAT ada, ia mengembalikan pesan kesalahan, itu dapat menguji apakah file yang ada |
O_NONBLOCK | Non-blocking I / O operasi sehingga kita baik berhasil atau segera mengembalikan kesalahan, tidak terhalang. |
Tutup fungsi
Setelah digunakan dalam file, menutup file yang Anda ingin menyegarkan input dan output buffer menangani file yang terkait dengan menutup file memiliki sintaks berikut:
close FILEHANDLE close
Filehandle untuk menangani file yang ditentukan, jika berhasil ditutup kembali benar.
close(DATA) || die "无法关闭文件";
Membaca dan Menulis File
Membaca dan menulis informasi ke file Ada beberapa cara yang berbeda:
<FILEHANDL> operator
Metode utama membaca informasi dari menangani file yang terbuka adalah <filehandle> operator. Dalam konteks skalar, ia mengembalikan satu baris dari file pegangan. Sebagai contoh:
#!/usr/bin/perl print "本教程网址?\n"; $name = <STDIN>; print "网址:$name\n";
Setelah pelaksanaan prosedur di atas, informasi berikut, kita akan memasuki output URL pernyataan cetak:
Ketika kita menggunakan <filehandle> operator, yang mengembalikan file menangani untuk setiap baris dalam daftar, misalnya, kita dapat mengimpor semua lini untuk array.
Implementasi membuat file import.txt, sebagai berikut:
$ cat import.txt 1 2 3
Import.txt dan membaca setiap baris dalam @lines array yang:
#!/usr/bin/perl open(DATA,"<import.txt") or die "无法打开数据"; @lines = <DATA>; print @lines; # 输出数组内容 close(DATA);
Program di atas, output adalah:
1 2 3
fungsi getc
Fungsi xgetc mengembalikan satu karakter dari filehandle ditentukan, jika Anda tidak menentukan STDIN pulang:
getc FILEHANDLE getc
Jika terjadi kesalahan, atau menangani file pada akhir file, itu kembali undef.
baca fungsi
membaca fungsi digunakan untuk menangani informasi membaca dari buffer berkas.
Fungsi ini digunakan untuk membaca data biner dari sebuah file.
read FILEHANDLE, SCALAR, LENGTH, OFFSET read FILEHANDLE, SCALAR, LENGTH
Parameter Deskripsi:
- Filehandle: menangani file, digunakan untuk menyimpan pengenal unik untuk file.
- SCALAR: Mulai posisi membaca.
- PANJANG: panjang konten baca.
- Offset: offset.
Jika berhasil kembali untuk membaca jumlah byte yang dibaca, kembali 0 jika akhir file, jika terjadi kesalahan kembali undef.
fungsi print
Untuk semua informasi yang dibaca dari fungsi menangani file di bagian belakang dari fungsi utamanya adalah untuk menulis cetak:
print FILEHANDLE LIST print LIST print
Gunakan file dan fungsi cetak dapat menangani hasil berlari ke aparat keluaran (STDOUT: standar output), misalnya:
print "Hello World!\n";
salin file
Contoh berikut kita akan membuka file file1.txt yang ada, dan membacanya setiap baris ditulis ke file2.txt file dalam:
#!/usr/bin/perl # 只读方式打开文件 open(DATA1, "<file1.txt"); # 打开新文件并写入 open(DATA2, ">file2.txt"); # 拷贝数据 while(<DATA1>) { print DATA2 $_; } close( DATA1 ); close( DATA2 );
Mengubah nama file
Contoh-contoh berikut, kita akan sudah ada berkas file1.txt mengubah nama file2.txt, direktori yang ditentukan dalam / usr / w3big / uji / bawah:
#!/usr/bin/perl rename ("/usr/w3big/test/file1.txt", "/usr/w3big/test/file2.txt" );
Fungsimengganti nama hanya menerima dua parameter, hanya file sudah ada akan berganti nama.
Hapus File
Contoh berikut menunjukkan bagaimana kita menggunakan fungsiunlink untuk menghapus file ini:
#!/usr/bin/perl unlink ("/usr/w3big/test/file1.txt");
Tentukan lokasi file
Anda dapat menggunakan fungsikirim untuk mendapatkan lokasi file, dan tentukan lokasi dalam file dengan menggunakan mencarifungsi:
memberitahu fungsi
memberitahu fungsi digunakan untuk mendapatkan lokasi file:
tell FILEHANDLE tell
Jika filehandle fungsi mengembalikan posisi pointer file, dalam byte. Jika Anda tidak menentukan kembali ke default dipilih menangani file.
mencari fungsi
mencari () adalah fungsi yang digunakan untuk bergerak melalui file menangani file membaca dan menulis pointer cara untuk membaca atau menulis file, dalam byte membaca dan menulis:
seek FILEHANDLE, POSITION, WHENCE
Parameter Deskripsi:
- Filehandle: menangani file, digunakan untuk menyimpan pengenal unik untuk file.
- POSISI: menunjukkan jumlah byte menangani file (baca-tulis posisi pointer) untuk bergerak.
- WHENCE: merupakan file handle (lokasi read-write pointer) mulai ketika posisi awal, Anda dapat mengambil nilai 0, 1, menunjukkan awal file, posisi saat ini dan akhir file.
Contoh berikut ini untuk membaca 256 byte dari awal file:
seek DATA, 256, 0;
informasi file
operasi file perl juga dapat menguji apakah file yang ada dan membaca dan menulis.
Apa yang bisa saya membuat file file1.txt, seperti dalam berikut:
$ cat file1.txt www.w3big.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"; }
Program di atas, output adalah:
file1.txt 信息:是一个文本文件, 15 字节
Berkas operator tes pada tabel berikut:
operator | deskripsi |
---|---|
-A | File pertama diakses waktu (unit: hari) |
-B | Apakah itu adalah file biner |
-C | Berkas (inode) inode waktu modifikasi (unit: hari) |
-M | File yang terakhir kali diubah (unit: hari) |
-O | Semua file UID nyata |
-R | File atau direktori dapat dibaca oleh UID nyata / GID |
-S | Soket (Socket) |
-T | Apakah itu adalah file teks |
-W | File atau direktori dapat ditulis dengan UID nyata / GID |
-X | File atau direktori dapat dieksekusi UID nyata / GID |
-b | Sebuah blok-khusus (blok khusus) file (seperti gunung disk) |
-c | Karakter-khusus (karakter khusus) mengajukan (seperti perangkat I / O) |
-d | direktori |
-e | File atau nama direktori ada |
-f | file biasa |
-g | File atau direktori memiliki atribut setgid |
-k | File atau direktori memiliki sedikit lengket |
l | Ini adalah symbolic link |
-o | Semua file UID valid |
p | File adalah pipa bernama (FIFO) |
r | File dapat efektif UID / GID baca |
-s | Berkas atau direktori ada dan tidak 0 (mengembalikan jumlah byte) |
t | Menangani file adalah TTY (fungsi sistem isatty () mengembalikan hasilnya; nama file tidak dapat menggunakan tes ini) |
-u | File atau direktori memiliki atribut setuid |
w | File dapat ditulis ke UID valid / GID |
-x | File dapat dijalankan secara efektif UID / GID |
-z | File ada, ukuran 0 (direktori konstan adalah palsu), yaitu, apakah file kosong, |