Dec 10, 2011
Hokkaido.pm #6 LT
id:sugyan
my $profile = +{ id => 'sugyan', name => 'すぎゃーん', age => 0x1C, lang => ['Perl', 'Node.js'], };
my $profile = +{ id => 'sugyan', name => 'すぎゃーん', age => 0x1C, lang => ['Perl', 'Node.js'], }; # TODAY $profile->{age}++;
'' =~(('('). ((''=='').( '')^'~'^'.'^( '^')).((''=='') .''^')'^'='^'^') .('^'^'.'^('=')^ '(').('^'^'(').(( '~')^'.'^(''==''). '').('='^')'^('~')^ '('^'.').('='^(''=='') .''^'.').('^'^'.').('='^( '~' )^(''=='').'').('('^'^'^'.'^(( ('') )=='').'').((''=='').''^')'^'^'^( '(')). ('~'^(''=='').''^'.'^'='^'(').('~'^'^').('=' ^'.'^( '~')^(''=='').'').('.'^'='^(''=='').'').('~'^ (''=='') .''^')'^'.').('.'^'^'^'('^'=').('='^'.'^')'^'~'^'(').(')' ^'='^'~'^'('^'.').('^'^(''=='').'').('='^'^'^'~'^(''=='') .'').('~'^'^').('.'^(''=='').''^')'^'~').((''=='').''^('^')).( '('^'='^'~').('~'^'('^'=').((''=='').''^'.'^'~').('('^'^'^'.'^('' =='').'').(')'^'='^'.'^'^').((''=='').''^'^').('.').('.'^('^')).( '=' ^'.'^'~').('('^')'^'^'^'~').('('^'='^'.'^(''=='').'').('='^'.'^('' =='') .''^'~').((''=='').''^'='^'.').('.'^'='^'(').('.'^'('^'^'^'=').('('^'~'^( '.')).('.'^'^'^(''=='').''^'(').('~'^'.'^(''=='').''^'('^'=').((''=='' ). ''^'='^'.').('('^'='^(''=='').''^'.').('='^(''=='').''^'('^'.').((( '')=='' ) .''^'('^'.'^'=').('='^'('^(''=='').''^'.').('='^'.'^'('^(''=='' ).'').('('^'.'^(''=='').''^'=').('('^'.'^'='^(''=='').'').('='^(''=='').( '' )^'.'^'(').((''=='').''^'.'^'('^'=').((''=='').''^'.'^'('^'=').( '='^(( '')=='').''^'('^'.').('='^(''=='').''^'.'^'(').((''=='').'' ^'.'^'('^'=').('='^'.'^'('^(''=='').'').('('^'.'^'='^(('' )=='').'').('='^'.'^'('^(''=='').'').('('^'='^(''=='').( '')^'.').('.'^(''=='').''^'='^'(').('('^'.'^'='^(''=='').( '')).('='^'.'^(''=='').''^'(').('('^'='^'.'^(''=='').'').('.' ^'('^'='^(''=='').'').(('.')^ '='^(''=='').''^'(').('.'^ '='^'('^(('' )=='').'') .('('^(''=='').''^'=' ^('.')).( ('.')^ '('^'='^(''==''). '').('='^ (( '')=='').''^'.' ^'(').('='^( '(')^'.'^(( '')=='').'').('(' ^('' =='').''^'='^'.') .('^'^'~').(('~')^ '^').('.'^')'^'^'^ (''=='').''^'='^'(' ).(')').(( '') ).''.''. ''.(''). ''.'')
$ ls Hokkaido.pm $ perl -e 'use Hokkaido' Hello, Hokkaido.pm! $ perl -MHokkaido Hello, Hokkaido.pm!
extended regular expression
''=~/(?{print "hoge\n"})/
extended regular expression
''=~('(?{'.'print "hoge\n"'.'})')
extended regular expression
''=~('(?{'.'print "hoge\n"'.'})')
XOR operator
A | B | A^B |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
XOR operator
+ ("\x2b") |
0b00101010 |
|
[ ("\x5b") |
0b01011010 |
|
^ | p ("\x70") |
0b01110000 |
XOR operator
print('p');
equals:
print('+'^'[');
XOR operator
print('print');
equals:
print('+)).)'^'[[@@]');
XOR operator
''=~('(?{'.'print "hoge\n"'.'})')
equals:
''=~('(?{'.( '+)).)@^(/:%!.^'^'[[@@]`|@@]@}@|' ).'})')
my %table = ( "\x00" => ('='^'='), "\x01" => ('('^')'), "\x02" => ('='^'='^'='^'~'^'^'^'.'^((''=='').'')), "\x03" => ('='^'~'^'('^')'^'^'^'.'^((''=='').'')), "\x04" => ('='^'='^'='^'~'^'('^'^'^((''=='').'')), "\x05" => ('='^'='^'='^'~'^')'^'^'^((''=='').'')), "\x06" => ('('^'.'), "\x07" => (')'^'.'), "\x08" => ('~'^'('^'^'), "\x09" => ('~'^')'^'^'), "\x0A" => ('='^'='^'='^'('^'.'^((''=='').'')), "\x0B" => ('='^'='^'='^')'^'.'^((''=='').'')), "\x0C" => ('='^'='^'='^'='^'='^((''=='').'')), "\x0D" => ('='^'='^'='^'('^')'^((''=='').'')), "\x0E" => ('~'^'^'^'.'), "\x0F" => ('~'^'('^')'^'^'^'.'), "\x10" => ('='^'='^'~'^'('^')'^'^'^((''=='').'')), "\x11" => ('='^'='^'='^'='^'~'^'^'^((''=='').'')), "\x12" => ('='^'('^')'^'.'), "\x13" => ('='^'.'), "\x14" => ('='^')'), "\x15" => ('='^'('), "\x16" => ('='^'='^'~'^')'^'^'^'.'^((''=='').'')), "\x17" => ('='^'='^'~'^'('^'^'^'.'^((''=='').'')), "\x18" => ('='^'='^'='^'='^')'^((''=='').'')), "\x19" => ('='^'='^'='^'='^'('^((''=='').'')), "\x1A" => ('='^'~'^')'^'^'^'.'), "\x1B" => ('='^'~'^'('^'^'^'.'), "\x1C" => ('='^'~'^'('^')'^'^'), "\x1D" => ('='^'~'^'^'), "\x1E" => ('='^'='^'('^')'^'.'^((''=='').'')), "\x1F" => ('='^'='^'='^'='^'.'^((''=='').'')), "\x20" => ('~'^'^'), "\x21" => ('~'^'('^')'^'^'), "\x22" => ('='^'='^'='^'='^'='^'.'^((''=='').'')), "\x23" => ('='^'='^'='^'('^')'^'.'^((''=='').'')), "\x24" => ('='^'='^'='^'='^'='^'('^((''=='').'')), "\x25" => ('='^'='^'='^'='^'='^')'^((''=='').'')), "\x26" => ('~'^'('^'^'^'.'), "\x27" => ('~'^')'^'^'^'.'), "\x28" => ('('), "\x29" => (')'), "\x2A" => ('='^'~'^'('^'^'^'.'^((''=='').'')), "\x2B" => ('='^'~'^')'^'^'^'.'^((''=='').'')), "\x2C" => ('='^'='^'='^'~'^'^'^((''=='').'')), "\x2D" => ('='^'~'^'('^')'^'^'^((''=='').'')), "\x2E" => ('.'), "\x2F" => ('('^')'^'.'), "\x30" => ('='^'='^'='^'='^'('^')'^((''=='').'')), "\x31" => ('='^'='^'='^'='^'='^'='^((''=='').'')), "\x32" => ('='^'~'^'('^')'^'^'^'.'), "\x33" => ('='^'~'^'^'^'.'), "\x34" => ('='^'~'^')'^'^'), "\x35" => ('='^'~'^'('^'^'), "\x36" => ('='^'='^'='^'='^')'^'.'^((''=='').'')), "\x37" => ('='^'='^'='^'='^'('^'.'^((''=='').'')), "\x38" => ('='^'='^'~'^')'^'^'^((''=='').'')), "\x39" => ('='^'='^'~'^'('^'^'^((''=='').'')), "\x3A" => ('='^')'^'.'), "\x3B" => ('='^'('^'.'), "\x3C" => ('='^'('^')'), "\x3D" => ('='), "\x3E" => ('~'^'('^')'^'^'^'.'^((''=='').'')), "\x3F" => ('='^'='^'~'^'^'^'.'^((''=='').'')), "\x40" => ('='^'='^'('^')'^'^'^'.'^((''=='').'')), "\x41" => ('='^'='^'='^'='^'^'^'.'^((''=='').'')), "\x42" => ('='^'~'^'('^')'), "\x43" => ('='^'~'), "\x44" => ('='^'~'^')'^'.'), "\x45" => ('='^'~'^'('^'.'), "\x46" => ('='^'='^'='^'='^')'^'^'^((''=='').'')), "\x47" => ('='^'='^'='^'='^'('^'^'^((''=='').'')), "\x48" => ('='^'='^'~'^')'^'.'^((''=='').'')), "\x49" => ('='^'='^'~'^'('^'.'^((''=='').'')), "\x4A" => ('='^')'^'^'), "\x4B" => ('='^'('^'^'), "\x4C" => ('='^'('^')'^'^'^'.'), "\x4D" => ('='^'^'^'.'), "\x4E" => ('='^'='^'~'^'('^')'^((''=='').'')), "\x4F" => ('='^'='^'='^'='^'~'^((''=='').'')), "\x50" => ('~'^'.'), "\x51" => ('~'^'('^')'^'.'), "\x52" => ('='^'='^'='^'='^'='^'^'^((''=='').'')), "\x53" => ('='^'='^'='^'('^')'^'^'^((''=='').'')), "\x54" => ('='^'='^'='^'('^'^'^'.'^((''=='').'')), "\x55" => ('='^'='^'='^')'^'^'^'.'^((''=='').'')), "\x56" => ('~'^'('), "\x57" => ('~'^')'), "\x58" => ('('^'^'^'.'), "\x59" => (')'^'^'^'.'), "\x5A" => ('='^'='^'='^'~'^'('^((''=='').'')), "\x5B" => ('='^'='^'='^'~'^')'^((''=='').'')), "\x5C" => ('='^'='^'='^'~'^'.'^((''=='').'')), "\x5D" => ('='^'~'^'('^')'^'.'^((''=='').'')), "\x5E" => ('^'), "\x5F" => ('('^')'^'^'), "\x60" => ('='^'='^'~'^'('^')'^'.'^((''=='').'')), "\x61" => ('='^'='^'='^'='^'~'^'.'^((''=='').'')), "\x62" => ('='^'('^')'^'^'), "\x63" => ('='^'^'), "\x64" => ('='^')'^'^'^'.'), "\x65" => ('='^'('^'^'^'.'), "\x66" => ('='^'='^'='^'='^'~'^')'^((''=='').'')), "\x67" => ('='^'='^'='^'='^'~'^'('^((''=='').'')), "\x68" => ('='^'='^')'^'^'^'.'^((''=='').'')), "\x69" => ('='^'='^'('^'^'^'.'^((''=='').'')), "\x6A" => ('='^'~'^')'), "\x6B" => ('='^'~'^'('), "\x6C" => ('='^'~'^'('^')'^'.'), "\x6D" => ('='^'~'^'.'), "\x6E" => ('='^'='^'('^')'^'^'^((''=='').'')), "\x6F" => ('='^'='^'='^'='^'^'^((''=='').'')), "\x70" => ('^'^'.'), "\x71" => ('('^')'^'^'^'.'), "\x72" => ('='^'='^'='^'='^'='^'~'^((''=='').'')), "\x73" => ('='^'='^'='^'~'^'('^')'^((''=='').'')), "\x74" => ('='^'='^'='^'~'^'('^'.'^((''=='').'')), "\x75" => ('='^'='^'='^'~'^')'^'.'^((''=='').'')), "\x76" => ('('^'^'), "\x77" => (')'^'^'), "\x78" => ('~'^'('^'.'), "\x79" => ('~'^')'^'.'), "\x7A" => ('='^'='^'='^'('^'^'^((''=='').'')), "\x7B" => ('='^'='^'='^')'^'^'^((''=='').'')), "\x7C" => ('='^'='^'='^'^'^'.'^((''=='').'')), "\x7D" => ('='^'('^')'^'^'^'.'^((''=='').'')), "\x7E" => ('~'), "\x7F" => ('~'^'('^')'), "\x80" => ~('~'^'('^')'), "\x81" => ~('~'), "\x82" => ~('='^'('^')'^'^'^'.'^((''=='').'')), "\x83" => ~('='^'='^'='^'^'^'.'^((''=='').'')), "\x84" => ~('='^'='^'='^')'^'^'^((''=='').'')), "\x85" => ~('='^'='^'='^'('^'^'^((''=='').'')), "\x86" => ~('~'^')'^'.'), "\x87" => ~('~'^'('^'.'), "\x88" => ~(')'^'^'), "\x89" => ~('('^'^'), "\x8A" => ~('='^'='^'='^'~'^')'^'.'^((''=='').'')), "\x8B" => ~('='^'='^'='^'~'^'('^'.'^((''=='').'')), "\x8C" => ~('='^'='^'='^'~'^'('^')'^((''=='').'')), "\x8D" => ~('='^'='^'='^'='^'='^'~'^((''=='').'')), "\x8E" => ~('('^')'^'^'^'.'), "\x8F" => ~('^'^'.'), "\x90" => ~('='^'='^'='^'='^'^'^((''=='').'')), "\x91" => ~('='^'='^'('^')'^'^'^((''=='').'')), "\x92" => ~('='^'~'^'.'), "\x93" => ~('='^'~'^'('^')'^'.'), "\x94" => ~('='^'~'^'('), "\x95" => ~('='^'~'^')'), "\x96" => ~('='^'='^'('^'^'^'.'^((''=='').'')), "\x97" => ~('='^'='^')'^'^'^'.'^((''=='').'')), "\x98" => ~('='^'='^'='^'='^'~'^'('^((''=='').'')), "\x99" => ~('='^'='^'='^'='^'~'^')'^((''=='').'')), "\x9A" => ~('='^'('^'^'^'.'), "\x9B" => ~('='^')'^'^'^'.'), "\x9C" => ~('='^'^'), "\x9D" => ~('='^'('^')'^'^'), "\x9E" => ~('='^'='^'='^'='^'~'^'.'^((''=='').'')), "\x9F" => ~('='^'='^'~'^'('^')'^'.'^((''=='').'')), "\xA0" => ~('('^')'^'^'), "\xA1" => ~('^'), "\xA2" => ~('='^'~'^'('^')'^'.'^((''=='').'')), "\xA3" => ~('='^'='^'='^'~'^'.'^((''=='').'')), "\xA4" => ~('='^'='^'='^'~'^')'^((''=='').'')), "\xA5" => ~('='^'='^'='^'~'^'('^((''=='').'')), "\xA6" => ~(')'^'^'^'.'), "\xA7" => ~('('^'^'^'.'), "\xA8" => ~('~'^')'), "\xA9" => ~('~'^'('), "\xAA" => ~('='^'='^'='^')'^'^'^'.'^((''=='').'')), "\xAB" => ~('='^'='^'='^'('^'^'^'.'^((''=='').'')), "\xAC" => ~('='^'='^'='^'('^')'^'^'^((''=='').'')), "\xAD" => ~('='^'='^'='^'='^'='^'^'^((''=='').'')), "\xAE" => ~('~'^'('^')'^'.'), "\xAF" => ~('~'^'.'), "\xB0" => ~('='^'='^'='^'='^'~'^((''=='').'')), "\xB1" => ~('='^'='^'~'^'('^')'^((''=='').'')), "\xB2" => ~('='^'^'^'.'), "\xB3" => ~('='^'('^')'^'^'^'.'), "\xB4" => ~('='^'('^'^'), "\xB5" => ~('='^')'^'^'), "\xB6" => ~('='^'='^'~'^'('^'.'^((''=='').'')), "\xB7" => ~('='^'='^'~'^')'^'.'^((''=='').'')), "\xB8" => ~('='^'='^'='^'='^'('^'^'^((''=='').'')), "\xB9" => ~('='^'='^'='^'='^')'^'^'^((''=='').'')), "\xBA" => ~('='^'~'^'('^'.'), "\xBB" => ~('='^'~'^')'^'.'), "\xBC" => ~('='^'~'), "\xBD" => ~('='^'~'^'('^')'), "\xBE" => ~('='^'='^'='^'='^'^'^'.'^((''=='').'')), "\xBF" => ~('='^'='^'('^')'^'^'^'.'^((''=='').'')), "\xC0" => ~('='^'='^'~'^'^'^'.'^((''=='').'')), "\xC1" => ~('~'^'('^')'^'^'^'.'^((''=='').'')), "\xC2" => ~('='), "\xC3" => ~('='^'('^')'), "\xC4" => ~('='^'('^'.'), "\xC5" => ~('='^')'^'.'), "\xC6" => ~('='^'='^'~'^'('^'^'^((''=='').'')), "\xC7" => ~('='^'='^'~'^')'^'^'^((''=='').'')), "\xC8" => ~('='^'='^'='^'='^'('^'.'^((''=='').'')), "\xC9" => ~('='^'='^'='^'='^')'^'.'^((''=='').'')), "\xCA" => ~('='^'~'^'('^'^'), "\xCB" => ~('='^'~'^')'^'^'), "\xCC" => ~('='^'~'^'^'^'.'), "\xCD" => ~('='^'~'^'('^')'^'^'^'.'), "\xCE" => ~('='^'='^'='^'='^'='^'='^((''=='').'')), "\xCF" => ~('='^'='^'='^'='^'('^')'^((''=='').'')), "\xD0" => ~('('^')'^'.'), "\xD1" => ~('.'), "\xD2" => ~('='^'~'^'('^')'^'^'^((''=='').'')), "\xD3" => ~('='^'='^'='^'~'^'^'^((''=='').'')), "\xD4" => ~('='^'~'^')'^'^'^'.'^((''=='').'')), "\xD5" => ~('='^'~'^'('^'^'^'.'^((''=='').'')), "\xD6" => ~(')'), "\xD7" => ~('('), "\xD8" => ~('~'^')'^'^'^'.'), "\xD9" => ~('~'^'('^'^'^'.'), "\xDA" => ~('='^'='^'='^'='^'='^')'^((''=='').'')), "\xDB" => ~('='^'='^'='^'='^'='^'('^((''=='').'')), "\xDC" => ~('='^'='^'='^'('^')'^'.'^((''=='').'')), "\xDD" => ~('='^'='^'='^'='^'='^'.'^((''=='').'')), "\xDE" => ~('~'^'('^')'^'^'), "\xDF" => ~('~'^'^'), "\xE0" => ~('='^'='^'='^'='^'.'^((''=='').'')), "\xE1" => ~('='^'='^'('^')'^'.'^((''=='').'')), "\xE2" => ~('='^'~'^'^'), "\xE3" => ~('='^'~'^'('^')'^'^'), "\xE4" => ~('='^'~'^'('^'^'^'.'), "\xE5" => ~('='^'~'^')'^'^'^'.'), "\xE6" => ~('='^'='^'='^'='^'('^((''=='').'')), "\xE7" => ~('='^'='^'='^'='^')'^((''=='').'')), "\xE8" => ~('='^'='^'~'^'('^'^'^'.'^((''=='').'')), "\xE9" => ~('='^'='^'~'^')'^'^'^'.'^((''=='').'')), "\xEA" => ~('='^'('), "\xEB" => ~('='^')'), "\xEC" => ~('='^'.'), "\xED" => ~('='^'('^')'^'.'), "\xEE" => ~('='^'='^'='^'='^'~'^'^'^((''=='').'')), "\xEF" => ~('='^'='^'~'^'('^')'^'^'^((''=='').'')), "\xF0" => ~('~'^'('^')'^'^'^'.'), "\xF1" => ~('~'^'^'^'.'), "\xF2" => ~('='^'='^'='^'('^')'^((''=='').'')), "\xF3" => ~('='^'='^'='^'='^'='^((''=='').'')), "\xF4" => ~('='^'='^'='^')'^'.'^((''=='').'')), "\xF5" => ~('='^'='^'='^'('^'.'^((''=='').'')), "\xF6" => ~('~'^')'^'^'), "\xF7" => ~('~'^'('^'^'), "\xF8" => ~(')'^'.'), "\xF9" => ~('('^'.'), "\xFA" => ~('='^'='^'='^'~'^')'^'^'^((''=='').'')), "\xFB" => ~('='^'='^'='^'~'^'('^'^'^((''=='').'')), "\xFC" => ~('='^'~'^'('^')'^'^'^'.'^((''=='').'')), "\xFD" => ~('='^'='^'='^'~'^'^'^'.'^((''=='').'')), "\xFE" => ~('('^')'), "\xFF" => ~('='^'='), );
"Hello world!"
''=~(('(').('~'^'.'^(''=='').''^'^').('^'^(''=='').''^')'^'=').('('^'^'^'='^'.').('^'^'(').((''=='').''^'.'^'~').('('^'~'^'.'^')'^'=').('.'^(''=='').''^'=').('.'^'^').((''=='').''^'~'^'=').('^'^'('^(''=='').''^'.').('^'^')'^(''=='').''^'(').('~'^'='^(''=='').''^'('^'.').('.'^'='^'~'^(''=='').'').('='^'.'^(''=='').'').('~'^(''=='').''^')'^'.').('^'^'='^'('^'.').(')'^'('^'='^'~'^'.').('~'^'('^')'^'.'^'=').('^'^(''=='').'').('^'^'~').('^'^')').((''=='').''^'^').('~'^(''=='').''^'=').('='^')'^'('^'.'^'~').('.'^')'^'='^'^').('('^'~'^')'^'^').('('^'='^'.'^(''=='').'').((''=='').''^'='^'~'^'.').((''=='').''^'='^'.').('.'^'='^(''=='').'').('^'^')'^'='^'('^(''=='').''^'.').(')'))
$ cat hello.pl
print "Hello world!\n";
$ perl -MAcme::HeptaSymbolize hello.pl
$ cat hello.pl
''=~(('(').('~'^(''=='').''^'^...
$ perl hello.pl
Hello world!
$ cat hello.pl
print "Hello world!\n";
$ perl -MAcme::HeptaSymbolize=shape.txt hello.pl
$ cat hello.pl
...
適当な画像を用意
縦方向に1/2縮小
適当に縮小
ピクセル抽出
ピクセル抽出
###
########
##########
############
#############
##############
###############
################
################### ##
####################### ####
########################### #####
################################### #####
###############################################
##############################################
##################################################
###################################################
#################################################### ####
###########################################################
#########################################################
### ######################################################
########## ##################################################
###########################################################
#################################################
##############################################
###############################################
################################################
#################################################
##################### ###################
######## ##### ###############
######### ###########
############## ######
############## ##
################
###############
######### #######
#######
#######
$ echo -n 'print"Hello, Hokkaido.pm!\n"' | perl -MAcme::HeptaSymbolize=hokkaido.txt
'.' =~(('(') .('~'^(('' )=='').('')^ '.'^'^').('^' ^')'^'='^(''== '').'').(('(')^ '.'^'='^('^')).( '^'^'(').('.'^(''== '' ).''^'~').('~'^'.'^'='^ '('^ ')').((''=='').''^'='^'.'). ('^'^ '.').('='^(''=='').''^'~').('^'^'(' ^'.'^ (''=='').'').(')'^'^'^'('^(''=='').'').('~'^'(' ^(''=='').''^'='^'.').((''=='').''^'='^'~'^'.' ).('.'^'='^(''=='').'').((''=='').''^'~'^'.'^')'). ('.'^'='^'('^'^').('.'^'='^'('^')'^'~').('.'^('=')^ '~'^'('^')').('^'^(''=='').'').('~'^(''=='').''^'='^ '^') .('^'^'~').(')'^'~'^'.'^(''=='').'').('^'^(''=='').'').('=' ^'('^'~').('='^'~'^'(').('.'^(''=='').''^'~').((''=='').( '') ^'('^'^'^'.').('^'^'.'^')'^'=').('^'^(''=='').'').('.' ).('^'^'.' ).('='^'.'^'~').('~'^'^'^'('^')').('='^'.'^(''=='' ).''^'(').((''=='').''^'='^'.'^'~').('.'^'='^(''=='').'').( '.'^'='^(''=='').'').('='^'.'^(''=='').''^'(').(( '.')^'='^'('^(''=='').'').('.'^(''=='').''^'(' ^'=').('('^(''=='').''^'='^'.').('='^'('^(''==( '')).''^'.').('.'^'('^'='^(''=='').'').('='^(('' )=='').''^'('^'.').('('^'='^(''=='').''^'.').('.' ^'('^(''=='').''^'=') .('('^'.'^'='^(''== '').''). ('.'^ '='^'('^(''=='' ).('')).( '('^'.'^'=' ^(''=='').''). ('^'^( '(')^')'^'='^( (( '.')))^(''==''). '').(')').(''). ''.''.''. ''.~''. ''.~''. ''.~'')
#!/usr/bin/env perl use strict; use warnings; use Getopt::Compact; use Imager; my $gc = Getopt::Compact->new( struct => [ [['image', 'i'] => 'image', '=s'], [['width', 'w'] => 'width', ':i'], ], ); my $opts = $gc->opts; die $gc->usage unless $opts->{image}; my $img = Imager->new(file => $opts->{image}) or die Imager->errstr; my $newimg = $img->scaleY( scalefactor => 0.5, )->scale( scalefactor => ($opts->{width} || 80.0) / $img->getwidth, ); for my $y (0 .. $newimg->getheight - 1) { my @colors = $newimg->getscanline(y => $y); for my $color (@colors) { # threshold print +($color->rgba)[1] > 128 ? '#' : ' '; } print "\n"; }
...######### ########...
...'.'^'='^' ('^'~'..... # NG!
...'.'^'='^( '(')^'~'... # OK!
...##########
....(')')) # NG!
....(')').'') # OK!
...###########
....(')')) # NG!
....(')').~'') # OK!
...############
....(')')) # NG!
....(')').('')) # OK!
...#############
....(')')) # NG!
....(')').(~'')) # OK!
''=~('(?{'."CODE".'})') ''=~('(?{'."CODE" . " ".'})') ''=~('(?{'."CODE" . "\n".'})')
'.' =~(((( '('))) .('.'^ (''=='') .''^'~'^'^').('^'^'='^')'^(( '')=='').'').('('^'^'^'.'^'=').('^'^( '(')).('~'^'.'^(''=='').'').(('~')^ (( '='))^')'^'.'^'(') .('.'^ (''=='').'' ^'='). ('^'^ '.' ).('~' ^(''=='').('')^ '=').('^'^'.'^('' =='').''^'(').(')' ^'('^'^' ^(''==( '')).'' ).('(' ^(('' )==''). ('')^ '~'^'.' ^'=') .(('.')^ ( '=')^ (''=='' ).''^'~'). ('='^ (''== '').''^'.').('~'^')' ^'='^( '(')^( ''=='').'').(('=')^ ('~')^ ')'^(( ('') )==''). '' ^'.'). ('('^ (''=='').''^'~'). ('.'^( ')')^( '~')).('.'^'~'^(''==( '')).( '')).( '^'^')'^(''=='').''^'(' ).((( '=')) ^'('^(''=='').''^'.'). ('='^ '~'^( ''=='').''^( '.')). ('.'^'='^('' =='') .''). ((''=='').''^'='^'.').( '='^ (''=='').''^'('^'.').( ( ''=='').''^'.'^'=' ^'(').('='^'('^'.'^ (''=='').'').('('^'='^('' =='').''^'.'). ((''== '').''^ ('.')^ ('=')^ '(').(( (( '^'))) ^'('^( '.' )^(')')^ '='^(''=='' ).'').(')'). ''.(~'').~''. ''.('').''. ''.'')
Thank you for your attention.
id:sugyan
http://sugyan.com/, sugi1982@gmail.com