5.22がリリースされました。リリース今回のリリースでは、活発な機能追加が行われています。5.22の一番うれしな点は、性能改善です。マルチデリファレンスの構文解析とメソッドの構文解析の改善によって、パフォーマンスがアップしています。複数階層のデリファレンスの性能改善Perlの内部パーサーは、複数階層のデリファレンスを効率的に解析できるようになりました。このために、複数階層のデリファレンスのパフォーマンスが上昇しています。$scores->[0]{math};メソッド呼び出しとSUPER擬似クラスの性能改善メソッド呼び出しと、SUPER擬似クラスは、事前に解析され、その情報がキャッシュされるようになっています。そのため、実行時の、メソッド呼び出しのパフォーマンスが上昇しています。$obj->method$obj->SUPER::method;length関数の性能改善length関数は、UTF-8ではない文字列に関して20%パフォーマンスがアップしています。配列とハッシュの性能改善キーが、定数か、単純な変数だった場合に、配列とハッシュの要素へのアクセスが速くなっています。5.22では、数学関連の機能の改善などが行われています。C99の数学関数が利用できるようになりましたPerlでC99でサポートされている数学関数を、POSIXモジュールを通じて利用できるようになりました。atanhtgamma無限とNaN(数値でない)の扱いの改善InfとNaNがより堅固に利用できるようになりました。16進の浮動小数点の解析が向上しました16進の浮動小数点の解析が向上しました。16進で浮動少数点を記述するリテラルが追加されています。0x1.23p-4これで、Perlレベルで、マシンレベルと誤差のない数値を表現することが可能になっています。5.22では、数学関連の機能がかなり改善されています。5.22では、正規表現の新しいフラグとして、通常の括弧をキャプチャに利用しないフラグが追加されました。これによって、複雑な正規表現を書くときに、キャプチャしない括弧「(?:)」を使わないで、簡潔に記述することができるようになりました。/(hi|hello)/n括弧を使っていますが、この括弧はキャプチャしません。nオプションを使った場合に、キャプチャをしたい場合は、次のようにします。"hello"複雑な正規表現を書くときは、nオプションと、名前つきキャプチャと組み合わせると見やすいのではないでしょうか。7.0がサポートされました。Unicodeのサポート対応はPerlはとても早いです。リファレンスを通したエイリアスPerlの機能としてエイリアスという機能が存在しているのですが、これが構文レベルで呼び出せるようになりました。この機能は実験的です。\$nums;定数関数のサポートconstサブルーチン属性によって、定数関数がサポートされました。関数は一度実効されるとその値は保存され、2回目以降は、その値を利用します。この機能は実験的です。安全なダイヤモンドオペレーターより安全なダブルダイヤモンドオペレーター「<<>>」がサポートされました。従来のダイヤモンドオペレーターは、二引数のopen関数を内部的に利用していましたが、ダブルダイヤモンドオペレーターは、三引数のopen関数を利用します。<<>>;encodingモジュールがレキシカルスコープを持つようになりましたencodingモジュールは非推奨なモジュールですが、まだ生存期間中です。それで、機能の改善としてencodingを利用したときの影響の範囲が、グローバルなものから、レキシカルなものになっています。encodingモジュールを、ファイル単位などで、部分的に利用できるようになりました。警告をすべて致命的なエラーに変換することは、非推奨となりました。警告をすべて致命的なエラーにする記述は、非推奨となりました。次の記述は、今後は、非推奨ですので、避けましょう。'all';これは、Perlのコアが新しい警告を追加したときに、そのために、今まで動いていたアプリケーションが、エラーによってとまってしまうというリスクがあるためです。Perlのコアチームが、完全な互換性ではなく、新しい警告を安全に追加できるほうを選択したようです。僕も、これには、賛成です。次の記述がエラーになりました。defined(@array)defined(%hash)この記述は5.6.1の時点で、廃止予定となっており、5.16で、廃止予定の警告が発せられるようになっていましたが、5.22で、エラーとなりました。Perlをバージョンアップするときは、古いソースコードには、この記述がある可能性がありますので、注意してください。コアからはずれたモジュールCGIモジュールがコアからはずれましたCGIモジュールがコアからはずれました。これは驚きもあるかもしれませんが、時代の流れでもあります。以後は、CPANから、インストールして、利用してください。現在では、Webフレームワークを利用して、Webアプリケーションを開発することが主流になっています。以下のページから、Web開発に必要なフレームワークを探すことができます。Task::Kensho::WebDev:_Web_DevelopmentModule::BuildがコアからはずれましたModule::Buildがコアからはずされました。Module::Buildが必要なときは、自動的にCPANからインストールされる仕組みがPerlには、存在するということと、コアの管理をなるべく小さくするという目的のためはずされました。まとめ感想を述べると、まずPerlが数学関連の機能を強化したことに好感が持てます。Perlが遅れている分野をカバーする機能追加が行われたのは、うれしいことです。メソッドと複数階層のデリファレンスのパフォーマンスがアップしたのは、とてもよいことだと思います。PerlのWebフレームワークのMojoliciousでは、Perl5.22にバージョンアップすると、20%以上のパフォーマンスの改善があったということも、報告されていました。v5.xx」としたときに、加えることができる可能性の道が開けたことです。早めの方針転換が、後々の機能改善に利いてきますので。業務に役立つPerlログ解析など日本語を含むテキスト処理の実践!案内YouTubeでもっと簡単にプログラミングを学ぶならPerlゼミちゃんねるLinuxコマンドを学ぶならLinuxサーバー管理入門Webデザインを学ぶならWebデザイン入門Web開発を始めるななMojoliciousスタートアップブログを作るならGiblogプログラミングの勉強会ならPerl入学式お問合せはこちらPerlは、テキスト処理の記述性とパフォーマンスに優れ、正規表現が言語に組み込まれているプログラミング言語です。Linuxサーバー管理でのフィルタリングプログラム、複数行の文字列を処理、ファイル内容の検索・置換などが得意。Mojoliciousを使ったWebスタートアップも。Perlは、gitやopensslなどUnix/Linuxミドルウェアの支援ツールとして採用されています。このサイトはGiblogで製作されています。