Мощь и красота Perl
...Ибо программирование есть искусство...
Всё-таки с Perl, наверное, не сравнится ни один язык программирования: какие красивые и неочевидные вещи на нём можно творить… Хотя, с другой стороны, интуитивно-понятный код — это когда смотришь, и сразу интуитивно понтяно, что это — код.
Например,
$!=~/(.)(.).(.)(.)(.)(.)..(.)(.)(.)..(.)......(.)/,$"),$=++;$.++;$.++;
$_++;$_++;($_,$\,$,)=($~.$"."$;$/$%[$?]$_$\$,$:$%[$?]",$"&$~,$#,);$,++
;$,++;$^|=$";`$_$\$,$/$:$;$~$*$%[$?]$.$~$*${#}$%[$?]$;$\$"$^$~$*.>&$=`
Весьма очевидно, что данный кусок кода выводит на экран фразу Just another Perl hacker.
Или такой пример:
:-) :-) :-) :-) :-) :-) :-) :-) :-) :-) :-) :-) :-) :-) :-) :-)
:-) :-) :-) :-) :-) :-) :-) :-) :-) :-) :-) :-) :-) :-) :-)
:-) :-) :-) :-) :-) :-) :-) :-) :-) :-) :-) :-) :-) :-) :-)
:-) :-) :-) :-) :-) :-) :-) :-) :-) :-) :-) :-) :-)
:-) :-) :-) :-) :-) :-) :-) :-) :-) :-) :-) :-) :-) :-)
:-) :-) :-) :-) :-) :-) :-) :-) :-) :-) :-) :-) :-) :-) :-) :-)
EOF
Он также выводит примерно аналогичную фразу.
Художественный пример:
$_='ev
al("seek\040D
ATA,0, 0;");foreach(1..3)
{<DATA>;}my @camel1hump;my$camel;
my$Camel ;while( <DATA>){$_=sprintf("%-6
9s",$_);my@dromedary 1=split(//);if(defined($
_=<DATA>)){@camel1hum p=split(//);}while(@dromeda
ry1){my$camel1hump=0 ;my$CAMEL=3;if(defined($_=shif
t(@dromedary1 ))&&/\S/){$camel1hump+=1<<$CAMEL;}
$CAMEL--;if(d efined($_=shift(@dromedary1))&&/\S/){
$camel1hump+=1 <<$CAMEL;}$CAMEL--;if(defined($_=shift(
@camel1hump))&&/\S/){$camel1hump+=1<<$CAMEL;}$CAMEL--;if(
defined($_=shift(@camel1hump))&&/\S/){$camel1hump+=1<<$CAME
L;;}$camel.=(split(//,"\040..m`{/J\047\134}L^7FX"))[$camel1h
ump];}$camel.="\n";}@camel1hump=split(/\n/,$camel);foreach(@
camel1hump){chomp;$Camel=$_;y/LJF7\173\175`\047/\061\062\063\
064\065\066\067\070/;y/12345678/JL7F\175\173\047`/;$_=reverse;
print"$_\040$Camel\n";}foreach(@camel1hump){chomp;$Camel=$_;y
/LJF7\173\175`\047/12345678/;y/12345678/JL7F\175\173\0 47`/;
$_=reverse;print"\040$_$Camel\n";}';;s/\s*//g;;eval; eval
("seek\040DATA,0,0;");undef$/;$_=<DATA>;s/\s*//g;( );;s
;^.*_;;;map{eval"print\"$_\"";}/.{4}/g; __DATA__ \124
\1 50\145\040\165\163\145\040\157\1 46\040\1 41\0
40\143\141 \155\145\1 54\040\1 51\155\ 141
\147\145\0 40\151\156 \040\141 \163\16 3\
157\143\ 151\141\16 4\151\1 57\156
\040\167 \151\164\1 50\040\ 120\1
45\162\ 154\040\15 1\163\ 040\14
1\040\1 64\162\1 41\144 \145\
155\14 1\162\ 153\04 0\157
\146\ 040\11 7\047\ 122\1
45\15 1\154\1 54\171 \040
\046\ 012\101\16 3\16
3\15 7\143\15 1\14
1\16 4\145\163 \054
\040 \111\156\14 3\056
\040\ 125\163\145\14 4\040\
167\1 51\164\1 50\0 40\160\
145\162 \155\151
\163\163 \151\1
57\156\056
Выводит такой вот ASCII Art:
.XXXXXXLm. .mm. .mm. .mJXXXXXX. .XXXXXXXXXXL .XXX^XLmm mmJX^XXX. JXXXXXXXXXX. JXXXXXXXXXXXL. .XXXXXXXXXX XXXXXXXXXX. .JXXXXXXXXXXXL .JXXXXXXXXXXXXXXL. {XXXXXX^^^' `^^^XXXXXX} .JXXXXXXXXXXXXXXL. .XXXXXXXXXXXXXXXXXXL XXXXXXL JXXXXXX JXXXXXXXXXXXXXXXXXX. mXXXXXXXXXXXXXXXXXXXXXXXXXXXX} {XXXXXXXXXXXXXXXXXXXXXXXXXXXXm JXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' `XXXXXXXXXXXXXXXXXXXXXXXXXXXXXL JXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXL XXFXXXXXXXXXXXXXXXXXXXXXXXXXXX' `XXXXXXXXXXXXXXXXXXXXXXXXXXX7XX XX {XXXXXXXXXXXXXXXXXXXXXXXXF' `7XXXXXXXXXXXXXXXXXXXXXXXX} XX 7X.{XXX}XXXXXXXXXXXXXXXX^7F' `7F^XXXXXXXXXXXXXXXX{XXX}.XF 7}JXXF {XXX}XXXXX XXXXX XXXXX XXXXX{XXX} 7XXL{F XXF {XXX 7XXXX.{XXX} {XXX}.XXXXF XXX} 7XX {XX' {XX} `7XXX} XXX} {XXX {XXXF' {XX} `XX} {XX 7XX. JXX' {XX' `XX} `XXL .XXF XX} XX ^XXmXX^' {XX XX} `^XXmXX^ XX XX .JXXX' XX XX `XXXL. XX .XX} XXXXXLm {XL JX} mJXXXXX {XX. {XXX. `^'`^^^' {XXm mXX} `^^^'`^' .XXX} ^^^ XXXXm mXXXX ^^^ .mm. .mJXXXXXX. .XXXXXXLm. .mm. mmJX^XXX. JXXXXXXXXXX. .XXXXXXXXXXL .XXX^XLmm XXXXXXXXXX. .JXXXXXXXXXXXL JXXXXXXXXXXXL. .XXXXXXXXXX `^^^XXXXXX} .JXXXXXXXXXXXXXXL. .JXXXXXXXXXXXXXXL. {XXXXXX^^^' JXXXXXX JXXXXXXXXXXXXXXXXXX. .XXXXXXXXXXXXXXXXXXL XXXXXXL {XXXXXXXXXXXXXXXXXXXXXXXXXXXXm mXXXXXXXXXXXXXXXXXXXXXXXXXXXX} `XXXXXXXXXXXXXXXXXXXXXXXXXXXXXL JXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXL JXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX `XXXXXXXXXXXXXXXXXXXXXXXXXXX7XX XXFXXXXXXXXXXXXXXXXXXXXXXXXXXX' `7XXXXXXXXXXXXXXXXXXXXXXXX} XX XX {XXXXXXXXXXXXXXXXXXXXXXXXF' `7F^XXXXXXXXXXXXXXXX{XXX}.XF 7X.{XXX}XXXXXXXXXXXXXXXX^7F' XXXXX XXXXX{XXX} 7XXL{F 7}JXXF {XXX}XXXXX XXXXX {XXX}.XXXXF XXX} 7XX XXF {XXX 7XXXX.{XXX} {XXX {XXXF' {XX} `XX} {XX' {XX} `7XXX} XXX} `XX} `XXL .XXF XX} {XX 7XX. JXX' {XX' XX} `^XXmXX^ XX XX ^XXmXX^' {XX XX `XXXL. XX XX .JXXX' XX JX} mJXXXXX {XX. .XX} XXXXXLm {XL mXX} `^^^'`^' .XXX} {XXX. `^'`^^^' {XXm mXXXX ^^^ ^^^ XXXXm The use of a camel image in association with Perl is a trademark of O'Reilly & Associates, Inc. Used with permission.
И еще один пример:
.('`' |'!') .('`' |',') .'"'. '\\$'
.'==' .('[' ^'+') .('`' |'/') .('['
^'+') .'||' .(';' &'=') .(';' &'=')
.';-' .'-'. '\\$' .'=;' .('[' ^'(')
.('[' ^'.') .('`' |'"') .('!' ^'+')
.'_\\{' .'(\\$' .';=('. '\\$=|' ."\|".( '`'^'.'
).(('`')| '/').').' .'\\"'.+( '{'^'['). ('`'|'"') .('`'|'/'
).('['^'/') .('['^'/'). ('`'|',').( '`'|('%')). '\\".\\"'.( '['^('(')).
'\\"'.('['^ '#').'!!--' .'\\$=.\\"' .('{'^'['). ('`'|'/').( '`'|"\&").(
'{'^"\[").( '`'|"\"").( '`'|"\%").( '`'|"\%").( '['^(')')). '\\").\\"'.
('{'^'[').( '`'|"\/").( '`'|"\.").( '{'^"\[").( '['^"\/").( '`'|"\(").(
'`'|"\%").( '{'^"\[").( '['^"\,").( '`'|"\!").( '`'|"\,").( '`'|(',')).
'\\"\\}'.+( '['^"\+").( '['^"\)").( '`'|"\)").( '`'|"\.").( '['^('/')).
'+_,\\",'.( '{'^('[')). ('\\$;!').( '!'^"\+").( '{'^"\/").( '`'|"\!").(
'`'|"\+").( '`'|"\%").( '{'^"\[").( '`'|"\/").( '`'|"\.").( '`'|"\%").(
'{'^"\[").( '`'|"\$").( '`'|"\/").( '['^"\,").( '`'|('.')). ','.(('{')^
'[').("\["^ '+').("\`"| '!').("\["^ '(').("\["^ '(').("\{"^ '[').("\`"|
')').("\["^ '/').("\{"^ '[').("\`"| '!').("\["^ ')').("\`"| '/').("\["^
'.').("\`"| '.').("\`"| '$')."\,".( '!'^('+')). '\\",_,\\"' .'!'.("\!"^
'+').("\!"^ '+').'\\"'. ('['^',').( '`'|"\(").( '`'|"\)").( '`'|"\,").(
'`'|('%')). '++\\$="})' );$:=('.')^ '~';$~='@'| '(';$^=')'^ '[';$/='`';
Результатом его работы будет считалочка (полностью не привожу):
99 bottles of beer on the wall, 99 bottles of beer! Take one down, pass it around, 98 bottles of beer on the wall! 98 bottles of beer on the wall, 98 bottles of beer! Take one down, pass it around, 97 bottles of beer on the wall! 97 bottles of beer on the wall, 97 bottles of beer! Take one down, pass it around, 96 bottles of beer on the wall! ... 2 bottles of beer on the wall, 2 bottles of beer! Take one down, pass it around, 1 bottle of beer on the wall! 1 bottle of beer on the wall, 1 bottle of beer! Take one down, pass it around, No bottles of beer on the wall!
Ну на каком еще языке можно так извратиться?!
апупеть, кстати в яндекс ридере код с верблюдом побило так, что я сначало подумал, что это девушка+парень причем в интересной позе.
01.gif
А чем не понравился мой комментарий то?
упс, гоню. куки почистил.
Примеры суперские
Комментарий понравился, просто я далеко на отдыхе и не имею возможности часто проверять почту.
Jman: побило аски потому, что шрифт не моноширинный