목록개발자 이야기/Perl (52)
동글동글 라이프
군생활에서 나의 보직은 다른 사람들에 비해 조금 특화된 보직이었다. 군대에서 여러 능력을 배우는 중, 모스부호도 익히게 되었는데 처음에는 듣는것을 바로바로 해석하기에 급급했던 모스 부호였지만 익숙해 지고 나서는 모스부호로 동기들과 서로 대화도 하고 재밌게 지냈던 기억이 난다. 그때의 추억을 되살려 프로그래밍에서는 모스부호를 어떻게 다룰 수 있는지, 모스 부호에 대해서 간단한 포스팅을 해 보겠다. - 모스부호란? 짧은 전류(.)과 발신 전류(-)을 적절히 조합하여 알파벳과 숫자를 표기한 것으로, 미국의 발명가 새무얼 필리 브리즈 모스가 고안했다. - 모스부호 코드 (Alphabet) 한글도 있지만 일단 로마자만... - 모스부호의 사용 모스부호를 사용한 대중적인 작품들이 상당히 많지만 최근에 나온 영화 몇..
예전 악성코드 분석을 한창 할 때 IRC 봇을 보고 난 뒤... 언젠가 한번 만들어 봐야지... 생각했던 때가 있었다. 전에 C언어로 구현하려다 귀찮아서 손 놓고 있다가 Perl을 시작하자 말자 IRC BOT을 다루는 JEEN님을 만나 내공 습득! 즐겁게 Bot을 만들며 Perl공부를 했었다. irc.freenode.org 의 #Perl-kr 방에는 여러 봇들이 각각의 몫을 하고 있으며, 대표적인 것으로 hanirc.org 의 #perl 방과 연결을 시켜 주는 것과 코드패드 생성, 영어사전 , IRC 로그를 확인하는 명령들이 있다. cpan에 IRC 모듈을 검색해 보면 대부분 POE::Component::IRC 모듈만 나온다. POE::Component::IRCa fully event-driven IRC..
- Hash 사용되는 키(Key) 와 값(value)을 가지는 구조인 hash는 Perl에서 아래와 같이 구성된다. 1 2 3 4 5 6 7 8 9 10 11 12 13 use strict; my %hash1 = ( a => 1, b => 1, c => 2 ); my %hash2 = ( 'a' , 1, 'b' , 1, 'c' , 2 ); print "Print hash1\n"; print "$_ = $hash1{$_} \n",for(keys %hash1); print "Print hash2\n"; print "$_ = $hash2{$_} \n",for(keys %hash2); Output: 1 2 3 4 5 6 7 8 Print hash1 c = 2 a = 1 b = 1 Print hash2 c = 2 ..
발단은 ... 웹 페이지에 아파치 기본인증이 걸려 있을 때, 코드상으로 어떻게 접근할 것인가? 에 대해서 이야기가 시작되었다. 내가 생각한 방법은 HTTP::Request 모듈을 사용하여 header에 베이직 인증을 포함시키는 방법이었다. my $request=HTTP::Request->new(GET=>'http://irc.perlog.org'); my $ua=LWP::UserAgent->new; $request->header( 'Authorization'=>'Basic id::pw', ); 그리 나쁘지는 않은 방법이었지만 뭔가 찝찝한 기분이 들어 커뮤니티에 던져 보았더니 역시 keedi님의 코드... 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 ..
정규 표현식 완전 이해와 실습에서는 perl 에 관련된 정규 표현식을 이렇게 소개하고 있다. " 프로그래밍 언어로서 정규 표현식의 대표 주자라고 할 수 있는 perl 언어에서의 정규표현식을 알아본다. Perl 에서는 정규 표현식과 관련된 연산자가 4개밖에 없지만 수많은 옵션과 특수 상황에 따라 다양한 방법으로 프로그램을 만들 수 있다. 물론, 그에 따른 문제가 생길 수 있는 경우도 많이 있다. Perl 은 개념을 프로그램으로 빠르게 구현 할 수 있기 때문에 경험이 부족한 초보자들에게는 자원의 보고 라고 할 수 있다. " 이 책에서는 perl 뿐만이 아니라 자바 및 닷넷 그 이외의 정규식에 대해서도 소개했지만, 처음은 perl을 사용한 정규식으로 글이 쓰였고, 대부분의 예제가 perl로 작성되었다.. 소개..
홈런랠리라는 플래시게임이 있다. 이 게임은 투수가 공을 던지면 그 공을 받아 치면 되는 게임으로써 http://www.mkgm.co.kr/bbs/board.php?bo_table=flash_game&wr_id=250&page=15 여기에 가면 직접 게임을 해 볼 수 있다. 게임을 하던중 생각했다. GuiTest를 사용하면 치트키처럼 다 홈런을 칠 수 있지 않을까? +_+ 그래서 일정한 간격으로 마우스를 좌로 우로 움직이며 클릭을 해주는 코드를 짠 뒤 테스트를 했다... 젠장.....
얼마전 cpan에서 테트리스게임을 구현한 코드를 발견하였다. yewenbin이란 중국사람이 만들었는데 멋지다. 소스 코드를 다운받아서 분석하던 중 ( perl은 소스코드를 바로 확인할 수 있어 좋은듯 ) Goo::Canvas 라는 모듈을 발견하고 이게 뭘까?? cpan에서 검색해 보았다. Goo::CanvasPerl interface to the GooCanvas Goo-Canvas-0.05 - 29 Mar 2008 - 叶文彬 오옷!! Gtk+ 를 사용하여 자동으로 그림을 그려주는 모듈인데 재밌는 기능이 많은듯 +_+ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 my $canvas = Goo::Canvas->new(); $canvas->set_size_request(450, 280);..
perl로 연결리스트를 한번 구현해 보자. 연결리스트가 어떤것인지 궁금하다면... 위키디피아의 연결리스트를 보시기 바란다. http://ko.wikipedia.org/wiki/연결_리스트 그래도 잘 모르겠다는 분들을 위해서 간단히 정리해 보았다. 연결 리스트 - 연쇄적으로 연결된 원소로 이루어진 자료구조 데이터들이 쭉~~~ 연결되어있는 구조를 이야기한다. 지나가던 행인1 : 배열도 쭉~ 연결되어 있잖아? 죄송.. 설명이 시원찮아서...... 일단 밑의 그림을 보시라... 위의 그림으로 설명하자면... 데이터( data ) 뒤에 다음 데이터를 가르키는 주소( next )가 담겨져 있다. 다음 데이터를 추가하고 싶을때는 데이터와 다음주소값을 가르키는 값을 하나 더 생성한뒤 이 전의 주소와 연결만 시켜주면 계..
재귀(再歸)란? 원래 자리로 되돌아오거나 되돌아옴을 뜻하는 명사이다. 처음있던곳으로 계속 돌아온다는 뜻을 가진 이 단어는 프로그래밍에서 재귀용법이라는 알고리즘으로 프로그래머들을 때로는 탄성으로, 때로는 경악으로 몰고가는 알고리즘들 중 하나에 속한다. 재귀적 표현을 프로그래밍으로 그대로 옮겨놓은 것이 재귀함수(recursive function) 인데 이것은 자기자신을 계속적으로 호출하는 함수를 뜻하며 2가지 방법론이 제시된다. - 함수안에서 자기자신을 직접 호출하는 방법 - 두개의 함수가 상호 호출하는 방법 왠만하면 한큐에 끝낼 수 있는 자기자신을 직접 호출하는 방법이 더 좋다. 재귀용법은 일반적인 프로그래밍에서도 많이 응용이 되는데... 예를들어 지뢰찾기의 어떤 블럭을 클릭했을때 주변에 빈블럭이 있다면 ..
Perl로 배우는 알고리즘에서 좋은 내용을 발췌한다. 이진 탐색은 옛부터 알려진 탐색 방법중의 하나이며 어떠한 데이터를 우리가 원하는 테이블에서 검색을 할 때. 순차적으로 검색을 하는 것보다 더 효율적으로 반씩 끊어가면서 탐색을 하는 알고리즘을 이야기한다. 뜬구름 잡는 이야기 같아 죄송하지만... 실제코드부터 먼저 보기로 하자. 1 2 3 4 5 6 7 8 9 10 11 sub binary_search{ my ($array,$word) = @_; my ($low,$high) = (0, @$array -1); while( $low [$try] lt $word; $high = $try-1, next if $array->[$try] gt $word; return $try; # 값을 찾았을 때 해당 값 리턴 }..