狠狠撸

狠狠撸Share a Scribd company logo
about Perl5.10
                          id:lapis25
                 lapis25@gmail.com
    Kansai.pm Meeting #9/20080531




                                       1
Perlの歴史

? 1987 1.0
? 1988 2.0
? 1989 3.0
? 1991 4.0
? 1994 5.0

                2
                       2
Perl5の歴史

? 1994 5.0
? (略
? 2000 5.6
? 2002 5.8
? 2007 5.10

              3
                   3
Perl5.10.0




? 2007/12/18 リリース



               4
                    4
今日の内容
? Perl5.10
? 後方互換性
? 追加された机能
? ……の一部紹介(全部はムリ)



          5
                   5
すべてを知りたいなら
? perldoc perl5100delta
? 和訳
 ? http://?eur.hio.jp/perldoc/mix/pod/
    perl5100delta.mix.html




                    6
                                         6
活字で読みたい




? Recent Perl World#12 / ITO Naoya
  WEB+DB PRESS Vol.43

                   7
                                     7
今日の結論
? リリースからもうすぐ半年
? 5.10コワクナイヨ
? もっと使っていきましょう




           8
                 8
9
    9
後方互換性



  10
        10
後方互換性



? Perlのいままでのバージョンと同様に
 極力後方互換性を維持している




           11
                        11
互換のない修正

? pack()/unpack()で
  utf-8エンコードされた文字列の処理変更

? 疑似ハッシュの廃止
? warningsプラグマが
  Carpをロードしなくなった

? etc...
                     12
                          12
追加された机能



   13
          13
蹿别补迟耻谤别プラグマ



     14
              14
蹿别补迟耻谤别プラグマ
? 後方互換性のない新しい構文を有効にするた
 めのプラグマ

? レキシカルスコープ




              15
                         15
蹿别补迟耻谤别プラグマ
? say
? switch
? state




           16
                    16
蹿别补迟耻谤别プラグマ



use feature ’say’;




                     17
                          17
蹿别补迟耻谤别プラグマ



use feature qw(say switch state);




                  18
                                    18
蹿别补迟耻谤别プラグマ
 ? すべての機能が有効になる

use feature qw(:5.10);




                  19
                         19
蹿别补迟耻谤别プラグマ
 ? 蹿别补迟耻谤别プラグマが暗黙的にロードされる

use 5.10;




             20
                            20
蹿别补迟耻谤别プラグマ


use feature qw(say switch state);
use feature qw(:5.10);
use 5.10;




                  21
                                    21
新しい
コマンドラインスイッチ



     22
              22
one-liner



? one-liner用コマンドラインスイッチ
? いままでも -e があるよね?


            23
                          23
-eスイッチ



% perl -e 'print "hello, world!n"'




                  24
                                      24
-Eスイッチ



% perl -E 'say "hallo, perl5.10!"'




                  25
                                     25
-Eスイッチ



? one-liner用のコマンドラインスイッチ
? perl5.10の機能を有効にして実行


            26
                           26
27
say

 28
      28
Say
? 改行付きprint




               29
                    29
Print



print "Hello, world!n"




                  30
                          30
Say



say 'Hello, world!'




                  31
                       31
Print



print "$_n" for @lines;




                  32
                           32
Say



say for @lines;




                   33
                        33
switch

  34
         34
switch



? Perlにもswitch文が!
? ただし構文はswitch/caseではなく
 given/when




                35
                          35
given/when
use feature 'switch';
given ($foo) {
    when (/^abc/) { $abc   =   1;   }
    when (/^def/) { $def   =   1;   }
    when (/^xyz/) { $xyz   =   1;   }
    default       { $not   =   1;   }
}




                  36
                                        36
for/when
use feature 'switch';
for (@foo) {
    when (/^abc/) { $abc   =   1;   }
    when (/^def/) { $def   =   1;   }
    when (/^xyz/) { $xyz   =   1;   }
    default       { $not   =   1;   }
}




                  37
                                        37
smart match



     38
              38
~~

39
     39
smart match
? 比較対象によって比較の方法が変わる
? whenでもスマートマッチが行われる
? 単独で使う場合は
? 詳しくはperldoc perlsynで



            40
                         40
state

  41
        41
state変数
? my local ourに続く変数宣言 state
? 変数宣言時に一度だけ初期化される変数
? スコープはブロックの範囲内




              42
                              42
クロージャ
    ? クロージャを使って書いていた処理を
{
     my $i = 0;
     sub func { $i++ }
}




                   43
                          43
state変数
 ? すっきりかける
use feature 'state';
sub func {
  state $i = 0;
  $i++;
}




                  44
                       44
45
//
46
     46
dor



 47
      47
Defined-or



    48
             48
Defined-or
? こう書いていたのが

defined $a ? $a : $b




              49
                       49
Defined-or
? こう書けます

$a // $b




           50
                    50
//の優先度
? ?? とまったくいっしょ
? 低優先度版のerr演算子はなくなりました




           51
                         51
named capture



      52
                52
named capture

? 正規表現で名前付きでキャプチャできる
? 構文は(?<NAME>)
? k<NAME> で後方参照可能
? キャプチャした内容には%+ハッシュでアクセ
 ス可能



          53
                          53
named capture



s/(?<letter>.)k<letter>/$+{letter}/g




                  54
                                        54
ファイルテスト演算子




    55
             55
ファイルテスト演算子



-x $file && -w _ && -f _




             56
                           56
ファイルテスト演算子
? まとめて書けるように

-f -w -x $file




             57
                  57
……他にも
いろいろあります


   58
           58
? 宣言することで$_をレキシカルに
? mroプラグマ
? UNIVERSAL::DOES()
? no VERSIONで指定したバージョンより古い
  Perlを使いたいことを表現


? %^H でレキシカルプラグマを実装可能に
                 59
                             59
新しいコアモジュール



    60
             60
?   encoding::warnings            ?   Locale::Maketext::Simple

?   Module::CoreList              ?   Params::Check

?   Math::BigInt::FastCalc        ?   Term::UI

?   Compress::Zlib                ?   Object::Accessor

?   IO::Zlib                      ?   Module::Pluggable

?   Archive::Tar                  ?   Module::Load::Conditiona

?   Digest::SHA                   ?   Time::Piece

?   ExtUtils::CBuilder            ?   IPC::Cmd

?   ExtUtils::ParseXS             ?   File::Fetch

?   Hash::Util::FieldHash         ?   Log::Message

?   Module::Build                 ?   Log::Message::Simple

?   Module::Load                  ?   Archive::Extract

?   Module::Loaded                ?   CPANPLUS

?   Package::Constants            ?   Pod::Escapes

?   Win32API::File           61   ?   Pod::Simple
                                                                 61
笔别谤濒5.10を使うには



      62
                62
笔别谤濒5.10を使うには

? fedora9は5.10
? debian(sid)は5.10になったようです
? MacPortsにもperl5.10あります
? ActivePerlも5.10
? いっそソースからインストール

              63
                             63
まとめ



 64
      64
Perl5.10は
ふつうに使えそう


     65
             65
早速インストール!



    66
            66
ご静聴ありがとう
 ございました


   67
           67
questions?



    68
             68
参考資料

?   perl5100delta
    http://?eur.hio.jp/perldoc/perl/5.10.0/pod/
    perl5100delta.mix.html

?   What's new in Perl 5.10?
    http://www.slideshare.net/acme/whats-new-in-perl-510

?   Recent Perl World#12 / ITO Naoya
    WEB+DB PRESS Vol.43




                               69
                                                           69

More Related Content

about Perl5.10