SlideShare a Scribd company logo
Perl Language Update
2016 年の Perl
Kenichi Ishigaki
@charsbar
Lightweight Language of Things
Aug 27, 2016
Perl 6 の「クリスマ
ス」ついに到来
ややこしいことを言う
といろいろあるんです
…が• 今回リリースされたのはあくまでも
v6.c 「クリスマス・バージョン」の
公式テスト
• たまたまひとつの実装が特定の環境
でその仕様を満たすようになっただ
け
• 「クリスマス・バージョン」は「聖
書」の一部には未対応
Rakudo Perl6
• 本体は今も毎月リリースが続いています
• 機能的には 2015 年 12 月にいったんフ
リーズ
• 仕様を直すのではなく実装を直すフェー
ズに
• 最適化や非同期処理のバグ取りなどに集
中
• 9 月以降、互換性を崩さない範囲で少し
Rakudo の実行環
境
• 現時点で v6.c に対応しているのは
MoreVM のみ
• JVM 上では一部機能が欠けた状態
• 長年 Perl 6 の土台となってきた
Parrot はついに完全引退
• JavaScript バックエンドが本家に
Rakudo Star
• Rakudo 本体にモジュールなどを同梱
• こちらも四半期に一度くらいのペー
スでリリースが続いています
• Perl 6 自体を使って Perl 6 のテストを
実行できるように
• http://rakudo.org/downloads/star/
Perl 5 の近況
Perl 6 の世界に比べると地味
な変更が多いですが、もち
ろん更新は続いています
安定版 : Perl 5.24
開発版 : Perl 5.25.4
• サブルーチンやブロックの出入り
の高速化
• 固定長文字列の正規表現の高速化
• セキュリティ関係の修正など
• 開発版 : Test2 モジュールへ移行
開始
Perl 5.14 で実験的
に導入された
autoderef 機能は削
除
伝統的な書き方
$scalar = 'value';
@array = ($value1, $value2, ...);
%hash = ($key1, $value1, ...);
sigil …の使い分けが
リファレンスを使うとかな
りの部分スカラーに一本化
できる
$scalar = 'value';
$arrayref = [$value1, $value2, ...];
$hashref = {$key, $value, ...};
場合によっては
デリファレンスが必要
push @{$arrayref //= []}, $scalar;
for (keys %$hashref) { ... }
5.14 では一部のキーワード
がリファレンス引数に対応
push $arrayref //= [], $scalar;
for (keys $hashref) { ... }
微妙な制約がありました
オブジェクトになっているかどうか
だけで挙動が変わってしまう
× push $blessed_arrayref, $scalar;
× for (keys $blessed_hashref) { ... }
いつでもデリファレンスしてくれる
わけではない
× print "interpolates $arrayref";
5.20 で実験的に導入された
postderef 機能が正式化
@{$arrayref}   $arrayref-
>@*
%{$hashref}   $hashref->
%*
伝統的な書き方と挙動は同
じ
push $arrayref->@*, $scalar;
push $blessed_arrayref->@*, $scalar;
print "interpolates $arrayref->@*";
初期化が必要になる場合も
$undef->%* # 場所により警告の対象
%{$maybe_undef // {}}
($maybe_undef // {})->%*
× $maybe_undef->%* // {}
かっこの優先順位に注意
○ keys $maybe_hashref->%*
× keys ($maybe_hashref // {})->%*
○ keys (($maybe_hashref // {})->%*)
○ keys %{$maybe_hashref // {}}
YAPC::Hokkaido 2016
2016.12.10 Sat
@ 札幌市産業振興センター
http://yapcjapan.org/2016hokkaido/

More Related Content

PPTX
ASP.NETからASP.NET Coreに移行した話
PDF
Serverless apps on aws using scala
PDF
Laravel5にアップグレードする際に詰まった点
PDF
Kafkaを使った マイクロサービス基盤 part2 +運用して起きたトラブル集
KEY
APACHE HTTP SERVER
PDF
PHP&NewSQLで考える次世代アプリケーション
PDF
Security Advisories Checker on Travis/Circle CI
PDF
Laravel meetup5(Laravel meet NewSQL/VoltDB )
ASP.NETからASP.NET Coreに移行した話
Serverless apps on aws using scala
Laravel5にアップグレードする際に詰まった点
Kafkaを使った マイクロサービス基盤 part2 +運用して起きたトラブル集
APACHE HTTP SERVER
PHP&NewSQLで考える次世代アプリケーション
Security Advisories Checker on Travis/Circle CI
Laravel meetup5(Laravel meet NewSQL/VoltDB )

What's hot (20)

KEY
恐るべきApache, Web勉強会@福岡
PDF
Rails解説セミナー: Railsのアップグレード編
PDF
One ASP.NET, OWIN & Katana
PDF
Rails解説セミナー: リリースノート解説編
PDF
実戦Scala
PDF
ScalaにまつわるNewsな話
PDF
.NET Core 1.0
PPTX
Zabbixによるオートスケーリングクラスタ監視とオペレーション自動化
PDF
【PHPカンファレンス福岡】PHP 5.3 + CakePHP 1.3 → PHP 7 + CakePHP 3 移行を決めた話
PDF
CKAN日本語コミュニティの現状と課題
PDF
The state of sbt 0.13, sbt server, and sbt 1.0 (ScalaMatsuri ver)
PPTX
誰にでもできるパフォーマンスチューニング
PDF
ASP.NET WebAPI 体験記 #clrh99
PDF
ネタじゃないScala.js
PDF
Rails解説セミナー: Rails国際化 (I18n) API
PDF
Hadoop Summit 2016 San Jose ストリーム処理関連の報告 #streamctjp
PDF
Scalaでのプログラム開発
PDF
スキーマつきストリーム データ処理基盤、 Confluent Platformとは?
PDF
Scala が支える医療系ウェブサービス #jissenscala
PDF
re:Growth 2015 TOKYO keynote以外のアップデートのこと、時々でいいから...... 思い出して下さい(軽量版)
恐るべきApache, Web勉強会@福岡
Rails解説セミナー: Railsのアップグレード編
One ASP.NET, OWIN & Katana
Rails解説セミナー: リリースノート解説編
実戦Scala
ScalaにまつわるNewsな話
.NET Core 1.0
Zabbixによるオートスケーリングクラスタ監視とオペレーション自動化
【PHPカンファレンス福岡】PHP 5.3 + CakePHP 1.3 → PHP 7 + CakePHP 3 移行を決めた話
CKAN日本語コミュニティの現状と課題
The state of sbt 0.13, sbt server, and sbt 1.0 (ScalaMatsuri ver)
誰にでもできるパフォーマンスチューニング
ASP.NET WebAPI 体験記 #clrh99
ネタじゃないScala.js
Rails解説セミナー: Rails国際化 (I18n) API
Hadoop Summit 2016 San Jose ストリーム処理関連の報告 #streamctjp
Scalaでのプログラム開発
スキーマつきストリーム データ処理基盤、 Confluent Platformとは?
Scala が支える医療系ウェブサービス #jissenscala
re:Growth 2015 TOKYO keynote以外のアップデートのこと、時々でいいから...... 思い出して下さい(軽量版)
Ad

Viewers also liked (6)

PPTX
Sqlite virtual-tables written in Perl
PDF
2013年のCPANモジュール作成事情
PPT
JSON, JSON::PP, and more
PPTX
10年モノ熟成Perlとの付き合い方
PPT
2016年のPerl (Long version)
PPTX
Infrastructure of Pathtraq
Sqlite virtual-tables written in Perl
2013年のCPANモジュール作成事情
JSON, JSON::PP, and more
10年モノ熟成Perlとの付き合い方
2016年のPerl (Long version)
Infrastructure of Pathtraq
Ad

Similar to perl language update (7)

PPT
2017年春のPerl
PPT
2017年夏のPerl
PPTX
Wakateweb 10
PPT
2018年夏のPerl5
PDF
Perl6で遊ぼう
PDF
PDF
about Perl5.10
2017年春のPerl
2017年夏のPerl
Wakateweb 10
2018年夏のPerl5
Perl6で遊ぼう
about Perl5.10

More from charsbar (19)

PPT
Common boolean class_for_perl5
PDF
萬國之津梁
PDF
Better detection of what modules are used by some Perl 5 code
PPT
Json(::PP) is a-changing
PPT
CPANの依存モジュールをもう少し正しく検出したい
PDF
What you need to remember when you upload to CPAN
PPT
On UnQLite
PPT
typemap in Perl/XS
PDF
Analyze CPAN, Analyze Community
PDF
Annual Report 2012
PDF
DBD::SQLite
PDF
CPANTS: Kwalitative website and its tools
PPT
CPANTS 2012
PPT
Revisiting ppm
PDF
Mojolicious::Liteを使ってみよう
PPT
変数、リファレンス
PPT
關於perl的 文件翻譯
PPT
Practical Bug Reporting
PPT
Top Tens of 2008/2009
Common boolean class_for_perl5
萬國之津梁
Better detection of what modules are used by some Perl 5 code
Json(::PP) is a-changing
CPANの依存モジュールをもう少し正しく検出したい
What you need to remember when you upload to CPAN
On UnQLite
typemap in Perl/XS
Analyze CPAN, Analyze Community
Annual Report 2012
DBD::SQLite
CPANTS: Kwalitative website and its tools
CPANTS 2012
Revisiting ppm
Mojolicious::Liteを使ってみよう
変数、リファレンス
關於perl的 文件翻譯
Practical Bug Reporting
Top Tens of 2008/2009

perl language update