perldelta - what is new for perl v5.10.1

perl5101delta - perl v5.10.1 での変更点


This document describes differences between the 5.10.0 release and the 5.10.1 release.

このドキュメントは 5.10.0 リリースと 5.10.1 リリースの変更点を記述しています。

If you are upgrading from an earlier release such as 5.8.8, first read the perl5100delta, which describes differences between 5.8.8 and 5.10.0

もしそれよりも前のリリース、例えば 5.8.8 等からアップデートするのなら、 5.8.8 と 5.10.0 との違いが書かれている perl5100delta を読んでおいた方が よいでしょう。


switch 文の変更

The handling of complex expressions by the given/when switch statement has been enhanced. There are two new cases where when now interprets its argument as a boolean, instead of an expression to be used in a smart match:

given/when による複雑な式の扱いが拡張されました。 新しく、when がスマートマッチングの式ではなく真偽値として 引数を解釈する場合が二つあります。

flip-flop operators


The .. and ... flip-flop operators are now evaluated in boolean context, following their usual semantics; see "Range Operators" in perlop.

..... のフリップフロップ演算子は、通常の文法に従ってブール値 コンテキストで評価されるようになりました。 "Range Operators" in perlop を参照してください。

Note that, as in perl 5.10.0, when (1..10) will not work to test whether a given value is an integer between 1 and 10; you should use when ([1..10]) instead (note the array reference).

perl 5.10.0 では、when (1..10) としても、与えられた値が 1 から 10 の間の 数値かどうかをテストするようには動作しないことに注意してください; 代わりに when ([1..10]) を使うべきです (配列リファレンスに 注意してください)。

However, contrary to 5.10.0, evaluating the flip-flop operators in boolean context ensures it can now be useful in a when(), notably for implementing bistable conditions, like in:

しかし、5.10.0 とは反対に、when() でブール値コンテキストで フリップフロップ演算子が評価されることが保証されることで、 特に以下のように双安定条件を実装するときに便利です:

    when (/^=begin/ .. /^=end/) {
      # do something
defined-or operator

(定義性和 (defined-or) 演算子)

A compound expression involving the defined-or operator, as in when (expr1 // expr2), will be treated as boolean if the first expression is boolean. (This just extends the existing rule that applies to the regular or operator, as in when (expr1 || expr2).)

when (expr1 // expr2) のような、定義性和 (defined-or) を含む複合式は、 最初の式が真偽値なら真偽値として扱われます。 (これは単に、when (expr1 || expr2) のような通常の or 演算子に 適用されるすでにあるルールの拡張です。

The next section details more changes brought to the semantics to the smart match operator, that naturally also modify the behaviour of the switch statements where smart matching is implicitly used.

次の章では、スマートマッチング演算子の文法に関するさらなる変更と、 当然のながら暗黙にスマートマッチングを使っている switch 文の 振る舞いの変更について詳述します。



The smart match operator ~~ is no longer commutative. The behaviour of a smart match now depends primarily on the type of its right hand argument. Moreover, its semantics have been adjusted for greater consistency or usefulness in several cases. While the general backwards compatibility is maintained, several changes must be noted:

スマートマッチング演算子 ~~ はもはや可換性を持ちません。 スマートマッチングの振る舞いは、まず右側の引数の型に依存します。 さらに、その文法は一貫性と有用性をより高めるために調整されました。 一般的な後方互換性は維持されている一方、いくつかの変更点には 注意しなければなりません:

  • Code references with an empty prototype are no longer treated specially. They are passed an argument like the other code references (even if they choose to ignore it).

    空のプロトタイプを持つコードリファレンスは特別扱いされなくなりました。 (たとえ無視されることになるとしても)これらはその他のコードリファレンスと同様に 引数として渡されます。

  • %hash ~~ sub {} and @array ~~ sub {} now test that the subroutine returns a true value for each key of the hash (or element of the array), instead of passing the whole hash or array as a reference to the subroutine.

    %hash ~~ sub {}@array ~~ sub {} は、 ハッシュや配列全体をリファレンスとしてサブルーチンに渡すのではなく、 ハッシュのそれぞれのキー(または配列の要素)に対してサブルーチンが 真を返すかどうかをテストするようになりました。

  • Due to the commutativity breakage, code references are no longer treated specially when appearing on the left of the ~~ operator, but like any vulgar scalar.

    可換性の破綻により、コードリファレンスは ~~ 演算子の左側に 現れたときにはもはや特別扱いされず、普通のスカラと同じように扱われます。

  • undef ~~ %hash is always false (since undef can't be a key in a hash). No implicit conversion to "" is done (as was the case in perl 5.10.0).

    undef ~~ %hash は常に偽となります (なぜなら undef はハッシュのキーとして 使えないからです)。 (perl 5.10.0 の場合のように)"" への暗黙の変換は行われません。

  • $scalar ~~ @array now always distributes the smart match across the elements of the array. It's true if one element in @array verifies $scalar ~~ $element. This is a generalization of the old behaviour that tested whether the array contained the scalar.

    $scalar ~~ @array は常に配列の要素に対してスマートマッチングを 分配するようになりました。 これは、もし @array の一つの要素が $scalar ~~ $element で検証されれば 真となります。 これは、配列にあるスカラが含まれているかどうかをテストする古い振る舞いの 一般化です。

The full dispatch table for the smart match operator is given in "Smart matching in detail" in perlsyn.

スマートマッチング演算子に関する完全な発行テーブルは "Smart matching in detail" in perlsyn にあります。


According to the rule of dispatch based on the rightmost argument type, when an object overloading ~~ appears on the right side of the operator, the overload routine will always be called (with a 3rd argument set to a true value, see overload.) However, when the object will appear on the left, the overload routine will be called only when the rightmost argument is a simple scalar. This way distributivity of smart match across arrays is not broken, as well as the other behaviours with complex types (coderefs, hashes, regexes). Thus, writers of overloading routines for smart match mostly need to worry only with comparing against a scalar, and possibly with stringification overloading; the other common cases will be automatically handled consistently.

一番右の引数の型に依存するという発行ルールによれば、 演算子の右側にオブジェクトのオーバーロード ~~ が現れたとき、 オーバーロードルーチンは(3 番目の引数に真の値を設定して; overload を 参照してください) 常に呼び出されます。 しかし、オブジェクトが左側に現れたとき、オーバーロードルーチンは 一番右の引数が単純なスカラの場合にのみ呼び出されます。 これによって配列に対するスマートマッチングの分配性や 複合型(コードリファレンス、ハッシュ、正規表現)に対するその他の振る舞いは 壊れません。 従って、スマートマッチングのためのローバーロードルーチンの作者は ほとんどの場合、スカラの比較と、可能性があるなら文字列化のオーバーロードに 関してのみ心配する必要があります; その他の一般的な場合は 一貫性を持って自動的に扱われます。

~~ will now refuse to work on objects that do not overload it (in order to avoid relying on the object's underlying structure). (However, if the object overloads the stringification or the numification operators, and if overload fallback is active, it will be used instead, as usual.)

~~ は、オーバーロードしていないオブジェクトに対して動作しなくなりました (オブジェクトの基礎となる構造に依存することを避けるためです)。 しかし、オブジェクトが文字列化か数値化演算子をオーバーロードしていて、 オーバーロードのフォールバックが有効の場合は、通常通りに使われます。)


  • The semantics of use feature :5.10* have changed slightly. See "Modules and Pragmata" for more information.

    use feature :5.10* の文法が少し変更されました。 さらなる情報については "Modules and Pragmata" を参照してください。

  • It is now a run-time error to use the smart match operator ~~ with an object that has no overload defined for it. (This way ~~ will not break encapsulation by matching against the object's internal representation as a reference.)

    オーバーロードが定義されていないオブジェクトに対してスマートマッチング 演算子 ~~ を使うと、実行時エラーが出るようになりました。 (これで、~~ オブジェクトのリファレンスとしての内部表現に マッチングすることでカプセル化を壊すことがなくなります。)

  • The version control system used for the development of the perl interpreter has been switched from Perforce to git. This is mainly an internal issue that only affects people actively working on the perl core; but it may have minor external visibility, for example in some of details of the output of perl -V. See perlrepository for more information.

    perl インタプリタの開発で使われるバージョン管理システムが Perforce から git に変更されました。 これは主に内部の問題で、perl コアに対して積極的に作業をする 人々にのみ影響があります; しかし、perl -V の出力の詳細の一部のように、外から見えるところにも 多少の変更があります。 さらなる情報については perlrepository を参照してください。

  • The internal structure of the ext/ directory in the perl source has been reorganised. In general, a module Foo::Bar whose source was stored under ext/Foo/Bar/ is now located under ext/Foo-Bar/. Also, some modules have been moved from lib/ to ext/. This is purely a source tarball change, and should make no difference to the compilation or installation of perl, unless you have a very customised build process that explicitly relies on this structure, or which hard-codes the nonxs_ext Configure parameter. Specifically, this change does not by default alter the location of any files in the final installation.

    perl ソースの ext/ ディレクトリの内部構造が再構成されました。 一般的に、今まで ext/Foo/Bar/ にソースが保管されていた Foo::Bar モジュールは、ext/Foo-Bar/ に置かれるようになりました。 また、いくつかのモジュールが lib/ から ext/ に移動しました。 これは純粋にソース tarball の変更なので、この構造に明示的に 依存していたり、Configurenonxs_ext パラメータを ハードコーディングしているような、とてもカスタマイズされたビルド処理を するのでない限り、perl のコンパイルやインストールに違いはないはずです。 特に、この変更によっても最終的にインストールされたファイルの位置は 変更されません。

  • As part of the Test::Harness 2.x to 3.x upgrade, the experimental Test::Harness::Straps module has been removed. See "Updated Modules" for more details.

    Test::Harness 2.x から 3.x へのアップグレードへの一部として、 実験的な Test::Harness::Straps モジュールは取り除かれました。 さらなる詳細については "Updated Modules" を参照してください。

  • As part of the ExtUtils::MakeMaker upgrade, the ExtUtils::MakeMaker::bytes and ExtUtils::MakeMaker::vmsish modules have been removed from this distribution.

    ExtUtils::MakeMaker のアップグレードの一部として、 ExtUtils::MakeMaker::bytesExtUtils::MakeMaker::vmsish の モジュールはこの配布から取り除かれました。

  • Module::CoreList no longer contains the %:patchlevel hash.

    Module::CoreList はもはや %:patchlevel ハッシュを含まなくなりました。

  • This one is actually a change introduced in 5.10.0, but it was missed from that release's perldelta, so it is mentioned here instead.

    これは実際には 5.10.0 で導入された変更ですが、5.10.0 の perldelta からは 漏れているので、代わりにここで言及します。

    A bugfix related to the handling of the /m modifier and qr resulted in a change of behaviour between 5.8.x and 5.10.0:

    /m 修飾子と qr の扱いに関するバグ修正の結果、5.8.x と 5.10.0 で 振る舞いが変わっています:

        # matches in 5.8.x, doesn't match in 5.10.0
        $re = qr/^bar/; "foo\nbar" =~ /$re/m;


Unicode Character Database 5.1.0

The copy of the Unicode Character Database included in Perl 5.10.1 has been updated to 5.1.0 from 5.0.0. See http://www.unicode.org/versions/Unicode5.1.0/#NotableChanges for the notable changes.

Perl 5.10.1 に含まれる Unicode Character Database は 5.0.0 から 5.1.0 に 更新されました。 注目するべき変更点については http://www.unicode.org/versions/Unicode5.1.0/#NotableChanges を 参照してください。


As of Perl 5.10.1 there is a new interface for plugging and using method resolution orders other than the default (linear depth first search). The C3 method resolution order added in 5.10.0 has been re-implemented as a plugin, without changing its Perl-space interface. See perlmroapi for more information.

Perl 5.10.1 から、デフォルト (線形深さ優先検索) 以外のメソッド解決順序を 追加して使うための新しいインターフェースがあります。 5.10.0 で追加された C3 メソッド解決順序は、Perl 空間でのインターフェースの 変更なしにプラグインとして再実装されました。 さらなる情報については perlmroapi を参照してください。

The overloading pragma

(overloading プラグマ)

This pragma allows you to lexically disable or enable overloading for some or all operations. (Yuval Kogman)

このプラグマは、演算子の一部あるいは全部を、レキシカルに無効化あるいは 有効化します。 (Yuval Kogman)


The core distribution can now run its regression tests in parallel on Unix-like platforms. Instead of running make test, set TEST_JOBS in your environment to the number of tests to run in parallel, and run make test_harness. On a Bourne-like shell, this can be done as

コア配布は、Unix 風プラットフォームでは退行テストを並列に実行できるように なりました。 make test を実行する代わりに、環境変数 TEST_JOBS に並列に 実行するテスト数を設定して、make test_harness を実行します。 Bourne-風のシェルでは、これは以下のようにします

    TEST_JOBS=3 make test_harness  # Run 3 tests in parallel

An environment variable is used, rather than parallel make itself, because TAP::Harness needs to be able to schedule individual non-conflicting test scripts itself, and there is no standard interface to make utilities to interact with their job schedulers.

並列 make 自身ではなく、環境変数を使います; なぜなら TAP::Harness はここの競合しないテストスクリプト自身を計画できる必要が ありますが、make ユーティリティのジョブスケジューラと相互作用するための 標準的なインターフェースはないからです。

Note that currently some test scripts may fail when run in parallel (most notably ext/IO/t/io_dir.t). If necessary run just the failing scripts again sequentially and see if the failures go away.

いくつかのテストスクリプト(特に ext/IO/t/io_dir.t)は並列に実行すると 失敗するかもしれないことに注意してください。 もし必要なら、失敗したスクリプトを順番に再実行して、失敗しなくなることを 確認してください。

DTrace 対応

Some support for DTrace has been added. See "DTrace support" in INSTALL.

DTrace へのいくらかの対応が追加されました。 INSTALL の "DTrace support" を参照してください。

Support for configure_requires in CPAN module metadata

(CPAN モジュールメタデータの configure_requires への対応)

Both CPAN and CPANPLUS now support the configure_requires keyword in the META.yml metadata file included in most recent CPAN distributions. This allows distribution authors to specify configuration prerequisites that must be installed before running Makefile.PL or Build.PL.

CPANCPANPLUS は、ほとんどの最近の CPAN 配布が含んでいる メタデータファイル META.ymlconfigure_requires キーワードに 対応しました。 これにより、Makefile.PLBuild.PL が実行される前に インストールされていなければならない設定の事前条件を指定できます。

See the documentation for ExtUtils::MakeMaker or Module::Build for more on how to specify configure_requires when creating a distribution for CPAN.

CPAN で配布するときに configure_requires を指定する方法については ExtUtils::MakeMakerModule::Build の文書を参照してください。




This is a new lexically-scoped alternative for the Fatal module. The bundled version is 2.06_01. Note that in this release, using a string eval when autodie is in effect can cause the autodie behaviour to leak into the surrounding scope. See "BUGS" in autodie for more details.

これは Fatal モジュール代用品で、新しくレキシカルスコープを持つものです。 同梱されているバージョンは 2.06_01 です。 このリリースでは、autodie が有効の時に文字列 eval を使うと、 autodie の振る舞いが周りのスコープに漏れるかもしれないことに 注意してください。 さらなる詳細については "BUGS" in autodie を参照してください。


This has been added to the core (version 2.020).

これはコアに追加されました (バージョン 2.020)。


This pragma establishes an ISA relationship with base classes at compile time. It provides the key feature of base without the feature creep.

このプラグマは、基底クラスとの ISA 関係をコンパイル時に構築します。 これは、機能の不愉快な部分なしに base の主となる機能を提供します。


This has been added to the core (version 1.39).

これはコアに追加されました (バージョン 1.39)。



Upgraded from version 0.08 to 0.09.

0.08 から 0.09 に更新されました。


Upgraded from version 1.02 to 1.03.

1.02 から 1.03 に更新されました。


Upgraded from version 2.13 to 2.14. See parent for a replacement.

2.13 から 2.14 に更新されました。 代用品については parent を参照してください。


Upgraded from version 0.22 to 0.23.

0.22 から 0.23 に更新されました。


Upgraded from version 0.22 to 0.23.

0.22 から 0.23 に更新されました。


Upgraded from version 0.22 to 0.23.

0.22 から 0.23 に更新されました。


Upgraded from version 1.06 to 1.07.

1.06 から 1.07 に更新されました。

The Unicode NameAliases.txt database file has been added. This has the effect of adding some extra \N character names that formerly wouldn't have been recognised; for example, "\N{LATIN CAPITAL LETTER GHA}".

Unicode NameAliases.txt データベースファイルが追加されました。 これにより、以前は認識されなかった追加の \N 文字名(例えば "\N{LATIN CAPITAL LETTER GHA}") が追加される効果があります。


Upgraded from version 1.13 to 1.17.

1.13 から 1.17 に更新されました。


The meaning of the :5.10 and :5.10.X feature bundles has changed slightly. The last component, if any (i.e. X) is simply ignored. This is predicated on the assumption that new features will not, in general, be added to maintenance releases. So :5.10 and :5.10.X have identical effect. This is a change to the behaviour documented for 5.10.0.

:5.10 および :5.10.X で組み込まれる機能が僅かに変更されました。 最後の要素 (つまり X) がもしあっても、単に無視されます。 これは、一般的にはメンテナンスリリースでは新しい機能はないという仮定に 基づいています。 従って、:5.10:5.10.X は同じ効果を持ちます。 これは 5.10.0 で文書化されている振る舞いへの変更です。


Upgraded from version 2.13 to 2.14 (this was just a version bump; there were no functional changes).

2.13 から 2.14 に更新されました (これは単なるバージョン番号の衝突でした; 機能的な変更はありません)。


Upgraded from version 0.5565 to 0.62.

0.5565 から 0.62 に更新されました。


Upgraded from version 1.06 to 1.07.

1.06 から 1.07 に更新されました。


Upgraded from version 1.06 to 1.07.

1.06 から 1.07 に更新されました。


上述の "The overloading pragma" を参照してください。


Upgraded from version 0.74 to 0.77.

0.74 から 0.77 に更新されました。



Upgraded from version 0.24 to 0.34.

0.24 から 0.34 に更新されました。


Upgraded from version 1.38 to 1.52.

1.38 から 1.52 に更新されました。


Upgraded from version 0.79 to 0.85.

0.79 から 0.85 に更新されました。


Upgraded from version 5.63 to 5.68.

5.63 から 5.68 に更新されました。


Upgraded from version 1.05 to 1.06.

1.05 から 1.06 に更新されました。


Upgraded from version 1.17 to 1.22.

1.17 から 1.22 に更新されました。


Upgraded from version 1.05 to 1.11.

1.05 から 1.11 に更新されました。


Upgraded from version 0.83 to 0.89.

0.83 から 0.89 に更新されました。


Upgraded from version 1.09 to 1.11.

1.09 から 1.11 に更新されました。


Upgraded from version 1.01 to 1.02.

1.01 から 1.02 に更新されました。


Upgraded from version 1.10 to 1.11.

1.10 から 1.11 に更新されました。


Upgraded from version 1.08 to 1.11.

1.08 から 1.11 に更新されました。


Upgraded from version 3.29 to 3.43. (also includes the "default_value for popup_menu()" fix from 3.45).

3.29 から 3.43 に更新されました。 (また、3.45 の "default_value for popup_menu()" の修正を含んでいます)。


Upgraded from version 2.008 to 2.020.

2.008 から 2.020 に更新されました。


Upgraded from version 1.9205 to 1.9402. CPAN::FTP has a local fix to stop it being too verbose on download failure.

1.9205 から 1.9402 に更新されました。 CPAN::FTP は、ダウンロード失敗時に饒舌すぎるのを止めるローカルな 修正をしています。


Upgraded from version 0.84 to 0.88.

0.84 から 0.88 に更新されました。


Upgraded from version 0.06_02 to 0.36.

0.06_02 から 0.36 に更新されました。


Upgraded from version 3.25_01 to 3.30.

3.25_01 から 3.30 に更新されました。


Upgraded from version 2.121_14 to 2.124.

2.121_14 から 2.124 に更新されました。


Upgraded from version 1.01 to 1.02.

1.01 から 1.02 に更新されました。


Upgraded from version 1.816_1 to 1.820.

1.816_1 から 1.820 に更新されました。


Upgraded from version 3.13 to 3.19.

3.13 から 3.19 に更新されました。


Upgraded from version 2.36_01 to 2.39.

2.36_01 から 2.39 に更新されました。


Upgraded from version 5.45 to 5.47.

5.45 から 5.47 に更新されました。


Upgraded from version 1.01 to 1.03.

1.01 から 1.03 に更新されました。


Upgraded from version 1.12 to 1.13.

1.12 から 1.13 に更新されました。


Upgraded from version 1.08 to 1.10.

1.08 から 1.10 に更新されました。


Upgraded from version 2.23 to 2.35.

2.23 から 2.35 に更新されました。


Upgraded from version 1.10 to 1.11.

1.10 から 1.11 に更新されました。


Upgraded from version 5.62 to 5.63.

5.62 から 5.63 に更新されました。


Upgraded from version 0.21 to 0.2602.

0.21 から 0.2602 に更新されました。


Upgraded from version 1.13 to 1.16.

1.13 から 1.16 に更新されました。


Upgraded from 0.20 to 0.22. (Note that neither of these versions are available on CPAN.)

0.20 から 0.22 に更新されました。 (これらのバージョンは CPAN にはないことに注意してください。)


Upgraded from version 1.27 to 1.28.

1.27 から 1.28 に更新されました。


Upgraded from version 1.44 to 1.54.

1.44 から 1.54 に更新されました。


Upgraded from version 6.42 to 6.55_02.

6.42 から 6.55_02 に更新されました。

Note that ExtUtils::MakeMaker::bytes and ExtUtils::MakeMaker::vmsish have been removed from this distribution.

ExtUtils::MakeMaker::bytesExtUtils::MakeMaker::vmsish は この配布から取り除かれたことに注意してください。


Upgraded from version 1.51_01 to 1.56.

1.51_01 から 1.56 に更新されました。


Upgraded from version 2.18_02 to 2.2002.

2.18_02 から 2.2002 に更新されました。


Upgraded from version 1.05 to 2.06_01. See also the new pragma autodie.

1.05 から 2.06_01 に更新されました。 新しいプラグマである autodie も参照してください。


Upgraded from version 2.76 to 2.77.

2.76 から 2.77 に更新されました。


Upgraded from version 1.1005 to 1.1006.

1.1005 から 1.1006 に更新されました。


Upgraded from version 2.11 to 2.14.

2.11 から 2.14 に更新されました。


Upgraded from version 0.14 to 0.20.

0.14 から 0.20 に更新されました。


Upgraded from version 1.12 to 1.14.

1.12 から 1.14 に更新されました。


Upgraded from version 2.04 to 2.07_03.

2.04 から 2.07_03 に更新されました。


Upgraded from version 3.2501 to 3.30.

3.2501 から 3.30 に更新されました。


Upgraded from version 1.00 to 1.01.

1.00 から 1.01 に更新されました。


Upgraded from version 0.18 to 0.22.

0.18 から 0.22 に更新されました。


Upgraded from version 1.07 to 1.08.

1.07 から 1.08 に更新されました。


Upgraded from version 2.01 to 2.02.

2.01 から 2.02 に更新されました。


Upgraded from version 0.82 to 0.84.

0.82 から 0.84 に更新されました。


Upgraded from version 1.07 to 1.08.

1.07 から 1.08 に更新されました。


Upgraded from version 1.49 to 1.50.

1.49 から 1.50 に更新されました。


Upgraded from version 1.08 to 1.09.

1.08 から 1.09 に更新されました。


Upgraded from version 2.37 to 2.38.

2.37 から 2.38 に更新されました。


Upgraded from version 1.03 to 1.04. This fixes a memory leak.

1.03 から 1.04 に更新されました。 これはメモリリークを修正しています。


Upgraded from version 1.00 to 1.01.

1.00 から 1.01 に更新されました。


Upgraded from version 1.23_01 to 1.25.

1.23_01 から 1.25 に更新されました。

This makes non-blocking mode work on Windows in IO::Socket::INET [CPAN #43573].

これにより、Windows で IO::Socket::INET の非ブロッキングモードが 動作するようになります [CPAN #43573] 。


Upgraded from version 2.008 to 2.020.

2.008 から 2.020 に更新されました。


Upgraded from version 1.06 to 1.07.

1.06 から 1.07 に更新されました。


Upgraded from version 1.27 to 1.28.

1.27 から 1.28 に更新されました。


Upgraded from version 1.30_01 to 1.31.

1.30_01 から 1.31 に更新されました。


Upgraded from version 1.07 to 1.09.

1.07 から 1.09 に更新されました。


Upgraded from version 0.40_1 to 0.46.

0.40_1 から 0.46 に更新されました。


Upgraded from version 1.02 to 1.04.

1.02 から 1.04 に更新されました。


Upgraded from version 1.05 to 2.01.

1.05 から 2.01 に更新されました。


Upgraded from version 0.5565 to 0.62.

0.5565 から 0.62 に更新されました。


Upgraded from version 1.19 to 1.21.

1.19 から 1.21 に更新されました。


Upgraded from version 1.12 to 1.13.

1.12 から 1.13 に更新されました。


Upgraded from version 0.01 to 0.02.

0.01 から 0.02 に更新されました。


Upgraded from version 1.59 to 1.60.

1.59 から 1.60 に更新されました。


Upgraded from version 1.88 to 1.89.

1.88 から 1.89 に更新されました。


Upgraded from version 0.16 to 0.19.

0.16 から 0.19 に更新されました。


Upgraded from version 0.21 to 0.22.

0.21 から 0.22 に更新されました。


Upgraded from version 1.37 to 1.56.

1.37 から 1.56 に更新されました。


Upgraded from version 1.04 to 1.20.

1.04 から 1.20 に更新されました。


Upgraded from version 1.01_02 to 1.01_03 (just a minor documentation change).

1.01_02 から 1.01_03 に更新されました (単なる軽微な文書の修正です)。


Upgraded from version 0.2808_01 to 0.34_02.

0.2808_01 から 0.34_02 に更新されました。


Upgraded from version 2.13 to 2.18. This release no longer contains the %Module::CoreList::patchlevel hash.

2.13 から 2.18 に更新されました。 このリリースにはもはや %Module::CoreList::patchlevel ハッシュは 含まれていません。


Upgraded from version 0.12 to 0.16.

0.12 から 0.16 に更新されました。


Upgraded from version 0.22 to 0.30.

0.22 から 0.30 に更新されました。


Upgraded from version 0.01 to 0.02.

0.01 から 0.02 に更新されました。


Upgraded from version 3.6 to 3.9.

3.6 から 3.9 に更新されました。


Upgraded from version 1.07 to 1.08.

1.07 から 1.08 に更新されました。


Upgraded from version 2.33 to 2.36.

2.33 から 2.36 に更新されました。


Upgraded from version 0.60_01 to 0.64.

0.60_01 から 0.64 に更新されました。


Upgraded from version 0.32 to 0.34.

0.32 から 0.34 に更新されました。


Upgraded from version 1.03 to 1.04.

1.03 から 1.04 に更新されました。


Upgraded from version 0.01 to 0.02.

0.01 から 0.02 に更新されました。


Upgraded from version 1.04 to 1.06.

1.04 から 1.06 に更新されました。


Upgraded from version 0.04 to 0.07.

0.04 から 0.07 に更新されました。


Upgraded from version 2.16 to 2.22.

2.16 から 2.22 に更新されました。


Upgraded from version 1.35 to 1.37.

1.35 から 1.37 に更新されました。


Upgraded from version 3.05 to 3.07.

3.05 から 3.07 に更新されました。


Upgraded from version 3.08 to 3.13.

3.08 から 3.13 に更新されました。


Upgraded from version 1.13 to 1.17.

1.13 から 1.17 に更新されました。


Upgraded from 2.12 to 2.18.

2.12 から 2.18 に更新されました。


Upgraded from version 1.19 to 1.21.

1.19 から 1.21 に更新されました。


Upgraded from 1.01 to 1.02.

1.01 から 1.02 に更新されました。


Upgraded from 1.11 to 1.17.

1.11 から 1.17 に更新されました。


Upgraded from 1.80 to 1.82.

1.80 から 1.82 に更新されました。


Upgraded from 2.18 to 2.20.

2.18 から 2.20 に更新されました。


Upgraded from version 2.13 to 2.14. Please see "Deprecations".

2.13 から 2.14 に更新されました。 "Deprecations" を参照してください。


Upgraded from version 1.06 to 1.07.

1.06 から 1.07 に更新されました。


Upgraded from version 0.22 to 0.27.

0.22 から 0.27 に更新されました。


Upgraded from version 1.12 to 2.00.

1.12 から 2.00 に更新されました。


Upgraded from version 1.03 to 1.04.

1.03 から 1.04 に更新されました。


Upgraded from version 0.18 to 0.20.

0.18 から 0.20 に更新されました。


Upgraded from version 2.64 to 3.17.

2.64 から 3.17 に更新されました。

Note that one side-effect of the 2.x to 3.x upgrade is that the experimental Test::Harness::Straps module (and its supporting Assert, Iterator, Point and Results modules) have been removed. If you still need this, then they are available in the (unmaintained) Test-Harness-Straps distribution on CPAN.

Note that 2.x から 3.x へのアップグレードに対する副作用の一つとして、 実験的な Test::Harness::Straps モジュール (およびそのサポートである Assert, Iterator, Point, Results モジュール) は 取り除かれました。 もしまだこれらが必要なら、CPAN にある(メンテナンスされていない) Test-Harness-Straps が利用可能です。


Upgraded from version 0.72 to 0.92.

0.72 から 0.92 に更新されました。


Upgraded from version 3.26 to 3.27.

3.26 から 3.27 に更新されました。


Upgraded from version 2007.1117 to 2009.0305.

2007.1117 から 2009.0305 に更新されました。


Upgraded from version 2006.1117 to 2009.0305.

2006.1117 から 2009.0305 に更新されました。


Upgraded from version 2.00 to 2.11.

2.00 から 2.11 に更新されました。


Upgraded from version 2.01 to 2.09.

2.01 から 2.09 に更新されました。


Upgraded from version 1.67 to 1.72.

1.67 から 1.72 に更新されました。


Upgraded from version 1.14 to 1.29.

1.14 から 1.29 に更新されました。


Upgraded from version 1.37 to 1.38.

1.37 から 1.38 に更新されました。


This has documentation changes, and has been assigned a version for the first time: version 4.2.

これは文書の変更と、初めてバージョン番号 4.2 が割り当てられました。


Upgraded from version 1.9711 to 1.9719.

1.9711 から 1.9719 に更新されました。


Upgraded from version 1.18 to 1.1901.

1.18 から 1.1901 に更新されました。


Upgraded from version 1.12 to 1.15.

1.12 から 1.15 に更新されました。


Upgraded from version 1.02 to 1.03.

1.02 から 1.03 に更新されました。


Upgraded from version 0.25 to 0.27.

0.25 から 0.27 に更新されました。

charinfo() now works on Unified CJK code points added to later versions of Unicode.

charinfo() は、最近の Unicode で追加された統合 CJK 符号位置に対しても 動作するようになりました。

casefold() has new fields returned to provide both a simpler interface and previously missing information. The old fields are retained for backwards compatibility. Information about Turkic-specific code points is now returned.

古いフィールドは過去互換性のために残されます。 テュルク諸語符号位置固有の情報も返すようになりました。

The documentation has been corrected and expanded.



Upgraded from version 1.04 to 1.05.

1.04 から 1.05 に更新されました。


Upgraded from version 0.34 to 0.39.

0.34 から 0.39 に更新されました。


Upgraded from version 0.1001_01 to 0.1101.

0.1001_01 から 0.1101 に更新されました。


Upgraded from version 0.08 to 0.10.

0.08 から 0.10 に更新されました。



Now looks in include-fixed too, which is a recent addition to gcc's search path.

最近 gcc の検索パスとして追加された、include-fixed を見るように なりました。


No longer incorrectly treats enum values like macros (Daniel Burr).

マクロのような enum 値を間違って扱わなくなりました (Daniel Burr)。

Now handles C++ style constants (//) properly in enums. (A patch from Rainer Weikusat was used; Daniel Burr also proposed a similar fix).

enum での C++ 形式の定数 (//) を扱うようになりました。 (Rainer Weikusat からのパッチを使いました; Daniel Burr からも似たような 修正を提案されました)。


LVALUE subroutines now work under the debugger.

LVALUE サブルーチンはデバッガからでも動作するようになりました。

The debugger now correctly handles proxy constant subroutines, and subroutine stubs.

デバッガは代理定数サブルーチンとサブルーチンスタブを正しく扱えるように なりました。


Perl 5.10.1 adds a new utility perlthanks, which is a variant of perlbug, but for sending non-bug-reports to the authors and maintainers of Perl. Getting nothing but bug reports can become a bit demoralising: we'll see if this changes things.

Perl 5.10.1 に新しいユーティリティである perlthanks が追加されました; これは perlbug の変種ですが、Perl の作者とメンテナにバグレポートではない ものを送ります。 バグレポートでしかないものを受け取るのは少しがっかりさせるものに なりつつあります: これによって変わるかどうかを見てみます。



This contains instructions on how to build perl for the Haiku platform.

これには、Haiku プラットフォームで perl をビルドする方法についての 説明が含まれています。


This describes the new interface for pluggable Method Resolution Orders.

これは、プラグ可能なメソッド解決順序の新しいインターフェースを 記述しています。


This document, by Richard Foley, provides an introduction to the use of performance and optimization techniques which can be used with particular reference to perl programs.

この文書は Richard Foley によるもので、perl プログラムの個々の参照で 使えるパフォーマンスと最適化の技術の使用に関する導入を提供します。


This describes how to access the perl source using the git version control system.

これは、git バージョン管理システムを使って perl のソースに アクセスする方法について記述しています。


This describes the new perlthanks utility.

これは新しい perlthanks ユーティリティについて記述しています。


The various large Changes* files (which listed every change made to perl over the last 18 years) have been removed, and replaced by a small file, also called Changes, which just explains how that same information may be extracted from the git version control system.

(過去 18 年間にわたって perl に対して行われた全ての変更の一覧である) 様々な大きな Changes* ファイルが取り除かれ、 単に git バージョン制御システムから同じ情報を取り出す方法を説明した 小さいファイル Changes に置き換えられました。

The file Porting/patching.pod has been deleted, as it mainly described interacting with the old Perforce-based repository, which is now obsolete. Information still relevant has been moved to perlrepository.

Porting/patching.pod ファイルは削除されました; これは主に古い Perforce を基としたレポジトリとの相互作用について記述していて、 これは古いものです。 まだ関連のある情報は perlrepository に移動しました。

perlapi, perlintern, perlmodlib and perltoc are now all generated at build time, rather than being shipped as part of the release.

perlapi, perlintern, perlmodlib, perltoc はリリースの 一部としてではなく、全てビルド時に生成されるようになりました。


  • A new internal cache means that isa() will often be faster.

    新しい内部キャッシュにより、isa() はしばしばより速くなります。

  • Under use locale, the locale-relevant information is now cached on read-only values, such as the list returned by keys %hash. This makes operations such as sort keys %hash in the scope of use locale much faster.

    use locale の元では、ロケール関係の情報は、keys %hash で 返されるリストのように、読み込み専用値としてキャッシュされるように なりました。 これによって、use locale での sort keys %hash のような操作が とても速くなります。

  • Empty DESTROY methods are no longer called.

    空の DESTROY メソッドはもはや呼び出されなくなります。


ext/ reorganisation

(ext/ の再構成)

The layout of directories in ext has been revised. Specifically, all extensions are now flat, and at the top level, with / in pathnames replaced by -, so that ext/Data/Dumper/ is now ext/Data-Dumper/, etc. The names of the extensions as specified to Configure, and as reported by %Config::Config under the keys dynamic_ext, known_extensions, nonxs_ext and static_ext have not changed, and still use /. Hence this change will not have any affect once perl is installed. However, Attribute::Handlers, Safe and mro have now become extensions in their own right, so if you run Configure with options to specify an exact list of extensions to build, you will need to change it to account for this.

ext ディレクトリのレイアウトが見直されました。 特に、全てのエクステンションはフラットにトップレベルに置かれ、 パス名中の /- に置き換えられます; 従って、 ext/Data/Dumper/ext/Data-Dumper/ のようになります。 エクステンションの名前のうち、Configure で指定されるもの、 dynamic_ext, known_extensions, nonxs_ext, static_ext%Config::Config によって報告されるものは変更なしで、/ を 使い続けます。 従ってこの変更は一旦 perl がインストールされれば何の影響もありません。 しかし、Attribute::Handlers, Safe, mro が新たに独自の権限を持つ エクステンションとなりましたので、もし Configure をビルドする エクステンションの正確なリストを指定するオプション付きで実行する場合、 これらのために変更する必要があるでしょう。

For 5.10.2, it is planned that many dual-life modules will have been moved from lib to ext; again this will have no effect on an installed perl, but will matter if you invoke Configure with a pre-canned list of extensions to build.

5.10.2 では、多くの 2 重管理されているモジュールが lib から ext に 移動することが計画されています; やはりこれはインストールされた perl には何の変更もありませんが、 もし予め設定されたビルドするエクステンションのリストを使って Configure を起動するときには影響があります。


If vendorlib and vendorarch are the same, then they are only added to @INC once.

vendorlibvendorarch が同じなら、@INC には 1 回だけ 追加されます。

$Config{usedevel} and the C-level PERL_USE_DEVEL are now defined if perl is built with -Dusedevel.

もし perl が -Dusedevel 付きでビルドされたなら、 $Config{usedevel} と C レベルの PERL_USE_DEVEL が定義されるように なりました。

Configure will enable use of -fstack-protector, to provide protection against stack-smashing attacks, if the compiler supports it.

Configure は、もしコンパイラが対応しているなら、 スタック破壊攻撃に対する防御のために、-fstack-protector の使用を 有効にします。

Configure will now determine the correct prototypes for re-entrant functions, and for gconvert, if you are using a C++ compiler rather than a C compiler.

Configure は、もし C コンパイラでなく C++ コンパイラを使うなら、 再入可能な関数と gconvert のための正しいプロトタイプを 決定するようになりました。

On Unix, if you build from a tree containing a git repository, the configuration process will note the commit hash you have checked out, for display in the output of perl -v and perl -V. Unpushed local commits are automatically added to the list of local patches displayed by perl -V.

Unix では、もし git レポジトリを含むツリーからビルドするなら、 設定プロセスは perl -vperl -V の出力での表示のために、 チェックアウトしたコミットハッシュを記録します。 プッシュされないローカルのコミットは自動的に perl -V によって表示されるローカルパッチの一覧に追加されます。


As part of the flattening of ext, all extensions on all platforms are built by make_ext.pl. This replaces the Unix-specific ext/util/make_ext, VMS-specific make_ext.com and Win32-specific win32/buildext.pl.

ext のフラット化の一部として、全てのプラットフォームの全ての エクステンションは make_ext.pl でビルドされます。 これは Unix 固有の ext/util/make_ext、VMS 固有の make_ext.com、 Win32 固有の win32/buildext.pl を置き換えます。



Removed libbsd for AIX 5L and 6.1. Only flock() was used from libbsd.

AIX 5L と 6.1 のための libbsd が取り除かれました。 flock() だけが libbsd を使っていました。

Removed libgdbm for AIX 5L and 6.1. The libgdbm is delivered as an optional package with the AIX Toolbox. Unfortunately the 64 bit version is broken.

AIX 5L and 6.1 のための libgdbm が取り除かれました。 libgdbm は AIX Toolbox の追加パッケージとして配布されています。 残念ながら 64 ビット版は壊れています。

Hints changes mean that AIX 4.2 should work again.

AIX 4.2 で再び動作するようにヒントが変更されました。


On Cygwin we now strip the last number from the DLL. This has been the behaviour in the cygwin.com build for years. The hints files have been updated.

Cygwin においては、DLL から最後の番号を取り除くことにしました。 これは何年間も cygwin.com のビルドの振る舞いとなっています。 ヒントファイルが更新されました。


The hints files now identify the correct threading libraries on FreeBSD 7 and later.

ヒントファイルは FreeBSD 7 以降での正しいスレッドライブラリを 識別するようになりました。


We now work around a bizarre preprocessor bug in the Irix 6.5 compiler: cc -E - unfortunately goes into K&R mode, but cc -E file.c doesn't.

Irix 6.5 コンパイラのプリプロセッサにある奇妙なバグを回避するように なりました: cc -E - は残念ながら K&R モードになりますが、cc -E file.c では なりません。


Patches from the Haiku maintainers have been merged in. Perl should now build on Haiku.

Haiku 管理者からのパッチがマージされました。 Perl は Haiku でビルドできるようになったはずです。


Perl should now build on MirOS BSD.

Perl は MirOS BSD でビルドできるようになったはずです。


Hints now supports versions 5.*.

ヒントがバージョン 5.* に対応しました。

Stratus VOS

Various changes from Stratus have been merged in.

Stratus からの様々な変更がマージされました。


There is now support for Symbian S60 3.2 SDK and S60 5.0 SDK.

Symbian S60 3.2 SDK と S60 5.0 SDK に対応するようになりました。


Improved message window handling means that alarm and kill messages will no longer be dropped under race conditions.

メッセージウィンドウの扱いが改良され、alarmkill のメッセージが 競合状態でも欠落しなくなりました。


Reads from the in-memory temporary files of PerlIO::scalar used to fail if $/ was set to a numeric reference (to indicate record-style reads). This is now fixed.

PerlIO::scalar のメモリ内一時ファイルからの読み込みは、 $/ が(レコード風読み込みを示すために)数値リファレンスにセットされていると 失敗していました。 これは修正されました。

VMS now supports getgrgid.

VMS が getgrgid に対応するようになりました。

Many improvements and cleanups have been made to the VMS file name handling and conversion code.

VMS ファイル名の扱いと変換に関するコードに対して多くの改良と整理が 行われました。

Enabling the PERL_VMS_POSIX_EXIT logical name now encodes a POSIX exit status in a VMS condition value for better interaction with GNV's bash shell and other utilities that depend on POSIX exit values. See "$?" in perlvms for details.

論理名 PERL_VMS_POSIX_EXIT を有効にすることで、VMS 条件値を POSIX 返りステータスに変換し、GNV の bash シェルやその他の POSIX 返り値に 依存しているユーティリティとの相互作用を高めます。 詳細については "$?" in perlvms を参照してください。


  • 5.10.0 inadvertently disabled an optimisation, which caused a measurable performance drop in list assignment, such as is often used to assign function parameters from @_. The optimisation has been re-instated, and the performance regression fixed.

    5.10.0 では不注意によって最適化が無効化されていたため、 例えば @_ から関数の引数への代入でよく使われるような、 リスト代入において目に見えるほどの性能低下を引き起こしていました。 この最適化は再導入され、性能面の退行が修正されました。

  • Fixed memory leak on while (1) { map 1, 1 } [RT #53038].

    while (1) { map 1, 1 } でのメモリリークが修正されました [RT #53038]。

  • Some potential coredumps in PerlIO fixed [RT #57322,54828].

    PerlIO でのコアダンプの可能性が修正されました [RT #57322,54828]。

  • The debugger now works with lvalue subroutines.


  • The debugger's m command was broken on modules that defined constants [RT #61222].

    定数が定義されたモジュールでは、デバッガの m コマンドが壊れていました [RT #61222]。

  • crypt() and string complement could return tainted values for untainted arguments [RT #59998].

    crypt() と文字列補完は汚染されていない引数から汚染された値を返すことが ありました [RT #59998].

  • The -i.suffix command-line switch now recreates the file using restricted permissions, before changing its mode to match the original file. This eliminates a potential race condition [RT #60904].

    -i.suffix コマンドラインオプションは、元のファイルに一致するように モードを変更する前に、制限されたパーミッションを使ってファイルを 再作成します。 これは競合条件の可能性を除去します [RT #60904]。

  • On some UNIX systems, the value in $? would not have the top bit set ($? & 128) even if the child core dumped.

    UNIX システムによっては、$? の値が、子がコアダンプしたときでも 最上位ビット ($? & 128) がされないことがありました。

  • Under some circumstances, $^R could incorrectly become undefined [RT #57042].

    状況によっては、$^R が間違って未定義になりました [RT #57042]。

  • (XS) In various hash functions, passing a pre-computed hash to when the key is UTF-8 might result in an incorrect lookup.

    (XS) 様々なハッシュ関数において、キーが UTF-8 の時に予め計算された ハッシュを渡すと、読み出しを間違うことがありました。

  • (XS) Including XSUB.h before perl.h gave a compile-time error [RT #57176].

    (XS) perl.h の前に XSUB.h をインクルードするとコンパイル時エラーが 発生していました [RT #57176]。

  • $object->isa('Foo') would report false if the package Foo didn't exist, even if the object's @ISA contained Foo.

    $object->isa('Foo') は、たとえ オブジェクトの @ISAFoo を 含んでいても、パッケージに Foo が存在していなければ偽を 返すようになりました。

  • Various bugs in the new-to 5.10.0 mro code, triggered by manipulating @ISA, have been found and fixed.

    5.10.0 で新規導入された mro コードで、@ISA を操作することによって 引き起こされる様々なバグが発見され、修正されました。

  • Bitwise operations on references could crash the interpreter, e.g. $x=\$y; $x |= "foo" [RT #54956].

    $x=\$y; $x |= "foo" のような、リファレンスに対するビット単位演算子が インタプリタをクラッシュさせることがありました [RT #54956]。

  • Patterns including alternation might be sensitive to the internal UTF-8 representation, e.g.

    代替を含むパターンが内部 UTF-8 表現に敏感になっていました;

        my $byte = chr(192);
        my $utf8 = chr(192); utf8::upgrade($utf8);
        $utf8 =~ /$byte|X}/i;       # failed in 5.10.0
  • Within UTF8-encoded Perl source files (i.e. where use utf8 is in effect), double-quoted literal strings could be corrupted where a \xNN, \0NNN or \N{} is followed by a literal character with ordinal value greater than 255 [RT #59908].

    UTF8-エンコードされた (つまり use utf8 が有効な) Perl ソースファイル内で、 ダブルクォートされたリテラル文字列が、 could be corrupted where a \xNN, \0NNN, \N{} の後に その値が 255 を超えるリテラル文字が続いている場合に、壊れることがありました [RT #59908]。

  • B::Deparse failed to correctly deparse various constructs: readpipe STRING [RT #62428], CORE::require(STRING) [RT #62488], sub foo(_) [RT #62484].

    B::Deparse は様々な構造を逆パースするのに失敗していました: readpipe STRING [RT #62428], CORE::require(STRING) [RT #62488], sub foo(_) [RT #62484].

  • Using setpgrp() with no arguments could corrupt the perl stack.

    setpgrp() を引数なしで使うと、perl のスタックが壊れることがありました。

  • The block form of eval is now specifically trappable by Safe and ops. Previously it was erroneously treated like string eval.

    ブロック形式の eval は特別に Safeops でトラップ可能に なりました。 以前は間違って文字列の eval のように扱われていました。

  • In 5.10.0, the two characters [~ were sometimes parsed as the smart match operator (~~) [RT #63854].

    5.10.0 では、2 つの文字 [~ が時々スマートマッチング演算子 (~~) としてパースされていました [RT #63854]。

  • In 5.10.0, the * quantifier in patterns was sometimes treated as {0,32767} [RT #60034, #60464]. For example, this match would fail:

    5.10.0 では、パターン中の * 量指定子が時々 {0,32767} として扱われていました[RT #60034, #60464]。 例えば、以下はマッチングに失敗していました:

        ("ab" x 32768) =~ /^(ab)*$/
  • shmget was limited to a 32 bit segment size on a 64 bit OS [RT #63924].

    shmget は 64 ビット OS で 32 ビットセグメントサイズに制限されていました [RT #63924]。

  • Using next or last to exit a given block no longer produces a spurious warning like the following:

    given ブロックから出るために nextlast を使ったときに、 以下のような誤った警告が出力されなくなりました:

        Exiting given via last at foo.pl line 123
  • On Windows, '.\foo' and '..\foo' were treated differently than './foo' and '../foo' by do and require [RT #63492].

    Windows では、dorequire において、'.\foo''..\foo''./foo''../foo' とは異なって扱われていました [RT #63492]。

  • Assigning a format to a glob could corrupt the format; e.g.:

    以下のように、フォーマットからグロブへの代入を行うと、 フォーマットが壊れることがありました:

         *bar=*foo{FORMAT}; # foo format now bad
  • Attempting to coerce a typeglob to a string or number could cause an assertion failure. The correct error message is now generated, Can't coerce GLOB to $type.

    型グロブを文字列や数値に変換しようとすると、アサーション失敗が 発生することがありました。 正しいエラーメッセージである Can't coerce GLOB to $type が 生成されるようになりました。

  • Under use filetest 'access', -x was using the wrong access mode. This has been fixed [RT #49003].

    use filetest 'access' 中に、-x は間違ったアクセスモードを 使っていました。 これは修正されました [RT #49003]。

  • length on a tied scalar that returned a Unicode value would not be correct the first time. This has been fixed.

    Unicode 値を返す tie されたスカラに対する length が、初回は 正しく動作していませんでした。 これは修正されました。

  • Using an array tie inside in array tie could SEGV. This has been fixed. [RT #51636]

    配列 tie の中で配列 tie を使うと SEGV になることがありました。 これは修正されました。 [RT #51636]

  • A race condition inside PerlIOStdio_close() has been identified and fixed. This used to cause various threading issues, including SEGVs.

    PerlIOStdio_close() 内での競合条件が識別され、修正されました。 これは SEGV を含む、様々なスレッドの問題を引き起こしていました。

  • In unpack, the use of () groups in scalar context was internally placing a list on the interpreter's stack, which manifested in various ways, including SEGVs. This is now fixed [RT #50256].

    unpack で、スカラコンテキストで () グループを使うと、内部的に インタプリタのスタックにリストが置かれ、SEGV を含む様々な現象が 起きていました。 これは修正されました [RT #50256]。

  • Magic was called twice in substr, \&$x, tie $x, $m and chop. These have all been fixed.

    substr, \&$x, tie $x, $m, chop で、マジックが 2 回 呼び出されていました。 これらは全て修正されました。

  • A 5.10.0 optimisation to clear the temporary stack within the implicit loop of s///ge has been reverted, as it turned out to be the cause of obscure bugs in seemingly unrelated parts of the interpreter [commit ef0d4e17921ee3de].

    5.10.0 での、s///ge の暗黙のループ中の一時的なスタックをクリアするという 最適化は差し戻されました; これがインタプリタの無関係な部分での 不明瞭なバグの原因となっていたからです [commit ef0d4e17921ee3de]。

  • The line numbers for warnings inside elsif are now correct.

    elsif 内での警告の行番号が正しくなりました。

  • The .. operator now works correctly with ranges whose ends are at or close to the values of the smallest and largest integers.

    .. 演算子は、どちらかの端が整数の最小値や最大値に近い値でも 正しく動作するようになりました。

  • binmode STDIN, ':raw' could lead to segmentation faults on some platforms. This has been fixed [RT #54828].

    binmode STDIN, ':raw' は、プラットフォームによってはセグメンテーション フォルトを引き起こすことがありました。 これは修正されました [RT #54828]。

  • An off-by-one error meant that index $str, ... was effectively being executed as index "$str\0", .... This has been fixed [RT #53746].

    index $str, ... が実際には index "$str\0", ... として実行されるという 境界条件のエラーがありました。 これは修正されました [RT #53746]。

  • Various leaks associated with named captures in regexes have been fixed [RT #57024].

    正規表現での名前付き捕捉に関連する様々なリークが修正されました [RT #57024]。

  • A weak reference to a hash would leak. This was affecting DBI [RT #56908].

    ハッシュへの弱いリファレンスがリークを起こすことがありました。 これは DBI に影響を与えていました [RT #56908]。

  • Using (?|) in a regex could cause a segfault [RT #59734].

    正規表現で (?|) を使うとセグメンテンションフォールトを引き起こすことが ありました [RT #59734]。

  • Use of a UTF-8 tr// within a closure could cause a segfault [RT #61520].

    クロージャ内で UTF-8 の tr// を使うとセグメンテンションフォールトを 引き起こすことがありました [RT #61520]。

  • Calling sv_chop() or otherwise upgrading an SV could result in an unaligned 64-bit access on the SPARC architecture [RT #60574].

    sv_chop() やその他で SV を昇格させると、SPARC アーキテクチャでは アライメントされていない 64-ビットアクセスをする場合がありました [RT #60574]。

  • In the 5.10.0 release, inc_version_list would incorrectly list 5.10.* after 5.8.*; this affected the @INC search order [RT #67628].

    5.10.0 リリースでは、inc_version_list は間違って 5.8.* の後に 5.10.* をリストしていました; これは @INC の検索順に影響を 与えていました [RT #67628]。

  • In 5.10.0, pack "a*", $tainted_value returned a non-tainted value [RT #52552].

    5.10.0 では、pack "a*", $tainted_value は汚染されていない値を 返していました [RT #52552]。

  • In 5.10.0, printf and sprintf could produce the fatal error panic: utf8_mg_pos_cache_update when printing UTF-8 strings [RT #62666].

    5.10.0 では、printfsprintf で UTF-8 文字列を表示するときに 致命的エラー panic: utf8_mg_pos_cache_update が出ることがありました [RT #62666]。

  • In the 5.10.0 release, a dynamically created AUTOLOAD method might be missed (method cache issue) [RT #60220,60232].

    5.10.0 リリースでは、動的に作成した AUTOLOAD メソッドが失われることが ありました (メソッドキャッシュの問題です) [RT #60220,60232]。

  • In the 5.10.0 release, a combination of use feature and //ee could cause a memory leak [RT #63110].

    5.10.0 リリースでは、use feature//ee の組み合わせで メモリリークを起こすことがありました [RT #63110]。

  • -C on the shebang (#!) line is once more permitted if it is also specified on the command line. -C on the shebang line used to be a silent no-op if it was not also on the command line, so perl 5.10.0 disallowed it, which broke some scripts. Now perl checks whether it is also on the command line and only dies if it is not [RT #67880].

    shebang (#!) 行 での -C は、コマンドラインでも指定されている場合は 再び許可されるようになりました。 shebang 行での -C は、もし コマンドラインで指定されていなかった 場合には暗黙に no-op となっていました; これは perl 5.10.0 では 不許可となりましたが、これによって動かなくなるスクリプトもありました。 perl はコマンドラインでも指定されているかどうかを調べて、 指定されていないときにだけ die するようになりました [RT #67880]。

  • In 5.10.0, certain types of re-entrant regular expression could crash, or cause the following assertion failure [RT #60508]:

    5.10.0 で、ある種の再入可能な正規表現によってクラッシュしたり、 以下のアサーション失敗を出力したりすることがありました [RT #60508]:

        Assertion rx->sublen >= (s - rx->subbeg) + i failed


panic: sv_chop %s

This new fatal error occurs when the C routine Perl_sv_chop() was passed a position that is not within the scalar's string buffer. This could be caused by buggy XS code, and at this point recovery is not possible.

これは、C ルーチン Perl_sv_chop() に、スカラの文字列バッファ内でない 位置が渡された時に発生する、新しい致命的エラーです。 これはバグっぽい XS コードによって引き起こされ、この時点では 回復は不可能です。

Can't locate package %s for the parents of %s

This warning has been removed. In general, it only got produced in conjunction with other warnings, and removing it allowed an ISA lookup optimisation to be added.

この警告は取り除かれました。 一般的に、これは他の警告と同時にのみ生成され、これを取り除くことによって ISA 読み出しの最適化が追加できるようになりました。

v-string in use/require is non-portable

This warning has been removed.


Deep recursion on subroutine "%s"

It is now possible to change the depth threshold for this warning from the default of 100, by recompiling the perl binary, setting the C pre-processor macro PERL_SUB_DEPTH_WARN to the desired value.

この警告が出る深さの閾値は、デフォルトでは 100 ですが、C プリプロセッサ マクロ PERL_SUB_DEPTH_WARN を好みの値に変えて perl バイナリを 再コンパイルすることによって、変更できるようになりました。


  • The J.R.R. Tolkien quotes at the head of C source file have been checked and proper citations added, thanks to a patch from Tom Christiansen.

    C ソースファイルの先頭にある J.R.R. Tolkien の引用文がチェックされ、 適切な言及が追加されました; Tom Christiansen からのパッチに感謝します。

  • vcroak() now accepts a null first argument. In addition, a full audit was made of the "not NULL" compiler annotations, and those for several other internal functions were corrected.

    vcroak() は最初の引数として null も受け付けるようになりました。 さらに、「非 NULL」に関するコンパイラ注釈の完全な監査が行われ、 その他のいくつかの内部関数が修正されました。

  • New macros dSAVEDERRNO, dSAVE_ERRNO, SAVE_ERRNO, RESTORE_ERRNO have been added to formalise the temporary saving of the errno variable.

    errno 変数を一時的に補完することを形式化するための、 dSAVEDERRNO, dSAVE_ERRNO, SAVE_ERRNO, RESTORE_ERRNO という 新しいマクロが追加されました。

  • The function Perl_sv_insert_flags has been added to augment Perl_sv_insert.

    Perl_sv_insert 関数を拡大するために、Perl_sv_insert_flags 関数が 追加されました。

  • The function Perl_newSV_type(type) has been added, equivalent to Perl_newSV() followed by Perl_sv_upgrade(type).

    Perl_newSV() の後 Perl_sv_upgrade(type) を実行するのと等価な、 Perl_newSV_type(type) 関数が追加されました。

  • The function Perl_newSVpvn_flags() has been added, equivalent to Perl_newSVpvn() and then performing the action relevant to the flag.

    Perl_newSVpvn_flags() 関数が追加されました; これは Perl_newSVpvn() と 等価で、それからフラグに関連する動作を行います。

    Two flag bits are currently supported.



    This will call SvUTF8_on() for you. (Note that this does not convert an sequence of ISO 8859-1 characters to UTF-8). A wrapper, newSVpvn_utf8() is available for this.

    これはあなたのために SvUTF8_on() を呼び出します。 (これは ISO 8859-1 文字のシーケンスを UTF-8 に変換しないことに 注意してください。) これのためのラッパである newSVpvn_utf8() が利用可能です。


    Call sv_2mortal() on the new SV.

    新しい SV に対して sv_2mortal() を呼び出します。

    There is also a wrapper that takes constant strings, newSVpvs_flags().

    定数文字列を取るラッパである newSVpvs_flags() もあります。

  • The function Perl_croak_xs_usage has been added as a wrapper to Perl_croak.

    Perl_croak へのラッパとして、Perl_croak_xs_usage 関数が追加されました。

  • The functions PerlIO_find_layer and PerlIO_list_alloc are now exported.

    PerlIO_find_layer 関数と PerlIO_list_alloc 関数が エクスポートされるようになりました。

  • PL_na has been exterminated from the core code, replaced by local STRLEN temporaries, or *_nolen() calls. Either approach is faster than PL_na, which is a pointer deference into the interpreter structure under ithreads, and a global variable otherwise.

    PL_na はコアコードから全て取り除かれ、ローカルな STRLEN テンポラリか *_nolen() 呼び出しに置き換えられました。 どちらの手法も、ithreads ではインタプリタ構造体へ、さもなければ グローバル変数へポインタを守る PL_na よりも高速です。

  • Perl_mg_free() used to leave freed memory accessible via SvMAGIC() on the scalar. It now updates the linked list to remove each piece of magic as it is freed.

    Perl_mg_free() は、スカラでの SvMAGIC() 経由でアクセスできる 開放されたメモリをそのままにしていました。 それぞれのマジックのかけらが開放されるごとに削除されるように、 リンクリストが更新されるようになりました。

  • Under ithreads, the regex in PL_reg_curpm is now reference counted. This eliminates a lot of hackish workarounds to cope with it not being reference counted.

    ithreads において、PL_reg_curpm 内の正規表現は参照カウントを 行うようにありました。 これにより、参照カウントを行っていないことによる多くのハックっぽい 回避方法が不要になります。

  • Perl_mg_magical() would sometimes incorrectly turn on SvRMAGICAL(). This has been fixed.

    Perl_mg_magical() は時々間違って SvRMAGICAL() を作動させていました。 これは修正されました。

  • The public IV and NV flags are now not set if the string value has trailing "garbage". This behaviour is consistent with not setting the public IV or NV flags if the value is out of range for the type.

    IV と NV の public フラグは、もし文字列値の末尾に「ゴミ」が ついている場合はセットされなくなりました。 この振る舞いは、値が型の範囲を超えているときに IV や NV の public フラグがセットされないことと一貫しています。

  • SV allocation tracing has been added to the diagnostics enabled by -Dm. The tracing can alternatively output via the PERL_MEM_LOG mechanism, if that was enabled when the perl binary was compiled.

    -Dm で有効になる診断に、SV 割り当てトレースが追加されました。 トレースは、もし perl バイナリがコンパイルされたときに PERL_MEM_LOG 機構が有効になっていた場合には、これを通しても出力されます。

  • Uses of Nullav, Nullcv, Nullhv, Nullop, Nullsv etc have been replaced by NULL in the core code, and non-dual-life modules, as NULL is clearer to those unfamiliar with the core code.

    Nullav, Nullcv, Nullhv, Nullop, Nullsv などは、 コアコードおよび 2 重管理されていないモジュールでは NULL に置き換えられました; NULL はコアコードに親しんでいなくても より明確だからです。

  • A macro MUTABLE_PTR(p) has been added, which on (non-pedantic) gcc will not cast away const, returning a void *. Macros MUTABLE_SV(av), MUTABLE_SV(cv) etc build on this, casting to AV * etc without casting away const. This allows proper compile-time auditing of const correctness in the core, and helped picked up some errors (now fixed).

    MUTABLE_PTR(p) マクロが追加されました; これは (pedantic でない) gcc では const 状態を捨てずに、void * を返します。 MUTABLE_SV(av), MUTABLE_SV(cv) などのマクロはこれを使って 作成され、const 状態を捨てることなく AV * などにキャストします。 これにより const の正当性の適切なコンパイル時の監査が可能になり、 いくつかのエラーの発見に役立ちました(これらは修正されました)。

  • Macros mPUSHs() and mXPUSHs() have been added, for pushing SVs on the stack and mortalizing them.

    SV をスタックにプッシュし、それを揮発化させるための、 mPUSHs()mXPUSHs() のマクロが追加されました。

  • Use of the private structure mro_meta has changed slightly. Nothing outside the core should be accessing this directly anyway.

    プライベート構造体 mro_meta の使用が少し変更されました。 どちらにしろ、コアの外側からこれにアクセスすることは出来ません。

  • A new tool, Porting/expand-macro.pl has been added, that allows you to view how a C preprocessor macro would be expanded when compiled. This is handy when trying to decode the macro hell that is the perl guts.

    新しいツールである Porting/expand-macro.pl が追加され、 コンパイル時に C プリプロセッサマクロがどのように展開されるかを見られます。 これは perl の内部でマクロを展開しようとする時に便利です。


Many modules updated from CPAN incorporate new tests.

CPAN から更新された多くのモジュールに新しいテストが組み込まれました。

Several tests that have the potential to hang forever if they fail now incorporate a "watchdog" functionality that will kill them after a timeout, which helps ensure that make test and make test_harness run to completion automatically. (Jerry Hedden).

いくつかのテストは、テストが時間切れになった後に kill することで make testmake test_harness が自動的に実行を終了することを 確実にするために組み込まれた「番犬」機能で失敗すると、 ハングアップしてしまう可能性がありました (Jerry Hedden)。

Some core-specific tests have been added:



Check that the debugger can retain source lines from eval.

デバッガが eval からソース行を得られるかをチェックします。


Check that bad layers fail.



Check that PerlIO layers are not leaking.

PerlIO 層がリークしていないかをチェックします。


Check that certain special forms of open work.

open のある種の特殊な形式が動作するかをチェックします。


General PerlIO tests.

PerlIO を全体的にテストします。


Check that there is no unexpected interaction between the internal types PVBM and PVGV.

内部型 PVBMPVGV の間で想定外の相互作用がないことをチェックします。


Check that mro works properly in the presence of aliased packages.

エイリアス化されたパッケージが存在したときに MRO が適切に動作するかを チェックします。


Tests for dbmopen and dbmclose.

dbmopendbmclose をテストします。


Tests for the interaction of index and threads.

index とスレッドの相互作用をテストします。


Tests for the interaction of esoteric patterns and threads.



Test that qr doesn't leak.

qr がリークしていないことをテストします。


Tests for the interaction of regex recursion and threads.

regex 再帰とスレッドの相互作用をテストします。


Tests for the interaction of patterns with embedded qr// and threads.

組み込みの qr// があるパターンとスレッドの相互作用をテストします。


Tests for Unicode properties in regular expressions.

正規表現中の Unicode 特性をテストします。


Tests for the interaction of Unicode properties and threads.

Unicode 特性とスレッドの相互作用をテストします。


Test the tied methods of Tie::Hash::NamedCapture.

Tie::Hash::NamedCapture の tie されたメソッドをテストします。


Check that POSIX character classes behave consistently.

POSIX 文字クラスが一貫性を持って振る舞うかをチェックします。


Check that exportable re functions in universal.c work.

universal.c のエクスポート可能な re 関数が動作するかをチェックします。


Check that setpgrp works.

setpgrp が動作するかをチェックします。


Tests for the interaction of substr and threads.

substr とスレッドの相互作用をテストします。


Check that upgrading and assigning scalars works.



Check that Unicode in the lexer works.

文法解析器中の Unicode が動作するかをチェックします。


Check that Unicode and tie work.

Unicode と tie が動作するかをチェックします。


This is a list of some significant unfixed bugs, which are regressions from either 5.10.0 or 5.8.x.

以下はいくつかの重要な未修正のバグの一覧で、5.10.0 か 5.8.x からの 退行です。

  • List::Util::first misbehaves in the presence of a lexical $_ (typically introduced by my $_ or implicitly by given). The variable which gets set for each iteration is the package variable $_, not the lexical $_ [RT #67694].

    List::Util::first は (典型的には my $_given による) レキシカルな $_ の存在について振る舞いを間違えていました。 each の反復で設定される変数はレキシカルな $_ ではなくパッケージ変数の $_ です [RT #67694]。

    A similar issue may occur in other modules that provide functions which take a block as their first argument, like

    同様の問題は、以下のように、最初の引数としてブロックを取る関数を提供している その他のモジュールにも発生するかもしれません。

        foo { ... $_ ...} list
  • The charnames pragma may generate a run-time error when a regex is interpolated [RT #56444]:

    charnames プラグマは、正規表現が変数展開されたときに実行時エラーを 出すことがあります [RT #56444]:

        use charnames ':full';
        my $r1 = qr/\N{THAI CHARACTER SARA I}/;
        "foo" =~ $r1;    # okay
        "foo" =~ /$r1+/; # runtime error

    A workaround is to generate the character outside of the regex:


        my $a = "\N{THAI CHARACTER SARA I}";
        my $r1 = qr/$a/;
  • Some regexes may run much more slowly when run in a child thread compared with the thread the pattern was compiled into [RT #55600].

    正規表現によっては、パターンをコンパイルしたスレッドで実行するのに比べて 子スレッドではとても遅くなることがあります [RT #55600]。


The following items are now deprecated.


  • Switch is buggy and should be avoided. From perl 5.11.0 onwards, it is intended that any use of the core version of this module will emit a warning, and that the module will eventually be removed from the core (probably in perl 5.14.0). See "Switch statements" in perlsyn for its replacement.

    Switch はバグが多いので避けるべきです。 perl 5.11.0 以降、このモジュールのコアバージョンを使うと警告が出力され、 最終的には(おそらく perl 5.14.0 で)コアから取り除かれます。 代替品については "Switch statements" in perlsyn を参照してください。

  • suidperl will be removed in 5.12.0. This provides a mechanism to emulate setuid permission bits on systems that don't support it properly.

    suidperl は 5.12.0 で取り除かれます。 これは setuid 許可ビットを正しく扱えないシステムで、これをエミュレートする 機構を提供しています。


Some of the work in this release was funded by a TPF grant.

このリリースの作業の一部は TRF の助成金を受けています。

Nicholas Clark officially retired from maintenance pumpking duty at the end of 2008; however in reality he has put much effort in since then to help get 5.10.1 into a fit state to be released, including writing a considerable chunk of this perldelta.

Nicholas Clark は 2008 年末をもって公式にメンテナンス pumpking の役目から 引退しました; しかし、実際のところ彼はこの perldelta のかなり部分を 書くことを含む、5.10.1 をリリースできる状態にするために多くの 努力をしています。

Steffen Mueller and David Golden in particular helped getting CPAN modules polished and synchronised with their in-core equivalents.

特に Steffen Mueller と David Golden は CPAN モジュールを磨き上げて コア内部の等価物と同期させることを助けました。

Craig Berry was tireless in getting maint to run under VMS, no matter how many times we broke it for him.

Craig Berry は、何度私たちが中断させようとしても、飽きることなく VMS で動作するように管理しつつけました。

The other core committers contributed most of the changes, and applied most of the patches sent in by the hundreds of contributors listed in AUTHORS.

その他のコアコミッタはほとんどの変更を提供し、AUTHORS に上げられている 数百の貢献者によって送られたパッチのほとんどを適用しました。

(Sorry to all the people I haven't mentioned by name).


Finally, thanks to Larry Wall, without whom none of this would be necessary.

最後に、Larry Wall に感謝します; 彼がいなければこれら全ては不要でした。


If you find what you think is a bug, you might check the articles recently posted to the comp.lang.perl.misc newsgroup and the perl bug database at http://rt.perl.org/perlbug/ . There may also be information at http://www.perl.org/ , the Perl Home Page.

もしバグと思われるものを見つけたら、comp.lang.perl.misc ニュースグループに 最近投稿された記事や http://rt.perl.org/perlbug/ にある perl バグ データベースを確認してください。 Perl ホームページ、http://www.perl.org にも情報があります。

If you believe you have an unreported bug, please run the perlbug program included with your release. Be sure to trim your bug down to a tiny but sufficient test case. Your bug report, along with the output of perl -V, will be sent off to perlbug@perl.org to be analysed by the Perl porting team.

もしまだ報告されていないバグだと確信したら、そのリリースに含まれている perlbug プログラムをを実行してください。 バグの再現スクリプトを十分小さく、しかし有効なコードに切りつめることを 意識してください。バグレポートは perl -V の出力と一緒に perlbug@perl.org に送られ Perl porting チームによって解析されます。

If the bug you are reporting has security implications, which make it inappropriate to send to a publicly archived mailing list, then please send it to perl5-security-report@perl.org. This points to a closed subscription unarchived mailing list, which includes all the core committers, who be able to help assess the impact of issues, figure out a resolution, and help co-ordinate the release of patches to mitigate or fix the problem across all platforms on which Perl is supported. Please only use this address for security issues in the Perl core, not for modules independently distributed on CPAN.

もし報告しようとしているバグがセキュリティに関するもので、公開されている メーリングリストに送るのが不適切なものなら、 perl5-security-report@perl.org に送ってください。 このアドレスは、問題の影響を評価し、解決法を見つけ、Perl が対応している 全てのプラットフォームで問題を軽減または解決するパッチをリリースするのを 助けることが出来る、全てのコアコミッタが参加している非公開の メーリングリストになっています。 このアドレスは、独自に CPAN で配布されているモジュールではなく、 Perl コアのセキュリティ問題だけに使ってください。


The Changes file for an explanation of how to view exhaustive details on what changed.

Changes ファイルに変更点の完全な詳細を見る方法についての説明があります。

The INSTALL file for how to build Perl.

INSTALL ファイルに Perl のビルド方法があります。

The README file for general stuff.

README ファイルに一般的なことがあります。

The Artistic and Copying files for copyright information.

Artistic 及び Copying ファイルに著作権情報があります。