안녕하세요~
오늘은 펄 프로그래밍에서 파일 입출력을 하는 방법에 대해 공부해 볼까 합니다
여타 다른 언어와 마찬가지로 펄에도 파일 입출력이 있습니다
파일을 읽고, 쓰고 하는 과정이죠
간단한 예제로 공부해보죠!
먼저 진행할 파일이 필요합니다
저는 펄 워크스페이스에 위와 같은 텍스트 파일을 하나 준비했습니다.
안에 내용은 아래와 같습니다.
1
2
3
4
5
6
7
8 |
randal
aabbcc
fred
camel
soojin
lee
lee
soojin |
이제 이 파일을 읽어서 출력을 해봅시다
먼저 기본적인 문법은 이렇게 됩니다.
open( ) 함수를 써서 파일을 열어줍니다.
open(접근자, "파일명"); 이렇게요
이렇게 하면 read가 되는 겁니다.
쓰기(write), 덧붙이기(append)는 어떻게 할까요?
똑같이 open()을 씁니다.
쓰기를 하려면 open(접근자, ">파일명")이 됩니다
덧붙이기를 하려면 open(접근자, ">>파일명")이 됩니다
무슨 말인지 잘 모르겠죠?
예제로 바로 가볼게요!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 |
init_words();
sub init_words{
open(WORDLIST, "test2.txt") || die "파일을 열 수 없음 : $!"; #파일은 연다. 그 접근하는 이름은 WORDLIST로 둔다.
#die는 말 그대로 뒈졌을때(실패했을 때) 쓰는 함수이다. OR 연산을 통해 성공 혹은 실패를 결정한다.
# $! 는 오류 메세지 같은거 출력해주는 도움을 준다.
#만약 write를 하고 싶으면 open(WORDLIST, ">test2.txt");
#덧 붙이고 싶으면(append) open(WORDLIST, ">>test2.txt"); 와 같이 하면 된다.
while(defined($name = <WORDLIST>)){ #이 연산의 끝은 빈 문자열(undef)
chomp($name); #$name값이 저장되어 있는데 거기서 끝의 공백을 지워준다.
$word = <WORDLIST>; #$word라는 스칼라 변수에 그 다음값을 넣어준다.
chomp($word);
$words{$name} = $word; #words라는 곳에 $name의 키값으로 $word값을 넣는다. 해시
print("name : ".$name."\n");
print("word : ".$word."\n");
print("words :".$words{$name}."\n"); #해시라서 키 값을 통해 값을 가지고 온다.
print("\n\n");
}
close(WORDLIST) || die "cannot close wordlist : $!"; #파일 입출력이 끝났으면 핸들을 닫는다.
} |
cs |
이러한 예제입니다
접근하는 이름은 WORDLIST로 접근을 합니다. 또한, 아까 준비해둔 test2.txt 파일에 접근을 하게 됩니다.
>나 >>가 없으니 read입니다!
die와 $!은 주석에 설명이 되어 있으니 참고해주세요
출력이 꽤나 복잡하죠?
2줄씩 접근하는 것입니다.
먼저 $name을 통해 1줄에 접근하게 됩니다.
그리고 $word를 통해 그 다음 줄에 접근하게 됩니다
그리고 해시에 적용해보고자 $words라는 해시를 만들어서 $name을 키로 $word를 값으로 넣습니다
출력하면 아래 사진처럼 될 것입니다
이렇게 하면 읽기가 가능합니다
그럼 write는 어떻게 할까요?
먼저 테스트 파일을 2개 준비합니다
그리고 2.secret는 현재 내용이 없습니다
1.secret내용은 아래와 같습니다
네 그냥 아무렇게나 쓴 겁니다 ㅎㅎㅎ
그리고 예제를 보죠!
1
2
3
4
5
6
7
8
9
10
11
12
13
14 |
init_fileIO2();
sub init_fileIO2{
#이 함수는 1.secret라는 파일을 받아서 2.secret에 write한다.
open(IN, "1.secret") || die "파일 x 1 : $!";
open(OUT, ">2.secret") || die "파일 x 2: $!";
while(<IN>){
print OUT $_;
}
close(IN) || die "cannot close IN : $!";
close(OUT) || die "cannot close OUT : $!";
print("end \n\n");
} |
cs |
1.secret은 read 용으로 읽어옵니다.
2.secret은 write로 접근을 하죠?
그래서 1.secret 접근자인 IN을 기준으로 반복문을 돕니다.
그리고 반복할 때마다 나오는 값을 $_ 변수로 받게 되죠
그걸 print로 OUT 접근자를 통해 secret2에 넣게 되죠
덧붙여졌네요!
이렇게 간단하게 펄의 파일 입출력을 알아봤습니다
'perl' 카테고리의 다른 글
펄(perl) continue(next, redo), break(last)문 (0) | 2017.11.13 |
---|---|
펄(perl) 디렉토리 핸들링(디렉토리 변경, 파일 검색) (0) | 2017.11.13 |
펄 문자열 split(자르기), join(붙이기) (0) | 2017.10.30 |
펄 cgi get, post 진행해보기 (0) | 2017.10.19 |
펄 서브루틴(perl subroutine) 활용하기 여러 값 보내서 테이블 출력 (0) | 2017.10.17 |