== [[/반성문]] ==
근 6년 전에 KLDP에서 글타래가 시작됐던 건데, 간만에 본 김에...
원래 시작은 [http://perl.hacker.freeservers.com/ 이 웹페이지]. 보러 가기 귀찮은 분들을 위해 그냥 그대로 퍼 왔음;
"I will not throw paper airplanes in class." 를 500번 쓰는 반성문을...
C로는,
Upload:foxtrox_orig_c.gif
보아하니 [http://www.gocomics.com/foxtrot FoxTrot]이라는 만화의 에피소드 중에 위의 일화가 있었던 듯 한데, 해당 에피소드의 링크는 못 찾았다.
프로그래밍에 대해 전혀 몰라도 "count", "1", "500", 그리고 반성문 문장 등이 적혀 있는 걸로 봐서 짐작할 수 있겠지만, 문장을 한 번 화면에 출력하는 것을 500번 반복수행하는 프로그램.
이걸 [[Perl]]로는,
Upload:foxtrox_perl_code.gif
Perl 코드를 다시 한 줄짜리로
Upload:foxtrox_1_line_perl_code.gif
.
.
그래서 KLDP에서 [http://kldp.org/node/27158 C vs Perl | KLDP]라는 글타래가 올라오고, 많은 사람들이 다양한 프로그래밍 언어로 같은 출력을 하는 프로그램을 작성해서 올렸었다.
그리고 오늘 오전에 그 글타래를 다시 보고나서 재미삼아 하나를 만들어보았음.
{{{#!vim
(
'')=~('('.
'?'.'{'.('`'|'%')
.('['^'-').('`'|('!')).(
'`'|',').'"'.('['^'+').('['^')'
).('`'|')').('`'|'.').('['^'/').(('{')^
'[').'\\'.'"'.('`'^')').('{'^'[').('['^"\,").(
'`'|')').('`'|',').('`'|',').('{'^'[').('`'|'.').('`'|
'/').('['^'/').('{'^'[').('{'^'/').('`'|'(').('['^')').("\`"|
'/').('['^',').('{'^'[').('['^'+').('`'|'!').('['^'+'). ('`'|"\%").(
'['^')').('{'^'[').('`'|'!').('`'|')').('['^')').('[' ^'+').(('`')|
',').('`'|'!').('`'|'.').('`'|'%').('['^'(').('{'^ '[').('`'|')')
.('`'|'.').('{'^'[').('`'|'#').('`'|',').('`' |'!').('['^'(').(
'['^'(').'.'.'\\'.'\\'.('`'|'.').'\\'.'"' .('{'^'[').(('[')^
'#').('{'^'[').('^'^('`'|'+')).('^'^ ('`'|'.')).(('^')^(
'`'|'.')).';'.('!'^'+').('!'^'+' ).'"'.'}'.(')'));$:=
'.'^'~';$~='@'|'(';$^="\)"^ '[';$/='`'|'.';$,='('
^'}';$\='`'|'!';$:=')'^ '}';$~='*'|'`';$^='+'^
'_';$/='&'|'@';$,= '['&'~';$\=','^('|');$:=
'.'^'~';$~='@' |'(';$^=')'^'[';$/=('`')|
'.';$,='(' ^'}';$\='`'|'!';$:=')'^'}'
;($~) ='*'|'`';$^='+'^'_';$/='&'|
'@'; $,='['&'~';$\=','^'|';$:='.'
^'~'; $~='@'|'(';$^=')'^'[';$/="\`"|
"\."; $,='('^'}';$\='`'|'!';$:=')'^"\}";
($~) ="\*"| '`';$^='+'^'_';$/='&'|'@';$,
='[' &"\~"; $\=','^'|';$:='.'^"\~";$~=
"\@"| '(';$^ =')'^'[';$/='`'|'.';$,=
'('^'}';$\= '`'|'!';$:=')'^"\}";
$~="\*"| '`';$^='+'^'_';$/
="\&"| '@';$,='['&'~'
;$\= ','^'|';$:=
'.'^"\~";
$~ ="\@"|
'('; #;#
;#
;#;
#;
#
;#
;#
;#;
}}}
대놓고 반항하는 거랄까... 암튼 저리 생겼어도 엄연한 Perl 코드이고 실행하면 정상적으로 수행된다.
저런 코드를 만들 수 있는 건 일단 Perl의 정규표현식 처리 능력이 훌륭하고 문법이 매우 유연한 것 때문이고...
[[주인장]]의 훌륭한 능력...일 리가 없죠, 당연히. -_-; 사실은 Cpan:Acme::EyeDrops""라는 모듈을 사용하면, 자기가 디자인한 형태로 프로그램을 변환해 줍니다. 저는 단지 저 종이비행기 형태를 텍스트 에디터를 써서 만들어주었을 뿐.
===== Comments & Trackbacks =====
뭐야.. 이건..
: ㅎㅎ 반성문이래니깐~
10 for i=1 to 500 \\
20 print "I will not throw paper airplanes in class." \\
30 next i
: 아아 저 추억의 행번호!!
----
[[주인장분류]]