How To Start Perl
시작하기
이 글은 Perl을 배우려고 하는 사람에게 길잡이를 제공하려는 것이다.
Perl을 처음 접하지 않고 과거 Perl을 좀 써봤으며 자신이 짠 제법 긴 Perl legacy코드가 있는 사람은 자신이 만들었던 Perl 코드의 상단 Shebang line 밑에 use strict; 거기다 더 해서 그 아랫줄에 use warnings; 가 없다면 한 번 추가해보자.
#!/usr/bin/perl
use strict;
use warnings;
.
.
.
잘 돌아가던 Perl 프로그램이 불만을 내뱉으며 작동하지 않는가?
그렇다면 당신은 Perl을 다시 배워야 한다.
저 두줄을 추가 한다고 뭐가 달라지냐? 난 Perl문법은 이미 잘 숙지하고 있다고?
좋다 그러면 비교적 간단해 보이는 다음 코드의 결과들을 실행해 보지 않고 정확히 맞출 수 있는가?
$a=4,5,6;
$b=(4,5,6);
@c=4,5,6;
@d=(4,5,6);
(@e,$f,$g)=(1,2,3,4,5,6);
($h,$i,@j)=(1,2,3,4,5,6);
($k,@l,$m)=(1,@d,3);
($o,@p,$q)=(1,(2,3,4),5);
print 3,3;
print (1+2),3;
print "".@d;
print 1+@d;
print @d;
print "@d";
print "1"+"1";
print "1"."1";
애석하지만 이것을 모두 맞추지 못한다면 당신은 Perl을 제대로 배우지 못한 것이다.
Perl을 배우기 위해 필요한 것
- 유연하고 창의적인 사고
- Perl의 모토인 There is more than one way to do it (TIMTOWTD) 에도 드러나듯이 Perl 문법은 자유도가 높다. Perl을 잘 사용하려면 Perl 문법에 맞게 사고의 방식을 바꿔야 한다.
- 자유의지
- Perl은 어떠한 방식을 강요하지 않는다. 모든 선택은 당신에게 달렸다.
- 게을러지고자 하는 욕망
- 정보화사회에서의 미덕은 성실이 아니다. 시스템을 자동화시켜놓고 놀면서 더 생산적인 일에 투자하는 사람이 앞서나간다. Perl은 여기에 적합한 언어다.
- Perl 문화에 익숙해지기
- "문화가 없는 언어는 죽는다."는 Larry Wall의 말처럼 Perl 커뮤니티는 특유의 개방과 공유의 문화가 있다. 언어와 함께 문화를 즐기자.
- 영문문서를 이해할 수 있을 정도의 영어 독해력
- 영어문서를 어느 정도 이해할 수 없다면 어느 순간 벽을 만날 것이다.
Perl을 배우기 좋은 책과 문서
다음은 공개되어 있는 자료들이다. 영문이든 한글이든 이것저것 보지 말고 마음에 드는 것 하나씩 잡아서 다 본 다음 다른 것들을 보는 방식으로 학습하는 것이 좋다. 하나씩 숙달하고 다른 것을 보면 갈수록 학습 속도가 빨라질 것이다.
영문
한글
새로운 스타일의 Perl로 개과천선 하기
위 문서들은 좋은 것들이지만 잘못된 내용을 담고 있는 것도 있고 몇몇 오래된 자료는 옛날 방식을 따르는 부분이 있다. 따라서 다음 사항들은 항상 머릿속에 유념하고 최신의 Perl 방식을 쓰도록 하자.
- use strict; 와 use warnings;를 쓰자
- 모든 Perl프로그램에 use strict;와 use warnings; 프래그마(pragma)를 쓰자. 이것은 프로그램 수행 시 발생할 수 있는 버그 및 에러를 미리 방지해준다. 이것들을 추가해준 후 나오는 에러 및 경고 메시지를 없애려고 코드를 고치다 보면 자연스레 코드가 최신 스타일의 Perl로 바뀔 것이다. 그리고 use warnings; 대신 Shebang line에 #!/usr/bin/perl -w 처럼 -w 옵션을 넣어주는 것은 Perl 5.6 이전의 옛날방식이다. 참고: 링크1, 링크2
- open FH, "file.txt"; 같은 2개의 인자를 받는 open문과 Bareword file handle을 쓰지 말자
- 많은 책과 문서에서 이런 형식으로 파일핸들을 쓰지만 이것은 오래된 옛날 방식이다. 이것은 open my $fh, "<", "file.txt"; 처럼 3개의 인자를 받는 open문과 my로 선언하는 렉시컬 파일핸들을 사용하자. 참고: 링크1,링크2
- 서브루틴을 호출할 때 &test 처럼 &를 붙이지 말자
- 아주 예외적인 경우 &을 쓰는 경우도 있지만 서브루틴 호출시 &를 습관처럼 붙이는 건 옛날방식이다. test() 처럼 호출하자. 참고:링크1
- 기타 추가 참고자료
- Outdated_techniques, Old Perls and new code,Ancient Perl, 최신 스타일 Perl로 개과천선하기
- Perl Best Practices
- 자유도가 높은 Perl문법의 특성상 사용자마다 제각각의 코딩방식을 따를 수 있다. 그리하여 올바른 코딩 가이드라인을 제시해주고자 나온 Perl Best Practices라는 책이 있는데 이 책에서 제시하는 방식을 따르는 것을 추천한다. 이 책의 내용은 너무 방대해서 부담된다면 필수적인 부분만 요약해서 소개하는 PerlBestPractices1.5.pdf에 있는 내용 정도 만이라도 숙지하자. 그리고 한글자료로는 링크를 참조하기 바란다.
- 새로운 Perl OOP로 개과천선하기
- 문서링크
Perl 을 배우면서 부딪치는 장벽
$_
my,local,our,타입글롭(typeglob), 심볼테이블(symbol table)
qq//,q//,qw//,qx// 등
리스트 vs 배열
왜 Perl은 함수 호출시 ()를 붙여도 되고 안 붙여도 될까?
컨텍스트(Context)
- 링크1,링크2,링크3,링크4,링크5
- 스칼라 컨텍스트(Scalar Context)
- 숫자 컨텍스트(Numeric Context)
- 문자 컨텍스트(String Context)
- 불리언 컨텍스트(Boolean Context)
- Don't care 컨텍스트(Don't care Context)
- 리스트 컨텍스트(List Context)
- 보이드 컨텍스트(Void Context)
레퍼런스,디레퍼런스
고수로 가는 길