Perl은 파일 핸들 유형이라는 변수를 사용하여 파일을 조작합니다.
파일에서 데이터를 읽거나 쓰려면 파일 핸들이 필요합니다.
파일 핸들은 I/O 연결의 이름입니다.
Perl은 각각 표준 입력, 표준 출력 및 표준 오류 출력을 나타내는 STDIN, STDOUT 및 STDERR의 세 가지 파일 핸들을 제공합니다.
다음 방법을 사용하여 Perl에서 파일을 열 수 있습니다.
open FILEHANDLE, EXPRopen FILEHANDLE, FILENAME, MODE, PERMSsysopen FILEHANDLE, FILENAME, MODE
매개변수 설명:
FILEHANDLE: 고유한 파일 식별자를 저장하는 데 사용되는 파일 핸들입니다.
EXPR: 파일 이름과 파일 액세스 유형으로 구성된 표현식입니다.
모드: 파일 액세스 유형.
PERMS: 액세스 권한 비트(permission bit).
다음 코드에서는 open 함수를 사용하여 file.txt 파일을 읽기 전용 모드(<)로 엽니다.
open(DATA, "<file.txt");
<은 읽기 전용 모드를 나타냅니다.
코드의 DATA는 파일을 읽는 데 사용되는 파일 핸들입니다. 다음 예제에서는 파일을 열고 파일 내용을 출력합니다.
다음 코드는 쓰기 위해 file.txt 파일을 엽니다( > ).
open(DATA, ">file.txt") 또는 die "file.txt 파일을 열 수 없습니다. $!";
> 쓰기 방법을 나타냅니다.
읽고 쓰기 위해 파일을 열어야 하는 경우 > 또는 < 문자 앞에 + 기호를 추가할 수 있습니다.
open(DATA, "+<file.txt"); 또는 die "file.txt 파일을 열 수 없습니다. $!";
이 방법은 파일의 원본 내용을 삭제하지 않습니다. 삭제하려는 경우 형식은 다음과 같습니다.
DATA 열기, "+>file.txt" 또는 "file.txt 파일을 열 수 없습니다. $!";
파일에 데이터를 추가하려면 데이터를 추가하기 전에 추가 모드에서 파일을 열기만 하면 됩니다.
open(DATA,">>file.txt") || die "file.txt 파일을 열 수 없습니다, $!";
>>는 기존 파일의 끝에 데이터를 추가한다는 의미입니다. 추가할 파일의 내용을 읽어야 하는 경우 + 기호를 추가할 수 있습니다.
open(DATA,"+>>file.txt") || die "file.txt 파일을 열 수 없습니다, $!";
다음 표에는 다양한 액세스 모드가 나열되어 있습니다.
모델 | 설명하다 |
---|---|
< 또는 r | 읽기 전용 모드로 열고 파일 포인터가 파일 헤더를 가리킵니다. |
> 또는 승 | 쓰기 모드로 열고 파일 포인터를 파일 헤더로 가리키고 파일 크기를 0으로 자릅니다. 파일이 존재하지 않으면 파일을 만들어 보십시오. |
>> 또는 | 쓰기 모드로 열고 파일 포인터가 파일 끝을 가리킵니다. 파일이 존재하지 않으면 파일을 만들어 보십시오. |
+< 또는 r+ | 읽기-쓰기 모드로 열고 파일 포인터가 파일 헤더를 가리킵니다. |
+> 또는 w+ | 읽기-쓰기 모드로 열고 파일 포인터를 파일 헤더로 가리키고 파일 크기를 0으로 자릅니다. 파일이 존재하지 않으면 파일을 만들어 보십시오. |
+>> 또는 + | 읽기-쓰기 모드로 열고 파일 포인터가 파일 끝을 가리킵니다. 파일이 존재하지 않으면 파일을 만들어 보십시오. |
sysopen 함수는 매개변수 형식이 다르다는 점을 제외하면 open 함수와 유사합니다.
다음 예에서는 읽고 쓰기 위해 파일(+<filename)을 엽니다.
sysopen(DATA, "file.txt", O_RDWR);
업데이트하기 전에 파일을 지워야 하는 경우 쓰기 방법은 다음과 같습니다.
sysopen(DATA, "file.txt", O_RDWR|O_TRUNC );
O_CREAT를 사용하여 새 파일을 만들 수 있습니다. O_WRONLY는 쓰기 전용 모드이고 O_RDONLY는 읽기 전용 모드입니다.
PERMS 매개변수는 파일 생성 후 권한을 나타내는 8진수 속성 값입니다. 기본값은 0x666 입니다.
다음 표에는 가능한 모드 값이 나열되어 있습니다.
모델 | 설명하다 |
---|---|
O_RDWR | 읽기-쓰기 모드로 열고 파일 포인터가 파일 헤더를 가리킵니다. |
O_RD만 | 읽기 전용 모드로 열고 파일 포인터가 파일 헤더를 가리킵니다. |
O_WRONLY | 쓰기 모드로 열고 파일 포인터를 파일 헤더로 가리키고 파일 크기를 0으로 자릅니다. 파일이 존재하지 않으면 파일을 만들어 보십시오. |
O_CREAT | 파일 생성 |
O_APPEND | 파일 추가 |
O_TRUNC | 파일 크기를 0으로 자릅니다. |
O_EXCL | O_CREAT를 사용할 때 파일이 존재하면 오류 메시지가 반환됩니다. 파일이 존재하는지 테스트할 수 있습니다. |
O_NONBLOCK | 비차단 I/O를 사용하면 작업이 차단되지 않고 즉시 성공하거나 오류를 반환할 수 있습니다. |
파일을 사용한 후에는 파일 핸들과 연결된 입력 및 출력 버퍼를 새로 고치기 위해 파일을 닫아야 합니다.
닫기FILEHANDLE닫기
FILEHANDLE은 지정된 파일 핸들이며 성공적으로 닫히면 true를 반환합니다.
close(DATA) || die "파일을 닫을 수 없습니다.";
파일에 정보를 읽고 쓰는 방법에는 여러 가지가 있습니다.
열린 파일 핸들에서 정보를 읽는 기본 방법은 <FILEHANDLE> 연산자입니다. 스칼라 컨텍스트에서는 파일 핸들에서 단일 행을 반환합니다. 예를 들어:
<FILEHANDLE> 연산자를 사용하면 파일 핸들의 각 줄 목록이 반환됩니다. 예를 들어 모든 줄을 배열로 가져올 수 있습니다.
다음 내용으로 import.txt 파일 생성을 구현합니다.
$ 고양이 import.txt 123
import.txt를 읽고 각 줄을 @lines 배열에 넣습니다.
위 프로그램을 실행하면 출력 결과는 다음과 같습니다.
123
xgetc 함수는 지정된 FILEHANDLE에서 단일 문자를 반환하거나 지정되지 않은 경우 STDIN을 반환합니다.
getcFILEHANDLEgetc
오류가 발생하거나 파일 핸들이 파일 끝에 있으면 undef가 반환됩니다.
읽기 함수는 버퍼의 파일 핸들에서 정보를 읽는 데 사용됩니다.
이 함수는 파일에서 이진 데이터를 읽는 데 사용됩니다.
FILEHANDLE, SCALAR, LENGTH, OFFSET 읽기 FILEHANDLE, SCALAR, LENGTH 읽기
매개변수 설명:
FILEHANDLE: 고유한 파일 식별자를 저장하는 데 사용되는 파일 핸들입니다.
SCALAR: 결과를 저장합니다. OFFSET을 지정하지 않으면 데이터가 SCALAR의 시작 부분에 배치됩니다. 그렇지 않으면 데이터는 SCALAR의 OFFSET 바이트 뒤에 배치됩니다.
LENGTH: 읽은 내용의 길이입니다.
오프셋: 오프셋.
읽기에 성공하면 읽은 바이트 수를 반환하고, 파일 끝에 도달하면 0을, 오류가 발생하면 undef를 반환합니다.
파일 핸들에서 정보를 읽는 모든 함수의 경우 백엔드의 주요 쓰기 함수는 print입니다.
FILEHANDLE LIST 인쇄 LIST 인쇄 인쇄
프로그램 실행 결과는 파일 핸들과 인쇄 기능을 사용하여 출력 장치(STDOUT: 표준 출력)로 보낼 수 있습니다. 예를 들면 다음과 같습니다.
"Hello World!n"을 인쇄합니다;
다음 예에서는 기존 파일 file1.txt를 열고 해당 파일의 각 줄을 읽고 이를 file2.txt 파일에 씁니다.
다음 예에서는 기존 파일 file1.txt의 이름을 file2.txt로 바꾸고 지정된 디렉터리는 /usr/codercto/test/ 아래에 있습니다.
#!/usr/bin/perlrename ("/usr/codercto/test/file1.txt", "/usr/codercto/test/file2.txt" );
renames 함수는 두 개의 매개변수만 허용하고 기존 파일의 이름만 바꿉니다.
다음 예에서는 연결 해제 함수를 사용하여 파일을 삭제하는 방법을 보여줍니다.
Tell 함수를 사용하여 파일의 위치를 얻을 수 있고, Seek 함수를 사용하여 파일 내의 위치를 지정할 수 있습니다.
Tell 함수는 파일 위치를 얻는 데 사용됩니다.
FILEHANDLE말하기
FILEHANDLE이 지정된 경우 이 함수는 파일 포인터의 위치를 바이트 단위로 반환합니다. 지정하지 않으면 기본적으로 선택된 파일 핸들을 반환합니다.
Seek() 함수는 파일 핸들을 통해 파일 읽기/쓰기 포인터를 이동하여 파일을 읽거나 쓰고, 바이트 단위로 읽고 씁니다.
FILEHANDLE, POSITION, WHENCE를 검색합니다.
매개변수 설명:
FILEHANDLE: 고유한 파일 식별자를 저장하는 데 사용되는 파일 핸들입니다.
POSITION: 파일 핸들(읽기 및 쓰기 위치 포인터)로 이동할 바이트 수를 나타냅니다.
WHENCE: 파일 핸들(읽기-쓰기 위치 포인터)이 이동하기 시작할 때의 시작 위치를 나타냅니다. 가능한 값은 파일의 시작, 현재 위치, 끝을 나타내는 2입니다. 각각 파일.
다음 예에서는 파일 시작 부분부터 256바이트를 읽습니다.
DATA, 256, 0을 찾으십시오.
Perl의 파일 작업은 파일이 존재하는지, 읽고 쓸 수 있는지 등을 먼저 테스트할 수도 있습니다.
먼저 다음과 같이 file1.txt 파일을 생성할 수 있습니다.
$ 고양이 파일1.txt www.codercto.com
위 프로그램을 실행하면 출력 결과는 다음과 같습니다.
file1.txt 정보: 텍스트 파일, 15바이트
파일 테스트 연산자는 다음 표에 나와 있습니다.
연산자 | 설명하다 |
---|---|
-에이 | 파일에 마지막으로 접근한 시간 (단위: 일) |
-비 | 바이너리 파일인가요? |
-기음 | 파일(아이노드) 인덱스 노드 수정 시간(단위: 일) |
-중 | 파일이 마지막으로 수정된 시간 (단위: 일) |
-영형 | 파일은 실제 UID의 소유입니다. |
-아르 자형 | 실제 UID/GID로 파일이나 디렉터리를 읽을 수 있습니다. |
-에스 | 소켓용(소켓) |
-티 | 텍스트 파일인가요? |
-W | 실제 UID/GID를 사용하여 파일이나 디렉터리에 쓸 수 있습니다. |
-엑스 | 파일이나 디렉터리는 실제 UID/GID로 실행될 수 있습니다. |
-비 | 블록 특수(특수 블록) 파일(예: 마운트된 디스크)의 경우 |
-기음 | 문자 특수(특수 문자) 파일(예: I/O 장치)의 경우 |
-디 | 디렉토리용 |
-이자형 | 파일 또는 디렉터리 이름이 존재합니다. |
-에프 | 일반 파일의 경우 |
-g | 파일 또는 디렉터리에 setgid 속성이 있습니다. |
-케이 | 파일 또는 디렉터리에 고정 비트가 설정되어 있습니다. |
-엘 | 심볼릭 링크의 경우 |
-영형 | 유효한 UID가 파일을 소유하고 있습니다. |
-피 | 파일이 명명된 파이프(FIFO)입니다. |
-아르 자형 | 유효한 UID/GID로 파일을 읽을 수 있습니다. |
-에스 | 파일 또는 디렉터리가 존재하고 0이 아닙니다(바이트 수를 반환). |
-티 | 파일 핸들은 TTY입니다(시스템 함수 isatty()의 반환 결과; 이 테스트는 파일 이름에 사용할 수 없습니다). |
-유 | 파일 또는 디렉터리에 setuid 속성이 있음 |
-w | 유효한 UID/GID를 사용하여 파일을 쓸 수 있습니다. |
-엑스 | 유효한 UID/GID를 사용하여 파일을 실행할 수 있습니다. |
-지 | 파일이 존재하고 크기가 0(디렉토리는 항상 false), 즉 빈 파일인지 여부입니다. |