Latest web development tutorials

펄 파일 작업

펄 파일 유형을 동작 변수 파일 핸들이라는 기술을 사용한다.

판독 또는 파일은 파일 핸들의 사용을 필요로 데이터를 기록.

파일 핸들 (파일 핸들)는 I / O 연결의 이름이다.

STDIN, STDOUT, STDERR, 표준 입력, 표준 출력 및 표준 오류 출력을 나타내는 : 펄은 세 개의 파일 핸들을 제공합니다.

펄 파일은 다음과 같은 방법으로 열 수 있습니다 :

open FILEHANDLE, EXPR
open FILEHANDLE

sysopen FILEHANDLE, FILENAME, MODE, PERMS
sysopen FILEHANDLE, FILENAME, MODE

매개 변수 설명 :

  • FILEHANDLE : 파일에 대한 고유 식별자를 저장하는 파일 핸들.
  • EXPR : 파일명 표현 이루어진 파일 액세스 유형.
  • MODE : 파일 액세스 유형.
  • PERMS : 액세스 비트 (권한 비트).

Open 함수

우리는 파일 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 + 판독 및 기록 오픈 파일 헤더 파일 포인터와 파일 크기가 0으로 절단된다. 파일이 존재하지 않으면, 작성하려고.
>> + 아니면 + 읽기, 파일 끝에 파일 포인터를 기록하는 연다. 파일이 존재하지 않으면, 작성하려고.

Sysopen 기능

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 파일 크기는 0으로 잘라
O_EXCL 만약 O_CREAT 파일이 존재 사용하는 경우, 에러 메시지를 반환 그 파일이 존재하는지 여부를 테스트 할
O_NONBLOCK 우리는 성공 하나 때문에 I / O 작업을 비 차단 즉시 오류, 차단되지를 반환합니다.

닫기 기능

파일의 사용 후 파일을 닫으면 다음 구문과 관련된 파일 핸들의 입력 및 출력 버퍼를 새로 고침 할 파일을 닫습니다

close FILEHANDLE
close

만약 성공적으로 지정된 파일 핸들 FILEHANDLE은 진정한 수익을 마감했다.

close(DATA) || die "无法关闭文件";

읽기와 쓰기 파일

읽고 여러 가지 방법이 있습니다 파일에 정보를 기록 :

<FILEHANDL> 연산자

열린 파일 핸들에서 정보를 읽는의 주요 방법은 <FILEHANDLE> 연산자입니다. 스칼라 문맥에서, 파일 핸들에서 한 줄을 반환합니다. 예를 들면 :

#!/usr/bin/perl

print "本教程网址?\n";
$name = <STDIN>;
print "网址:$name\n";

상기 절차의 실행 후, 다음의 정보, 우리는 URL 프린트 명령문 출력을 입력한다 :

우리는리스트의 각 행을 위해 파일 핸들을 리턴 <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

getc 그룹 기능

당신이 반환 STDIN을 지정하지 않으면 xgetc 기능은 지정된 FILEHANDLE에서 하나의 문자를 반환

getc FILEHANDLE
getc

오류가 발생하거나 파일의 끝에 파일 핸들 경우 undef를 반환한다.


기능을 읽기

판독 기능은 파일 버퍼로부터 판독 된 정보를 처리하기 위해 사용된다.

이 함수는 파일의 이진 데이터를 판독하는데 사용된다.

read FILEHANDLE, SCALAR, LENGTH, OFFSET
read FILEHANDLE, SCALAR, LENGTH

매개 변수 설명 :

  • FILEHANDLE : 파일에 대한 고유 식별자를 저장하는 파일 핸들.
  • SCALAR : 위치를 읽기 시작합니다.
  • 길이 : 콘텐츠 길이 읽어 보시기 바랍니다.
  • OFFSET : 오프셋 (offset)입니다.

성공적 리턴은 판독 된 바이트 수를 읽는 경우 파일의 끝에, 만약 에러가 발생하면 미확정 복귀 0을 반환한다.

인쇄 기능

모든 정보는 상기 주 기능의 후단 파일 핸들 함수로부터 판독 용 인쇄 물품이다 :

print FILEHANDLE LIST
print LIST
print

파일을 사용하여 인쇄 기능은 출력 장치 (STDOUT : 표준 출력)을 실행하는 처리의 결과, 예를 들어 :

print "Hello World!\n";

파일 복사

다음의 예는 우리가 기존의 파일은 File2.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" );

기능은이름을 바꿉니다 두 개의 매개 변수 만 파일이 이미 이름이 변경됩니다 존재를 받아들입니다.

파일 삭제

우리가이 파일을 삭제하려면링크 해제 기능을 사용하는 방법 다음 예는 보여줍니다

#!/usr/bin/perl

unlink ("/usr/w3big/test/file1.txt");

파일 위치를 지정

해당 파일의 위치를 얻을텔 함수를 사용하여 기능을 추구하여파일 내의 위치를 지정할 수있다 :

기능에게

파일 위치를 획득하기 위해 사용되는 함수를 들려

tell FILEHANDLE
tell

FILEHANDLE 경우 함수는 바이트 단위의 파일 포인터의 위치를 ​​반환한다. 당신은 기본 선택된 파일 핸들에 반환을 지정하지 않은 경우.

기능을 추구

함수는 바이트 읽기 및 쓰기에서 읽기 및 포인터를 파일을 읽거나 쓸 수있는 방법을 쓰기 파일 핸들 파일을 통해 이동하는 데 사용됩니다 () 추구 :

seek FILEHANDLE, POSITION, WHENCE

매개 변수 설명 :

  • FILEHANDLE : 파일에 대한 고유 식별자를 저장하는 파일 핸들.
  • 위치 : 이동 파일 핸들 (읽기 쓰기 위치 포인터)의 바이트 수를 나타냅니다.
  • WHENCE는 : 상기 파일의 현재 위치 및 파일 끝의 시작을 나타내는 파일 핸들 (읽기 쓰기 위치 포인터) 시작 위치는, 만약 0, 1의 값을 취할 때 시작을 나타낸다.

다음 예는 파일의 선두로부터 256 바이트를 판독한다 :

seek DATA, 256, 0;

파일 정보

펄 파일 작업도 파일이 존재하고 읽기와 쓰기 여부를 테스트 할 수 있습니다.

나는 그런 다음 내 등은 File2.txt 파일을 생성 할 수있는 일 :

$ 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";
}

위의 프로그램은 출력은 다음과 같습니다

file1.txt 信息:是一个文本文件, 15 字节

다음 표에 테스트 연산자 파일 :

운영자 기술
-A 파일이 처음으로 액세스 시간 (단위 : 일)
-B 그것은 이진 파일인지 여부
-C 파일 (아이 노드) 아이 노드 변경 시간 (단위 : 일)
-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 파일 핸들 (결과 시스템 기능 isatty ()를 반환하고, 파일명이 테스트를 사용할 수 없다)이다 TTY
-u 파일 또는 디렉토리는 setuid를 속성이
-w 파일이 유효한 UID / GID에 기록 될 수있다
-x 파일 효과적으로 UID / GID 실행될 수
-z 파일은 파일이 비어 있는지 여부, 즉, (상수 디렉토리가 false), 0의 크기를 존재