최고의 펄 파일 작업 튜토리얼 2024년, 이 튜토리얼에서는 Open 함수,Sysopen 기능,닫기 기능,읽기와 쓰기 파일,기능을 읽기,파일 위치를 지정,파일 정보,를 배울 수 있습니다.
펄 파일 유형을 동작 변수 파일 핸들이라는 기술을 사용한다.
판독 또는 파일은 파일 핸들의 사용을 필요로 데이터를 기록.
파일 핸들 (파일 핸들)는 I / O 연결의 이름이다.
STDIN, STDOUT, STDERR, 표준 입력, 표준 출력 및 표준 오류 출력을 나타내는 : 펄은 세 개의 파일 핸들을 제공합니다.
펄 파일은 다음과 같은 방법으로 열 수 있습니다 :
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 + | 판독 및 기록 오픈 파일 헤더 파일 포인터와 파일 크기가 0으로 절단된다. 파일이 존재하지 않으면, 작성하려고. |
>> + 아니면 + | 읽기, 파일 끝에 파일 포인터를 기록하는 연다. 파일이 존재하지 않으면, 작성하려고. |
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 "无法关闭文件";
읽고 여러 가지 방법이 있습니다 파일에 정보를 기록 :
열린 파일 핸들에서 정보를 읽는의 주요 방법은 <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
당신이 반환 STDIN을 지정하지 않으면 xgetc 기능은 지정된 FILEHANDLE에서 하나의 문자를 반환
getc FILEHANDLE getc
오류가 발생하거나 파일의 끝에 파일 핸들 경우 undef를 반환한다.
판독 기능은 파일 버퍼로부터 판독 된 정보를 처리하기 위해 사용된다.
이 함수는 파일의 이진 데이터를 판독하는데 사용된다.
read FILEHANDLE, SCALAR, LENGTH, OFFSET read FILEHANDLE, SCALAR, LENGTH
매개 변수 설명 :
성공적 리턴은 판독 된 바이트 수를 읽는 경우 파일의 끝에, 만약 에러가 발생하면 미확정 복귀 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
매개 변수 설명 :
다음 예는 파일의 선두로부터 256 바이트를 판독한다 :
seek DATA, 256, 0;
펄 파일 작업도 파일이 존재하고 읽기와 쓰기 여부를 테스트 할 수 있습니다.
나는 그런 다음 내 등은 File2.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 | 파일 (아이 노드) 아이 노드 변경 시간 (단위 : 일) |
-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의 크기를 존재 |