「Perl 5.26」リリース、「@INC」の仕様が変更される

 Perl開発チームは5月30日、「Perl 5.26.0」を公開した。Perl 5系の最新版となり、@INCの仕様変更、Unicode 9対応、ヒアドキュメントのインデント対応などが加わっている。セキュリティも強化されている。

 Perl 5.26は、2016年5月に公開されたPerl 5.24に続く最新版。5系の最初のリリースは1994年となる。36万行分の変更があり、86人の開発者から2600件のファイルが提出されたという。PerlはPerl 6を2016年始めに公開している。なお、Perlは今年誕生から30周年を迎えている。

 大きな影響がある変更点として、まずモジュールの探索パスが格納されている@INC変数に「.」(カレントディレクトリ)がデフォルトでは含まれなくなった。セキュリティ上の理由からの変更で、これによって非明示的にカレントディレクトリ内のモジュールを読み込んでいた場合などに問題が発生する可能性がある。これに関連し、指定したファイルをPerlスクリプトとして実行する「do <ファイル名>」構文ではファイルのロードに失敗した際に警告を出力するよう変更された。

 また、正規表現内でエスケープされていない「{」の利用が禁止された。「{」を指定する場合は「\{」のように必ずエスケープを行う必要がある。

 そのほかの大きな変更点や新機能としては、まず新たなヒアドキュメント構文「Indented Here-documents」が導入された。「<<~」という構文で利用できるもので、ヒアドキュメントの識別子が書かれた行の行頭から識別子までの間のホワイトスペースと同じ数のホワイトスペースが、ヒアドキュメント内の各行の先頭から自動的に削除される。また、正規表現では新たなモディファイア「/xx」が導入されたほか、@{^CAPTURE}、%{^CAPTURE}、%{^CAPTURE_ALL}構文も導入された。

 実験的機能として、myおよびstate、our、localによる変数宣言において変数への参照を宣言できるようになった。これによって「my \$a = \$b;」のような表記が可能になる。そのほかUnicode 9.0のサポートや、バージョン5.18で実験的に導入されたレキシカルサブルーチンが正式扱いとなり、全てのコードで自動的に利用可能になるといった変更もある。

 このほかにも多数の機能や不具合の修正が加わっている。

The Perl Foundation
http://www.perl.org/