第140å ãããã¯ã渡ããã®ã¯Rubyã ããããªã!ãPerlã ã£ã¦æ¸¡ãããã ï¼
YAPCãå§ã¾ãã¾ãããã
å»å¹´ã¯åå ããã®ã§ããï¼è´è¡ã®æ¹ã§ããï¼ãä»å¹´ã¯é常ã«ã¨ã¦ã¤ããªãæ®å¿µãªäºã«åå ã§ãã¾ããã
ã§ãæ°åã ãã§ãã²ããããã®ã§Perlã®ã話ãå°ã
ã
Rubyã«åãã£ããããã¯ã¨ããæ¦å¿µ
Rubyã¯è¨èªèªä½ã«é«é颿°ããããã¯ã¨ããå½¢ã§ãã£ã¦ããã
eachãªã©ã§ä½¿ããã¦ããã®ã¯æåã§ãã
ä¾ï¼
array = [1,3,5,9] array.each{|i| puts i}
eachã«ä¸ãã¦ãã { }ã®é¨åããããã¯ã§ãã
èªåã§ãããã¯ãåãåã颿°ãä½ããããã° yield ã使ãã°ããã§ãããã
ä»åã®ã話ã®å
容ã¯ãPerlã§ããããã¯ã渡ãããã¨ãããã¨ãªã®ã§ã
eachã®æ©è½, yieldã®æ©è½ã¯ç¥ã£ã¦ããããã¨ããåæã§å
ã«ããã¿ããã¨æãã¾ãã
Perlã®ãããã¯ã使ã£ãä¾
ããã§ã¯Rubyã®è©±ã¯ãããããã«ãã¦Perlã®è©±ã«ã¾ããã¾ãããã
ã¾ãPerlã§ãã®é«é颿°ã®ããã«æ¯ãèããããã¯ã使ã£ãçµè¾¼é¢æ°ãè¦ã¦ããããã¨æãã¾ãã
ä»åã¯mapã使ã£ãä¾ãç´¹ä»ãã¾ãã
use Data::Dumper; my @c = 1..5; my @d = map { $_ * 2 } @c; # @cã®åè¦ç´ ã2åããé åãè¿ã print Dumper \@d;
çµæï¼
$VAR1 = [ 2, 4, 6, 8, 10 ];
ã½ã¼ã¹ä¸ã®ã³ã¡ã³ãã«ãæ¸ãã¾ããã åè¦ç´ ã2åããé
åãè¿ãã¦ãã¾ãã
map ããã㯠é
å
ã¨ããæ¸å¼ã§ãã
ãããã¯ã弿°ã«ã¨ã颿°ã®ä½ãæ¹
ãã®ããã«ãããã¯ã弿°ã«ã¨ã颿°ã¯èªåã§ã¤ãããã¨ãã§ãã¾ãã
ãã®ãã¨ã«ãããããããPerlã«ãã¨ããåãã£ã¦ããçµè¾¼é¢æ°ãããã¯ææ³ã®ããã«æ¯ãèããããã¨ãï¼æ¸ããã¨ãï¼å¯è½ã¨ãªãã¾ãã
å®ç¾©ã®ä»æ¹ã¯ç°¡åã以ä¸ã®ããã«ãããã¿ã¤ãã使ãã°ããã ãã§ãã
sub(&){ }
ãã®ããã«Perlã®ãããã¿ã¤ãã§&ãæå®ãããã¨ã§ãããã¯ãåãåããã¨ãã§ãã¾ãã
sub hoge(&){ $code = shift; $code->(); } hoge { print 'Hello World' . "\n" } # ãããã¯ã渡ã
ããã ãã ã¨ãã ããä½ï¼ã¨ããæãã§ãã®ã§ã
å®ç¨çãªä¾ãç´¹ä»ãã¾ãããã
Perlã®5.8ããçµã¿è¾¼ã¾ããList::Utilã«åãã£ãfirstã使ãã¨
use List::Util qw(first); my @c = 1..5; my $d = first { $_ > 3 } @c; #æåã«3ãè¶ ãããã®ãåå¾ print $d . "\n";
ãã®ããã«æåã«3ãè¶ ãããã®ãåå¾ãããã¨ãã§ãã¾ãã
ãããèªä½ãããªãã°ã
sub first(&@){ my $code = shift; for(@_){ return $_ if $code->(); } } my @c = 1..5; my $d = first { $_ > 3 } @c; print $d . "\n";
ãã®ããã«ãªãã¾ãã
å®éããã¼ã¸ã§ã³1.21ã®List::Util::PP.pmã®44è¡ç®ã«ã»ã¨ãã©åãã½ã¼ã¹ãçºè¦ã§ãã¾ããã
try{ }catch{ }æ§æã ã£ã¦ä½ãã
ãã®ãããã¯ã使ãã°ãtry{ }catch{ }æ§æã ã£ã¦ä½ãã¾ãã
ããããã£ãã®ãError.pmã§ããã©ã®ããã«ãã£ã¦ã®ãã¦ããã®ãã¯

ããã°ã©ãã³ã°PerlãVOLUME1ã
- ä½è : ã©ãªã¼ã¦ã©ã¼ã«,ã¸ã§ã³ãªã¼ã¯ã³ã,ãã ã¯ãªã¹ãã£ã³ã»ã³,Larry Wall,Jon Orwant,Tom Christiansen,è¿è¤åéª
- åºç社/ã¡ã¼ã«ã¼: ãªã©ã¤ãªã¼ã»ã¸ã£ãã³
- çºå£²æ¥: 2002/09/01
- ã¡ãã£ã¢: åè¡æ¬
- è³¼å ¥: 8人 ã¯ãªãã¯: 245å
- ãã®ååãå«ãããã° (125ä»¶) ãè¦ã
æ¦ç¥ã ãç°¡åã«èª¬æããã¨ã
sub try(&$){ } 㨠sub catch(&){ }
ã使ããå®ã«ãã¾ãå
·åã« tryã®ãããã¯ãå
ã«å¦çãããããã«å®è£
ããã¦ããããã§ãã
DSLã ã£ã¦ä½ãã
ãããã¯ã渡ãããã¨ã«ãã£ã¦æè¿æµè¡ã®DSLã ã£ã¦ä½ãäºãã§ãã¾ãã
ããããã£ã¦ããã®ããWeb::Scraperã§ãã
scraper { }
ã®ãããã¯ã®ä¸ã«ã©ã®ãããªå¦çãè¡ãªã£ã¦ã»ããã®ã示ããã¨ãã§ãã¾ãã
ãããã¯ãåãåããããã«ã§ããã®ã¯ç¬¬1弿°ã ã
æå¾ã«æ³¨æäºé
ã§ãã
ããã¿ã¤ãã«&ãæ¸ãã¦ãããã¯ãããããã¨ãã§ããã®ã¯ã
ãããã¯ã第1弿°ã«ãããã¨ãã ãã¨ãªãã¾ãã
åèï¼
http://perl-mongers.org/2009/01/re_map.html
第81回 高階関数を理解できないとRubyは理解できない - bingo_nakanishiの他言語出身者のためのPerl入門