Development/Script
Perl 파일 다루기
신군.
2018. 10. 3. 18:38
반응형
파일 다루기
경우에 따라 여러분은 파일과 디렉토리를 다루어야 할 때가 있으리라 생각됩니다. PERL의 파일 다루는 솜씨는 매우 훌륭합니다. 파일의 상태 또는 이것이 파일인지 디렉토리인지 알아내기 위해서 C와 같은 언어에서는 대개 int86x, fstat 같은 시스템 의존적인 함수를 이용해야 합니다. 그러나 PERL에서는 어떤 운영체제에서도 같은 명령을 사용합니다. 단지 참조 매뉴얼이 옆에 있어야 한다는 것 뿐이죠. 파일 및 디렉토리에 대해 알고 싶은 경우 다음과 같은 함수들을 사용합니다. 기본적인 것들만 나열합니다.(perlfall.htm의 -X FILEHANDLE을 보십시오.) 문법: -X FILEHANDLE 또는 -X FILE_OR_DIR_NAME -e 파일이 존재하는가 ? (참이면 1, 거짓이면 0을 리턴합니다.) -z 파일 크기가 0인가 ? -s 파일이 0 아닌 크기를 갖는가 ? (파일의 크기를 리턴합니다.) -f 파일이 평범한 파일인가 ? -d 파일이름이 디렉토리인가 ? -T 파일이 텍스트 파일인가 ? -B 파일이 이진 파일인가 ? -M 파일이 생성된지 몇일이 되었는가 ? ( 0부터 시작 )그럼 파일을 한 번 읽어 봅시다. 파일을 읽거나 쓰기 전에는 반드시 파일 핸들을 생성, 파일을 '열어야' 하고, 다 읽은 후에는 '닫아야' 합니다. 파일 핸들에는 변수들에 붙는 $, @, %같은 것들이 붙지 않습니다. 아주 간단하게 만들었죠 ? 문자열을 한 줄씩 읽을 수도 있습니다. 핸들을 배열에 할당(=)시키면 모든 문자열이 다 읽히지만 일반 변수(scalar)에 할당시키면 한 줄만을 읽고, 파일의 끝에 도달했을 때에는 "undefined value"(정해지지 않은 값 ?)을 리턴 합니다. 이 undefined value는 조건식에서 사용하면 거짓으로 인식됩니다. 따라서, 와 같이 하면 안전하게 파일의 끝까지 한 줄씩 읽으면서 print할 수 있는 것이지요. 파일의 크기가 너무 커서 메모리 사용이 과다할 것 같은 경우에는 이렇게 한 줄씩 읽어들이는것도 좋은 방법이겠지요. open은 파일을 열고 close는 닫는 함수인데, open의 여는 동작은 다시 분류하여 생각할 필요가 있습니다. 그럼 파일에 쓰기도 해 봅시다. 쓰기라고 겁먹을 필요가 없습니다. 모든 것을 논리적으로, 정확히 해주면 사고는 없으니까요. 그러나 확실히 이해하지 못한 경우에는 또 삼가 해야 할 것이 파일 쓰기입니다. 파일에 쓰기를 할 때도 그저 print함수를 사용하면 됩니다. 단지 파일 핸들을 명시해주는 것으로 족합니다. 사실 파일 핸들이 명시되지 않을 경우에는 consol인 STDOUT이라는 핸들에 print가 되는 것이지요. 위에서 print 다음의 fileHandle다음에 comma가 없음을 유의해 주세요. 추가쓰기 모드는 따로 설명하지 않겠습니다. 숙제입니다. |
반응형