Latest web development tutorials

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,