Perlã®ææ°ãã¼ã¸ã§ã³Perl 5.26ãªãªã¼ã¹ãã¤ã³ãã³ãå¯è½ãã¢ããã¥ã¡ã³ããUnicode 9.0ãé·ããã¼ã®ããã·ã¥ã®æ§è½æ¹å
Perl
›
ãã¼ã¸ã§ã³æ å ±
›
here
2017å¹´5æ30æ¥ã«Perl 5.26ããªãªã¼ã¹ããã¾ãã! Perlã®ç»å ´ã1987å¹´ã§ããããã¤ãã«30å¹´ç®ãè¿ãã¾ã!
æ©è½ã®è¿½å
Perl 5.26ã«ãããããã¤ãã®æ©è½ã®è¿½å ã§ãã便å©ãããªãã®ãããã¯ã¢ãããã¦ã¿ã¾ãã
ã¤ã³ãã³ãå¯è½ãã¢ããã¥ã¡ã³ã
ã¤ã³ãã³ãå¯è½ヒアドキュメントã®æ§æã追å ããã¾ãããããã¯ä¾¿å©ããã§ãã
my $message = <<~EOS; Hello World EOS
æ«å°¾ã®æå(ããã§ã¯EOS)ã®ä½ç½®ããå·¦ã®ä½ç½®ã«ãªã£ã¦ãåºåçµæã¯ä»¥ä¸ã®ããã«ãªãã¾ãã
Hello World
ã¨ãã£ã¿ã§ãã½ã¼ã¹ã³ã¼ãã®è²ä»ãããã¾ãã§ããããã«ãªãã¨ããã«ããæãã§ãã
Unicode 9.0ã®ãµãã¼ã
Unicode 9.0ããµãã¼ãããã¾ãããUnicode 9.0ã§ããã«è¿½å ãããé¡æåãªã©ãæ±ããã¨ãã§ãã¾ãã
ã¬ãã·ã«ã«ãµãã«ã¼ãã³ã®æ©è½ãæ£å¼ãªãã®ã«
ã¬ãã·ã«ã«サブルーチンã®æ©è½ãæ£å¼ãªãã®ã«ãªãã¾ããã
{ my sub foo { ... } # ç¾å¨ã®ã¹ã³ã¼ãã ãããå¼ã³åºããã title(); }
æ£è¦è¡¨ç¾ã®ååä»ããã£ããã£ããããããããªã£ã
正規表現ã®ååä»ããã£ããã£ã®å©ç¨ããããããããªãã¾ããã以ä¸ã®ããã·ã¥å¤æ°ãããååä»ããã£ããã£ãåãåºãã¾ãã
%{^CAPTURE}
my $foo = "I am Tom";; if ($a =~ m/ (?<name>.+)$/) { my $name = ${^CAPTURE}{name}; }
ã$+{name}ãã§åç §ããã®ã¯ãã¡ãã£ã¨ãããã¥ããã£ãã®ã§ãããã¯ããæ©è½è¿½å ã ã¨æãã¾ãã
ããã©ã¼ãã³ã¹ã®æ¹å
Perl 5.26ã«ãããããã©ã¼ãã³ã¹ã®æ¹åã«ã¤ãã¦ããã¯ã¢ãããã¾ãã
64bitç°å¢ã§ããã·ã¥ã®ããã©ã¼ãã³ã¹æ¹å
ãããã©ã³ã¹ãåãããã«ãã¤ããªããハッシュã«ãªãã¾ããã
16ãã¤ã以ä¸ã®çããã¼ã§ã¯ãAt A Time Hardãé·ããã¼ã¯ãSiphash 1-3ãã¢ã«ã´ãªãºã ã使ç¨ãã¾ãã
ã¨ã¦ãé·ããã¼ã§ã¯ããã©ã¼ãã³ã¹ã大å¹
ã«åä¸ãã¾ããçããã¼ã§ã¯å°ãã®æ¹åãããã¾ãã
ãã¡ã¤ã«ããã®è¡èªã¿è¾¼ã¿ã®é«éå
ãã¡ã¤ã«ãè¡ããèªã¿è¾¼ãreadlineãããã³ã<>ãæ¼ç®åã®ããã©ã¼ãã³ã¹ãåä¸ãã¾ãããæ¹è¡æåã®æ¤ç´¢æ¹æ³ã®å®è£ ãããéããã®ã«ãªãã¾ããã
ãªãã¡ã¬ã³ã¹ã®ä»£å ¥ã®é«éå
ä»ã®å¤æ°ã«ãªãã¡ã¬ã³ã¹ãä»£å ¥ããæä½ãéããªãã¾ããã
my $obj1 = SomeModule->new; my $obj2 = $obj1;
splité¢æ°ã®ããã©ã¼ãã³ã¹ã®æ¹å
split関数ããããã«éããªã£ã¦ãã¾ãã
my @elements = split ...;
ãªã¹ãä»£å ¥ã®ããã©ã¼ãã³ã¹ã®æ¹å
リストä»£å ¥ã®ããã©ã¼ãã³ã¹ãã3åç¨åº¦éããªãã¾ããã
my @elements = (1,2,3);
å¾æ¹äºææ§ã®ãªãå¤æ´
å¾æ¹äºææ§ã®ãªãå¤æ´ã§ãã
@INCã®æ«å°¾ã«ããã©ã«ãã§è¿½å ããã¦ããã.ããåãé¤ããã¾ãã
Perl 5.26ã«ããã¦ã¯ãããã¯ãä¸çªå¤§ããªå½±é¿ã®ããäºææ§ã®ãªãå¤æ´ã§ããã¢ã¸ã¥ã¼ã«ã®èªã¿è¾¼ã¿ãã¹ã«ã«ã¬ã³ããã£ã¬ã¯ããªãããã¨ãã»ãã¥ãªãã£ä¸ã®ãªã¹ã¯ãããããããããåãé¤ãå¤æ´ãè¡ããã¦ãã¾ãã
詳ããã¯ä»¥ä¸ã®è¨äºã«æ¸ããã®ã§ã覧ãã ããã
æ£è¦è¡¨ç¾ã®ä¸ã®ã¨ã¹ã±ã¼ãããã¦ããªãã{ãã¯è¨±å¯ããã¾ãã
ããã¯ã5.16ããå»æ¢äºå®ã«ãªã£ã¦ãã¾ãããPerl 5.26ã§è¨±å¯ãããªããªãã¾ããã
# æ£è¦è¡¨ç¾ã®ä¸ã§ã{ãã使ãã¨ãã¯å¿ ãã¨ã¹ã±ã¼ã /\{/;
${^ENCODING}ã®æ©è½ãåãé¤ããã¾ãã
Perl 5.18ã§encodingãã©ã°ãã¯ãå»æ¢äºå®ã«ãªã£ã¦ãã¾ããããä»åã®ãªãªã¼ã¹ã§encodingãã©ã°ãã¯ããã®ã¾ã¾ã§ã¯åããªããªãã¾ãããencodingãã©ã°ãã¨å é¨çã«ã¤ãªãã£ã¦ããã${^ENCODING}å¤æ°ãåãé¤ãããããã§ãã
ã½ã¼ã¹ã³ã¼ãã¯UTF-8ã§è¨è¿°ãã¦ãutf8ãã©ã°ãã使ãããã«ãã¾ãããã
ãããã©ããã¦ãencodingãã©ã°ãã使ãç¶ãããå ´åã¯ã以ä¸ã®ããã«ãFilterããªãã·ã§ã³ã追å ãããã¨ã§ã対å¦ãããã¨ãã§ãã¾ãã
use encoding "euc-jp", Filter=>1;
ææ³
Perlãããããããããå¤æ´ããããã©ã¼ãã³ã¹ã®æ¹åã¯ãæè¿ã§ããæ°ããUnicodeã«ããã«å¯¾å¿ã«ãªãã®ãã¨ã¦ãããã
ã.ãã@INCããåãé¤ãããã®ã¯ãããªãã®ã½ã¼ã¹ã³ã¼ãã«å½±é¿ãä¸ãã¾ãããã»ãã¥ãªãã£ä¸ã®åé¡ãæ¾ç½®ãç¶ãããã¨ããã¯ããã決å®ã ã¨æãã¾ãã
Perl 5.26ã¸ã®ã¢ããã°ã¬ã¼ãã¯ãããªãã®æ³¨æãå¿ è¦ã§ããäºåã«å¯¾å¦ãã¦ããã®ããã¹ãã§ããã¢ã¸ã¥ã¼ã«ããã¡ã¤ã«ãèªã¿è¾¼ããã¹ã¯ãFindBinã¢ã¸ã¥ã¼ã«ã§ã絶対ãã¹ã§è¨å®ããããã«ããã®ããããã§ãããã
Perl 5.20ã¾ã§ã¯ãå®å®ã§ãPerl 5.22ã¨Perl 5.24ã§ã¯ãå é¨APIã使ã£ã¦ããCoroãåããªããªãã¨ããåé¡ãçºçãã¾ãããç¾å¨ã¯Perl 5.22ã§ã¯ææ°çã®Coroã¯åãããã§ãããPerl 5.24以éã§ã¯åãã¾ãããPerl 5.26ã§ã¯ãã.ãã@INCããåãé¤ããã¾ãã
ã¢ããã°ã¬ã¼ãã®æ³¨æã¯ãCoroãå©ç¨ãã¦ããªããã¨ã確èªãããã¨ã¨ãã.ãã@INCã«å«ã¾ããªããªããã¨ã«å¯¾ãã対å¿ããããã¨ã§ãã
å¤ãPerlã使ã£ã¦ããå ´åã¯ãPerl 5.20ã¾ã§ãã¾ãã¢ããã°ã¬ã¼ããã¦ãããã«ãããããææ°çã«ã¢ããã°ã¬ã¼ãããã¨ããæµãã«ããã¨ãåé¡ãèµ·ããã«ããã¦ããããããªããã¨æãã¾ãã
Perl
›
ãã¼ã¸ã§ã³æ å ±
›
here