태그:
새태그
, 모든 태그

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)

레퍼런스,디레퍼런스

고수로 가는 길

TopicForm
TopicType HowTo
SubjectArea

Summary 펄에 뛰어드는 방법
Topic revision: r30 - 24 Jul 2010 - 12:09:23 - AeRo
 
This site is powered by the TWiki collaboration platformCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback