名前

perl5180delta - what is new for perl v5.18.0

perl5180delta - perl v5.18.0 での変更点

説明

This document describes differences between the v5.16.0 release and the v5.18.0 release.

この文書は v5.16.0 リリースと v5.18.0 リリースの変更点を記述しています。

If you are upgrading from an earlier release such as v5.14.0, first read perl5160delta, which describes differences between v5.14.0 and v5.16.0.

v5.14.0 のような以前のリリースから更新する場合は、まず v5.14.0 と v5.16.0 の違いについて記述している perl5160delta を読んでください。

コアの拡張

実験的機能のための新しい機構

Newly-added experimental features will now require this incantation:

新しく追加された実験的機能には以下の決まり文句が必要になりました:

    no warnings "experimental::feature_name";
    use feature "feature_name";  # would warn without the prev line

There is a new warnings category, called "experimental", containing warnings that the feature pragma emits when enabling experimental features.

"experimental" と呼ばれる新しい警告カテゴリができました; 実験的機能が 有効になったときに feature プラグマによって出力される警告が含まれます。

Newly-added experimental features will also be given special warning IDs, which consist of "experimental::" followed by the name of the feature. (The plan is to extend this mechanism eventually to all warnings, to allow them to be enabled or disabled individually, and not just by category.)

新しく追加された実験的機能はまた、"experimental::" に引き続いて機能の 名前からなる特殊な警告 ID が与えられます。 (計画では、この機構は最終的には全ての警告に拡張され、単にカテゴリ単位でなく、 ここに有効にしたり無効にしたりできるようになります。)

By saying

以下のようにすると

    no warnings "experimental::feature_name";

you are taking responsibility for any breakage that future changes to, or removal of, the feature may cause.

あなたはこの機能の将来の変更や削除が引き起こすかも知れないあらゆる破損に 責任を持つことになります。

Since some features (like ~~ or my $_) now emit experimental warnings, and you may want to disable them in code that is also run on perls that do not recognize these warning categories, consider using the if pragma like this:

(~~my $_ のような) 一部の機能は実験的警告を出力するようになり、 またこれらの警告カテゴリを認識しない perl でも実行するコードでこれらを 無効にしたいかもしれないので、以下のように if プラグマを使うことを 考慮してください:

    no if $] >= 5.018, 'warnings', "experimental::feature_name";

Existing experimental features may begin emitting these warnings, too. Please consult perlexperiment for information on which features are considered experimental.

既にある実験的機能もこれらの警告を出力し始めるようになります。 どの機能が実験的と考えられているかに関する情報については perlexperiment を 参照してください。

ハッシュの見直し

Changes to the implementation of hashes in perl v5.18.0 will be one of the most visible changes to the behavior of existing code.

perl v5.18.0 でのハッシュの実装の変更は、既存のコードの振る舞いに対して もっとも目に見える変更の一つです。

By default, two distinct hash variables with identical keys and values may now provide their contents in a different order where it was previously identical.

デフォルトでは、同じキーと値を持つ二つの異なったハッシュ変数は、 以前は同じであったところで異なった順序で内容を提供するようになります。

When encountering these changes, the key to cleaning up from them is to accept that hashes are unordered collections and to act accordingly.

これらの変更に遭遇したら、きれいにする鍵は、ハッシュは順番のない集合 と いうことを受け入れてそれに従って動作することです。

ハッシュのランダム化

The seed used by Perl's hash function is now random. This means that the order which keys/values will be returned from functions like keys(), values(), and each() will differ from run to run.

Perl のハッシュ関数が使う種はランダムになりました。 これは、keys(), values(), each() のような関数が返すキー/値の 順序は実行毎に異なるということです。

This change was introduced to make Perl's hashes more robust to algorithmic complexity attacks, and also because we discovered that it exposes hash ordering dependency bugs and makes them easier to track down.

この変更は、アルゴリズム的複雑性攻撃から Perl ハッシュをより堅牢に することと、ハッシュの順序に依存したバグが発見され、これによってより容易に 突き止められることが分かったからです。

Toolchain maintainers might want to invest in additional infrastructure to test for things like this. Running tests several times in a row and then comparing results will make it easier to spot hash order dependencies in code. Authors are strongly encouraged not to expose the key order of Perl's hashes to insecure audiences.

ツールチェーンのメンテナはこのようなことに対してテストするための追加の 基盤に投資したいかもしれません。 テストを連続して何回か実行してから結果を比べることで、コード中の ハッシュ順への依存を見つけ出すのがより容易になります。 作者は Perl のハッシュのキーの順序を安全でない聴衆に公開しないように強く 勧めます。

Further, every hash has its own iteration order, which should make it much more difficult to determine what the current hash seed is.

さらに、それぞれのハッシュは独自の反復順序を持ちます; これにより、現在の ハッシュの種が何かを決定するのが遥かに難しくなります。

新しいハッシュ関数

Perl v5.18 includes support for multiple hash functions, and changed the default (to ONE_AT_A_TIME_HARD), you can choose a different algorithm by defining a symbol at compile time. For a current list, consult the INSTALL document. Note that as of Perl v5.18 we can only recommend use of the default or SIPHASH. All the others are known to have security issues and are for research purposes only.

Perl v5.18 は複数のハッシュ関数への対応を含んでいて、デフォルトが (ONE_AT_A_TIME_HARD に) 変更され、コンパイル時にシンボルを定義することで 異なるアルゴリズムを選べます。 現在の一覧については、INSTALL 文書に当たってください。 Perl v5.18 現在、私たちはデフォルトまたは SIPHASH の使用のみを 推奨していることに注意してください。 そのほか全てはセキュリティ問題があることが知られていて、研究目的のため だけのものです。

PERL_HASH_SEED 環境変数は 16 進数値を取るようになりました

PERL_HASH_SEED no longer accepts an integer as a parameter; instead the value is expected to be a binary value encoded in a hex string, such as "0xf5867c55039dc724". This is to make the infrastructure support hash seeds of arbitrary lengths, which might exceed that of an integer. (SipHash uses a 16 byte seed.)

PERL_HASH_SEED は整数を引数として受け付けなくなりました; 代わりに値は "0xf5867c55039dc724" のような、16 進文字列でエンコードされたバイナリ値を 想定するようになりました。 これは整数を超えるかも知れない任意の長さのハッシュの種に対応する基盤を 作るためです。 (SipHash は 16 バイトの種を使います。)

PERL_PERTURB_KEYS 環境変数が追加されました

The PERL_PERTURB_KEYS environment variable allows one to control the level of randomization applied to keys and friends.

PERL_PERTURB_KEYS 環境変数は keys およびその親類に適用されるランダム化の レベルを制御出来ます。

When PERL_PERTURB_KEYS is 0, perl will not randomize the key order at all. The chance that keys changes due to an insert will be the same as in previous perls, basically only when the bucket size is changed.

PERL_PERTURB_KEYS が 0 なら、perl はキー順序を全くランダム化しません。 挿入によって keys が変更される機会は以前の perl と同じで、基本的に バケツサイズが変わるときだけです。

When PERL_PERTURB_KEYS is 1, perl will randomize keys in a non-repeatable way. The chance that keys changes due to an insert will be very high. This is the most secure and default mode.

PERL_PERTURB_KEYS が 1 なら、perl は再現出来ない方法でキーを ランダム化します。 挿入によって keys が変更される機会はとても高いです。 これはもっとも安全でデフォルトのモードです。

When PERL_PERTURB_KEYS is 2, perl will randomize keys in a repeatable way. Repeated runs of the same program should produce the same output every time.

PERL_PERTURB_KEYS が 2 なら、perl はキーを再現可能な方法で ランダム化します。 同じプログラムを繰り返し実行すると毎回同じ出力を生成します。

PERL_HASH_SEED implies a non-default PERL_PERTURB_KEYS setting. Setting PERL_HASH_SEED=0 (exactly one 0) implies PERL_PERTURB_KEYS=0 (hash key randomization disabled); settng PERL_HASH_SEED to any other value implies PERL_PERTURB_KEYS=2 (deterministic and repeatable hash key randomization). Specifying PERL_PERTURB_KEYS explicitly to a different level overrides this behavior.

PERL_HASH_SEED は非デフォルトの PERL_PERTURB_KEYS 設定という意味を 含みます。 PERL_HASH_SEED=0 (正確に一つの 0) に設定すると PERL_PERTURB_KEYS=0 (ハッシュキーランダム化の無効化) という意味を含みます; PERL_HASH_SEED をその他の値に設定すると、PERL_PERTURB_KEYS=2 (決定的で 再現可能なハッシュキーランダム化) という意味を含みます。 明示的に PERL_PERTURB_KEYS を異なったレベルに指定するとこの振る舞いを 上書きします。

Hash::Util::hash_seed() は文字列を返すようになりました

Hash::Util::hash_seed() now returns a string instead of an integer. This is to make the infrastructure support hash seeds of arbitrary lengths which might exceed that of an integer. (SipHash uses a 16 byte seed.)

Hash::Util::hash_seed() は整数ではなく文字列を返すようになりました。 これは整数を超えるかも知れない任意の長さのハッシュの種に対応する基盤を 作るためです。 (SipHash は 16 バイトの種を使います。)

PERL_HASH_SEED_DEBUG の出力は変更されました

The environment variable PERL_HASH_SEED_DEBUG now makes perl show both the hash function perl was built with, and the seed, in hex, in use for that process. Code parsing this output, should it exist, must change to accommodate the new format. Example of the new format:

環境変数 PERL_HASH_SEED_DEBUG は、perl がビルドされたハッシュ関数 および、 そのプロセスで使っている種の 16 進表記の両方を表示するようになりました。 この出力をパースするコードは、存在するはずですが、新しい形式に適合するように 変更しなければなりません: 新しい形式の例は:

    $ PERL_HASH_SEED_DEBUG=1 ./perl -e1
    HASH_FUNCTION = MURMUR3 HASH_SEED = 0x1476bb9f

Unicode 6.2 への更新

Perl now supports Unicode 6.2. A list of changes from Unicode 6.1 is at http://www.unicode.org/versions/Unicode6.2.0.

Perl は Unicode 6.2 に対応するようになりました。 Unicode 6.1 からの変更点の一覧は http://www.unicode.org/versions/Unicode6.2.0 にあります。

文字名別名は非 Latin1 の範囲の文字も含むようになりました

It is possible to define your own names for characters for use in \N{...}, charnames::vianame(), etc. These names can now be comprised of characters from the whole Unicode range. This allows for names to be in your native language, and not just English. Certain restrictions apply to the characters that may be used (you can't define a name that has punctuation in it, for example). See "CUSTOM ALIASES" in charnames.

\N{...}, charnames::vianame() などで使うための文字に対する独自の名前を 定義することができます。 これらの名前は Unicode の範囲全体の文字で構成できるようになりました。 これにより、名前に英語だけでなくネイティブな名前を付けられるようになります。 使える文字にはある種の制限が適用されます (例えば、句読点を含む名前は 定義できません)。 "CUSTOM ALIASES" in charnames を参照してください。

新しい DTrace プローブ

The following new DTrace probes have been added:

以下の新しい DTrace プローブが追加されました:

  • op-entry

  • loading-file

  • loaded-file

${^LAST_FH}

This new variable provides access to the filehandle that was last read. This is the handle used by $. and by tell and eof without arguments.

この新しい変数は、最後に読み込んだファイルハンドルへのアクセスを提供します。 これは、$. および、引数なしの tell および eof で使われる ハンドルです。

正規表現集合演算

This is an experimental feature to allow matching against the union, intersection, etc., of sets of code points, similar to Unicode::Regex::Set. It can also be used to extend /x processing to [bracketed] character classes, and as a replacement of user-defined properties, allowing more complex expressions than they do. See "Extended Bracketed Character Classes" in perlrecharclass.

これは、Unicode::Regex::Set と同様に、符号位置の集合の和集合、 共有集合などに対してマッチングできるようにする 実験的な 機能です。 これはまた拡張 /x 処理を [大かっこ] 文字クラスで使えるようにし、 ユーザー定義特性の代わりとして、それがするよりも複雑な式が可能になりました。 "Extended Bracketed Character Classes" in perlrecharclass を参照してください。

レキシカルサブルーチン

This new feature is still considered experimental. To enable it:

この新機能はまだ 実験的 と考えられています。 有効にするには:

    use 5.018;
    no warnings "experimental::lexical_subs";
    use feature "lexical_subs";

You can now declare subroutines with state sub foo, my sub foo, and our sub foo. (state sub requires that the "state" feature be enabled, unless you write it as CORE::state sub foo.)

state sub foo, my sub foo, our sub foo でサブルーチンを 宣言できます。 (state sub は、CORE::state sub foo と書かない限り、"state" 機能が 有効であることが必要です。)

state sub creates a subroutine visible within the lexical scope in which it is declared. The subroutine is shared between calls to the outer sub.

state sub は、宣言されたレキシカルスコープから見えるサブルーチンを 作ります。 このサブルーチンは外側のサブルーチンからの呼び出しの間で共有されます。

my sub declares a lexical subroutine that is created each time the enclosing block is entered. state sub is generally slightly faster than my sub.

my sub は、閉じブロックに入る毎に作成されるレキシカルなサブルーチンを 宣言します。 state sub は一般的に my sub より少し高速です。

our sub declares a lexical alias to the package subroutine of the same name.

our sub は、同じ名前のパッケージサブルーチンへのレキシカルな別名を 宣言します。

For more information, see "Lexical Subroutines" in perlsub.

さらなる情報については、"Lexical Subroutines" in perlsub を参照してください。

計算ラベル

The loop controls next, last and redo, and the special dump operator, now allow arbitrary expressions to be used to compute labels at run time. Previously, any argument that was not a constant was treated as the empty string.

ループ制御 next, last, redo および特殊な dump 演算子は、 実行時にラベルを計算するために使えるように、任意の式を使えるように なりました。 以前は、定数以外の任意の引数は空文字列として扱われていました。

より多くの CORE:: サブルーチン

Several more built-in functions have been added as subroutines to the CORE:: namespace - namely, those non-overridable keywords that can be implemented without custom parsers: defined, delete, exists, glob, pos, protoytpe, scalar, split, study, and undef.

いくつかの組み込み関数が CORE:: 名前空間のサブルーチンとして追加されました - つまり、以下の、カスタムパーサなしで実装可能なオーバーライドできない キーワードです: defined, delete, exists, glob, pos, protoytpe, scalar, split, study, undef

As some of these have prototypes, prototype('CORE::...') has been changed to not make a distinction between overridable and non-overridable keywords. This is to make prototype('CORE::pos') consistent with prototype(&CORE::pos).

これらの一部はプロトタイプを持ち、prototype('CORE::...') は オーバーライドできるキーワードとできないキーワードで違いが起きないように 変更されました。 これは prototype('CORE::pos')prototype(&CORE::pos) と一貫性を 持つようにするためです。

kill with negative signal names

(負数のシグナル名の kill)

kill has always allowed a negative signal number, which kills the process group instead of a single process. It has also allowed signal names. But it did not behave consistently, because negative signal names were treated as 0. Now negative signals names like -INT are supported and treated the same way as -2 [perl #112990].

kill は常に負のシグナル番号が使えて、その場合単一のプロセスではなく プロセスグループを kill します。 そしてシグナル名も使えました。 しかしこれは一貫性のある振る舞いではありませんでした; なぜなら負の シグナル名は0 として扱われていたからです。 -INT のような負のシグナル名に対応するようになり、-2 を指定されたのと 同じように扱います [perl #112990]。

セキュリティ

関連項目: ハッシュの見直し

Some of the changes in the hash overhaul were made to enhance security. Please read that section.

"Hash overhaul" の変更の一部はセキュリティを向上させています。 当該の節を参照してください。

Storable security warning in documentation

(文書中の Storable セキュリティ警告)

The documentation for Storable now includes a section which warns readers of the danger of accepting Storable documents from untrusted sources. The short version is that deserializing certain types of data can lead to loading modules and other code execution. This is documented behavior and wanted behavior, but this opens an attack vector for malicious entities.

Storable の文書に、信頼できないソースから Storage データを受け付けることの 危険性を読者に警告する章が追加されました。 短く言うと、ある種のデータをデシリアライズすると、モジュールの読み込みや その他のコード実行を引き起こすことがあります。 これは文書化された振る舞いであり求められている振る舞いですが、これは 悪意ある実体からの攻撃が可能です。

Locale::Maketext allowed code injection via a malicious template

(Locale::Maketext が不正なテンプレートによってコードインジェクションを許していました)

If users could provide a translation string to Locale::Maketext, this could be used to invoke arbitrary Perl subroutines available in the current process.

ユーザーが Locale::Maketext に変換文字列を提供できると、現在のプロセスで 利用可能な任意の Perl サブルーチンを起動することができました。

This has been fixed, but it is still possible to invoke any method provided by Locale::Maketext itself or a subclass that you are using. One of these methods in turn will invoke the Perl core's sprintf subroutine.

これは修正されましたが、Locale::Maketext 自身や、使っているサブクラスで 提供されている任意のメソッドを起動することが可能です。 これらのメソッドの一つは、Perl コアの sprintf サブルーチンを 起動できます。

In summary, allowing users to provide translation strings without auditing them is a bad idea.

まとめると、監査なしにユーザーに変換文字列を提供させるのは悪い考えです。

This vulnerability is documented in CVE-2012-6329.

この脆弱性は CVE-2012-6329 として記録されました。

負数で memset を呼び出さなくなりました

Poorly written perl code that allows an attacker to specify the count to perl's x string repeat operator can already cause a memory exhaustion denial-of-service attack. A flaw in versions of perl before v5.15.5 can escalate that into a heap buffer overrun; coupled with versions of glibc before 2.16, it possibly allows the execution of arbitrary code.

perl の x 文字列繰り返し演算子のカウントを攻撃者が指定できるような 不適切に書かれたコードは、メモリ枯渇サービス拒否攻撃を引き起こしていました。 v5.15.5 以前のバージョンの欠点により、これがヒープバッファオーバーランに 昇格していました; 2.16 以前のバージョンの glibc では、任意のコードの実行を 許す可能性がありました。

The flaw addressed to this commit has been assigned identifier CVE-2012-5195 and was researched by Tim Brown.

これに関わる欠点は識別子 CVE-2012-5195 が割り当てられ、Tim Brown によって 調査されました。

互換性のない変更

関連項目: ハッシュの見直し

Some of the changes in the hash overhaul are not fully compatible with previous versions of perl. Please read that section.

"Hash overhaul" の変更の一部は以前のバージョンの perl との 完全な互換性はありません。 当該の節を参照してください。

An unknown character name in \N{...} is now a syntax error

(\N{...} での不明な文字名は文法エラーになりました)

Previously, it warned, and the Unicode REPLACEMENT CHARACTER was substituted. Unicode now recommends that this situation be a syntax error. Also, the previous behavior led to some confusing warnings and behaviors, and since the REPLACEMENT CHARACTER has no use other than as a stand-in for some unknown character, any code that has this problem is buggy.

以前は、これは警告され、Unicode REPLACEMENT CHARACTER に 置き換えられていました。 Unicode は今ではこのような状況では文法エラーにすることを勧めています。 また、以前の振る舞いは一部の混乱させる警告と振る舞いを引き起こし、 REPLACEMENT CHARACTER は一部の不明な文字の代わり以外に使い道がないので、 この問題を持つコードはバグがちです。

Formerly deprecated characters in \N{} character name aliases are now errors.

(以前は廃止予定だった \N{} 文字名別名での文字はエラーになるようになりました)

Since v5.12.0, it has been deprecated to use certain characters in user-defined \N{...} character names. These now cause a syntax error. For example, it is now an error to begin a name with a digit, such as in

v5.12.0 から、ユーザー定義 \N{...} 文字名での一部の文字の使用は 廃止予定になりました。 これらは文法エラーになりました。 例えば、以下のように数値で始まる名前はエラーになります

 my $undraftable = "\N{4F}";    # Syntax error!

or to have commas anywhere in the name. See "CUSTOM ALIASES" in charnames.

あるいは名前のどこかにカンマがある場合もそうです。 "CUSTOM ALIASES" in charnames を参照してください。

\N{BELL} now refers to U+1F514 instead of U+0007

(\N{BELL} は U+0007 ではなく U+1F514 を参照するようになりました)

Unicode 6.0 reused the name "BELL" for a different code point than it traditionally had meant. Since Perl v5.14, use of this name still referred to U+0007, but would raise a deprecation warning. Now, "BELL" refers to U+1F514, and the name for U+0007 is "ALERT". All the functions in charnames have been correspondingly updated.

Unicode 6.0 は "BELL" という名前を、伝統的に使われていたものと異なる 符号位置に再利用しました。 Perl v5.14 から、この名前を使っても U+0007 を参照したままでしたが、 廃止予定警告が出ていました。 今では、"BELL" は U+1F514 を参照し、U+0007 の名前は "ALERT" になりました。 charnames の全ての関数はこれに対応するように更新されました。

正規表現大かっこ文字クラス中の複数文字大文字小文字無視マッチングの新しい制限

Unicode has now withdrawn their previous recommendation for regular expressions to automatically handle cases where a single character can match multiple characters case-insensitively, for example, the letter LATIN SMALL LETTER SHARP S and the sequence ss. This is because it turns out to be impracticable to do this correctly in all circumstances. Because Perl has tried to do this as best it can, it will continue to do so. (We are considering an option to turn it off.) However, a new restriction is being added on such matches when they occur in [bracketed] character classes. People were specifying things such as /[\0-\xff]/i, and being surprised that it matches the two character sequence ss (since LATIN SMALL LETTER SHARP S occurs in this range). This behavior is also inconsistent with using a property instead of a range: \p{Block=Latin1} also includes LATIN SMALL LETTER SHARP S, but /[\p{Block=Latin1}]/i does not match ss. The new rule is that for there to be a multi-character case-insensitive match within a bracketed character class, the character must be explicitly listed, and not as an end point of a range. This more closely obeys the Principle of Least Astonishment. See "Bracketed Character Classes" in perlrecharclass. Note that a bug [perl #89774], now fixed as part of this change, prevented the previous behavior from working fully.

Unicode は、正規表現で単一の文字が大文字小文字を無視して複数の文字に マッチングできるとき、自動的に大文字小文字を扱うという以前の推奨を 取り下げました; 例えば、LATIN SMALL LETTER SHARP S と並び ss です。 これは、どのような状態でもこれを正しく行うのは不可能であるということが 分かったからです。 Perl はこれをできるだけしようとするので、引き続きそうします。 (私たちはこれをオフにするオプションを考慮しています。) しかし、[大かっこ] 文字クラスでこのようなマッチングが起きるときの新しい制限が 追加されていました。 人々は /[\0-\xff]/i なものを指定して、二文字並び ss にマッチングして 驚いていました (LATIN SMALL LETTER SHARP S はこの範囲にあるからです)。 この振る舞いは範囲ではなく特性を使った場合と一貫性がありません: \p{Block=Latin1} は LATIN SMALL LETTER SHARP S も含みますが、 /[\p{Block=Latin1}]/iss にマッチングしません。 新しい規則は、大かっこ文字クラス内での複数文字大文字小文字無視マッチングに 関するもので、文字は明示的に一覧に挙がっていなければならず、範囲の 端点であってはなりません。 これはより密接に驚き最小の原則に従います。 "Bracketed Character Classes" in perlrecharclass を参照してください。 バグ [perl #89774] はこの変更の一部として修正され、以前の振る舞いが 完全に動作することを妨げることに注意してください。

変数名と識別子の明示的な規則

Due to an oversight, single character variable names in v5.16 were completely unrestricted. This opened the door to several kinds of insanity. As of v5.18, these now follow the rules of other identifiers, in addition to accepting characters that match the \p{POSIX_Punct} property.

不注意により、5.16 での単一文字の変数名は完全に無制限になっていました。 これは様々な種類の狂気への扉を開いていました。 v5.18 から、その他の識別子の規則に従って、さらに \p{POSIX_Punct} 特性に マッチングする文字を受け付けます。

There is no longer any difference in the parsing of identifiers specified by using braces versus without braces. For instance, perl used to allow ${foo:bar} (with a single colon) but not $foo:bar. Now that both are handled by a single code path, they are both treated the same way: both are forbidden. Note that this change is about the range of permissible literal identifiers, not other expressions.

もはや中かっこありと中かっこなしで指定された識別子のパースに違いは ありません。 例えば、perl は (シングルコロン付きの) ${foo:bar} は許していましたが $foo:bar は許していませんでした。 今では両方とも単一のコードパスで扱われ、どちらも同じ方法で扱われます: どちらも禁止されます。 この変更は許可されるリテラルな識別子の範囲に関するものであり、その他の式には 関係ないことに注意してください。

垂直タブは空白になりました

No one could recall why \s didn't match \cK, the vertical tab. Now it does. Given the extreme rarity of that character, very little breakage is expected. That said, here's what it means:

なぜ \s で垂直タブ \cK にマッチングしないのか、誰も 思い出せませんでした。 今ではマッチングします。 この文字自体がとても稀なので、破損はほとんど起こらないと想定されています。 つまり、これは以下を意味します:

\s in a regex now matches a vertical tab in all circumstances.

正規表現中の \s は全ての状況で垂直タブにマッチングするようになりました。

Literal vertical tabs in a regex literal are ignored when the /x modifier is used.

正規表現中のリテラルな垂直タブは、/x 修飾子が使われると無視されます。

Leading vertical tabs, alone or mixed with other whitespace, are now ignored when interpreting a string as a number. For example:

単独または他の空白と混ぜられた先頭の垂直タブは、文字列を数値として 解釈するときに無視されるようになりました。 例えば:

  $dec = " \cK \t 123";
  $hex = " \cK \t 0xF";

  say 0 + $dec;   # was 0 with warning, now 123
  say int $dec;   # was 0, now 123
  say oct $hex;   # was 0, now  15

/(?{})/ and /(??{})/ have been heavily reworked

(/(?{})//(??{})/ は大幅に再作業されました)

The implementation of this feature has been almost completely rewritten. Although its main intent is to fix bugs, some behaviors, especially related to the scope of lexical variables, will have changed. This is described more fully in the "Selected Bug Fixes" section.

この機能の実装はほとんど完全に書き直されました。 主な目的はバグの修正ですが、一部の振る舞い、特にレキシカル変数に関連する ものは変更されました。 これは "Selected Bug Fixes" の節でより完全に記述されています。

置換のより厳密なパース

It is no longer possible to abuse the way the parser parses s///e like this:

パーサが s///e を以下のようにパースすることを悪用することはもはや できなくなりました:

    %_=(_,"Just another ");
    $_="Perl hacker,\n";
    s//_}->{_/e;print

given now aliases the global $_

(given はグローバルな $_ のエイリアスになりました)

Instead of assigning to an implicit lexical $_, given now makes the global $_ an alias for its argument, just like foreach. However, it still uses lexical $_ if there is lexical $_ in scope (again, just like foreach) [perl #114020].

given は、ちょうど foreach と同様に、暗黙のレキシカルな $_ ではなく グローバルな $_ を引数への別名とするようになりました。 しかし、(再び foreach と同様に) レキシカルな $_ がスコープ内にあれば レキシカルな $_ を使います [perl #114020]。

スマートマッチングの仲間の機能は実験的なものになりました

Smart match, added in v5.10.0 and significantly revised in v5.10.1, has been a regular point of complaint. Although there are a number of ways in which it is useful, it has also proven problematic and confusing for both users and implementors of Perl. There have been a number of proposals on how to best address the problem. It is clear that smartmatch is almost certainly either going to change or go away in the future. Relying on its current behavior is not recommended.

v5.10.0 で追加され、v5.10.1 で大きく改訂されたスマートマッチングは、 いつも不満な点でした。 これを有用にする方法はいくつかありますが、問題があり、Perl のユーザーと 実装者の両方を混乱させることがわかっています。 この問題をもっともよく対処するための多くの提案がありました。 スマートマッチングは将来変更されるか削除されることはほぼ確実です。 現在の振る舞いに依存することは勧められません。

Warnings will now be issued when the parser sees ~~, given, or when. To disable these warnings, you can add this line to the appropriate scope:

パーサが ~~, given, when を見つけたときに警告が 発生するようになりました。 これらの警告を無効にするには、適切なスコープに以下の行を追加できます:

  no if $] >= 5.018, "experimental::smartmatch";

Consider, though, replacing the use of these features, as they may change behavior again before becoming stable.

しかし、振る舞いは安定するまでに再び変更されるかもしれないので、これらの 機能の使用を置き換えることを考慮してください。

Lexical $_ is now experimental

(レキシカルな $_ は実験的なものになりました)

Since it was introduced in Perl v5.10, it has caused much confusion with no obvious solution:

これが Perl v5.10 で導入されてから、明らかな解決方法のない多くの混乱を 引き起こしていました:

  • Various modules (e.g., List::Util) expect callback routines to use the global $_. use List::Util 'first'; my $_; first { $_ == 1 } @list does not work as one would expect.

    様々なモジュール (例えば List::Util) はコールバックルーチンがグローバルな $_ を使うことを想定しています。 use List::Util 'first'; my $_; first { $_ == 1 } @list は想定通りに 動作しません。

  • A my $_ declaration earlier in the same file can cause confusing closure warnings.

    同じファイルのより前にある my $_ 宣言は混乱したクロージャ警告を 引き起こすことがあります。

  • The "_" subroutine prototype character allows called subroutines to access your lexical $_, so it is not really private after all.

    "_" サブルーチンプロトタイプ文字は呼び出しサブルーチンがレキシカルな $_ にアクセスできるようにするので、実際には全く プライベートではありません。

  • Nevertheless, subroutines with a "(@)" prototype and methods cannot access the caller's lexical $_, unless they are written in XS.

    それにも関わらず、"(@)" プロトタイプを持つサブルーチンおよびメソッドは、 XS で書かれいないかぎり呼び出し元のレキシカル $_ にアクセスできません。

  • But even XS routines cannot access a lexical $_ declared, not in the calling subroutine, but in an outer scope, iff that subroutine happened not to mention $_ or use any operators that default to $_.

    しかし XS ルーチンでも呼び出し側のサブルーチンで宣言された レキシカルな $_ にはアクセスできません; サブルーチンがたまたま $_ に言及したり デフォルトが $_ であるような演算子を使っていなかった場合のみ、 外側のスコープのものにはアクセスできます。

It is our hope that lexical $_ can be rehabilitated, but this may cause changes in its behavior. Please use it with caution until it becomes stable.

レキシカルな $_ が復旧可能であるというのは私たちの希望ですが、これは 振る舞いの変更を引き起こすでしょう。 安定するまで、注意して使ってください。

readline() with $/ = \N now reads N characters, not N bytes

($/ = \N での readline() は N バイトではなく N 文字を読み込むようになりました)

Previously, when reading from a stream with I/O layers such as encoding, the readline() function, otherwise known as the <> operator, would read N bytes from the top-most layer. [perl #79960]

以前は、encoding のような I/O 層を使ってストリームから読み込むとき、 readline() 関数、あるいは <> 演算子と知られているものは、 最上位の層から N バイト読み込んでいました。 [perl #79960]

Now, N characters are read instead.

代わりに N 文字読み込まれるようになりました。

There is no change in behaviour when reading from streams with no extra layers, since bytes map exactly to characters.

追加の層なしでストリームから読み込むときには振る舞いは変わりません; なぜなら バイトは正確に文字にマッピングされるからです。

Overridden glob is now passed one argument

(オーバーライドされた glob は一つの引数を渡すようになりました)

glob overrides used to be passed a magical undocumented second argument that identified the caller. Nothing on CPAN was using this, and it got in the way of a bug fix, so it was removed. If you really need to identify the caller, see Devel::Callsite on CPAN.

glob をオーバーライドしたものは、呼び出し元を識別するマジカルで 文書化されていない第 2 引数を渡されていました。 CPAN でこれを使っているものはなく、バグ修正の邪魔になるので、 取り除かれました。 どうしても呼び出し元を識別する必要があるなら、CPAN の Devel::Callsite を 参照してください。

ヒヤドキュメントのパース

The body of a here document inside a quote-like operator now always begins on the line after the "<<foo" marker. Previously, it was documented to begin on the line following the containing quote-like operator, but that was only sometimes the case [perl #114040].

クォート風演算子の内側のヒヤドキュメントの本体は、常に "<<foo" マーカーの 次の行から始まるようになりました。 以前は、クォート風演算子を含む行の次の行から始まると文書化されていましたが、 これは時々しか正しくありませんでした [perl #114040]。

英数字演算子は正規表現の閉じ区切り文字から分離されなければならなくなりました

You may no longer write something like:

もはや以下のようには書けなくなりました:

 m/a/and 1

Instead you must write

代わりに以下のように書かなければなりません

 m/a/ and 1

with whitespace separating the operator from the closing delimiter of the regular expression. Not having whitespace has resulted in a deprecation warning since Perl v5.14.0.

演算子を正規表現の閉じ区切り文字と分けるための空白が必要です。 空白がないと、Perl v5.14.0 から廃止予定警告が出ます。

qw(...) はもはやかっことして使えなくなりました

qw lists used to fool the parser into thinking they were always surrounded by parentheses. This permitted some surprising constructions such as foreach $x qw(a b c) {...}, which should really be written foreach $x (qw(a b c)) {...}. These would sometimes get the lexer into the wrong state, so they didn't fully work, and the similar foreach qw(a b c) {...} that one might expect to be permitted never worked at all.

qw リストは、常にかっこで囲まれているとパーサが考えるように騙すために 使われていました。 これにより、実際には foreach $x (qw(a b c)) {...} と書くべきところで foreach $x qw(a b c) {...} のような驚かされる構文が可能でした。 これは時々構文解析器を間違った状態にするので、完全には動作せず、 許されると想定するかも知れない似たような foreach qw(a b c) {...} は 全く動作しませんでした。

This side effect of qw has now been abolished. It has been deprecated since Perl v5.13.11. It is now necessary to use real parentheses everywhere that the grammar calls for them.

qw のこの副作用は撤廃されました。 これは Perl v5.13.11 から廃止予定でした。 文法が必要としているところではどこでも、実際のかっこを使うことが 必要になりました。

レキシカルとデフォルトの警告の相互作用

Turning on any lexical warnings used first to disable all default warnings if lexical warnings were not already enabled:

何らかのレキシカル警告をオンにするとき、レキシカル警告が既に有効でなければ、 まず全てのデフォルト警告を無効にしていました:

    $*; # deprecation warning
    use warnings "void";
    $#; # void warning; no deprecation warning

Now, the debugging, deprecated, glob, inplace and malloc warnings categories are left on when turning on lexical warnings (unless they are turned off by no warnings, of course).

debugging, deprecated, glob, inplace, malloc の警告カテゴリは、 レキシカルな警告がオンになったときにも (もちろん no warnings で オフにしない限り) オンのままになりました。

This may cause deprecation warnings to occur in code that used to be free of warnings.

これは、警告が出ていなかったコードで廃し予定警告を引き起こすかもしれません。

Those are the only categories consisting only of default warnings. Default warnings in other categories are still disabled by use warnings "category", as we do not yet have the infrastructure for controlling individual warnings.

これらはデフォルト警告からなるカテゴリのみです。 その他のカテゴリのデフォルト警告はやはり use warnings "category" で 無効化されます; なぜなら個々の警告を制御する基盤はまだないからです。

state sub and our sub

(state subour sub)

Due to an accident of history, state sub and our sub were equivalent to a plain sub, so one could even create an anonymous sub with our sub { ... }. These are now disallowed outside of the "lexical_subs" feature. Under the "lexical_subs" feature they have new meanings described in "Lexical Subroutines" in perlsub.

歴史上の偶然により、state subour sub は普通の sub と 等価だったため、our sub { ... } で無名サブルーチンが作れていました。 これらは "lexical_subs" 機能の外側では出来なくなりました。 "lexical_subs" 機能の元ではこれらは "Lexical Subroutines" in perlsub に 記述されている新しい意味を持ちます。

環境変数に保管された定義値はバイト文字列に強制されました

A value stored in an environment variable has always been stringified. In this release, it is converted to be only a byte string. First, it is forced to be only a string. Then if the string is utf8 and the equivalent of utf8::downgrade() works, that result is used; otherwise, the equivalent of utf8::encode() is used, and a warning is issued about wide characters ("Diagnostics").

環境変数に保管される値は常に文字列化されていました。 このリリースから、バイト文字列にだけ変換されます。 まず、文字列だけに強制されます。 それから、文字列が utf8 で utf8::downgrade() の等価物が動作するなら、 結果が使われます; さもなければ、utf8::encode() の等価物が使われ、 ワイド文字に関する警告が出力されます ("Diagnostics")。

require dies for unreadable files

(読み込めないファイルに対する require は die します)

When require encounters an unreadable file, it now dies. It used to ignore the file and continue searching the directories in @INC [perl #113422].

require が読み込めないファイルに遭遇すると、die するようになりました。 以前はそのファイルを無視して、@INC のディレクトリの検索を続けていました [perl #113422]。

gv_fetchmeth_* and SUPER

(gv_fetchmeth_* と SUPER)

The various gv_fetchmeth_* XS functions used to treat a package whose named ended with ::SUPER specially. A method lookup on the Foo::SUPER package would be treated as a SUPER method lookup on the Foo package. This is no longer the case. To do a SUPER lookup, pass the Foo stash and the GV_SUPER flag.

様々な gv_fetchmeth_* XS 関数は、名前が ::SUPER で終わるパッケージを 特別扱いしていました。 Foo::SUPER パッケージでのメソッド検索は Foo パッケージでの SUPER メソッドとして扱われていました。 これはもはや起こりません。 SUPER を検索するには、Foo スタッシュと GV_SUPER フラグを 渡してください。

split's first argument is more consistently interpreted

(split の最初の引数はより一貫性を持って解釈されるようになりました)

After some changes earlier in v5.17, split's behavior has been simplified: if the PATTERN argument evaluates to a string containing one space, it is treated the way that a literal string containing one space once was.

v5.17 の初期でのいくつかの変更の後、split の振る舞いは単純化されました: PATTERN 引数が一つのスペースを含む文字列として評価される場合、一つの スペースを含んでいる リテラルな 文字列であったように扱われます。

廃止予定

モジュールの削除

The following modules will be removed from the core distribution in a future release, and will at that time need to be installed from CPAN. Distributions on CPAN which require these modules will need to list them as prerequisites.

以下のモジュールは将来のリリースでコア配布から削除され、代わりに CPAN から インストールされる必要があるようになります。 これらが必要な CPAN 配布は依存モジュールにこれらを加える必要があります。

The core versions of these modules will now issue "deprecated"-category warnings to alert you to this fact. To silence these deprecation warnings, install the modules in question from CPAN.

これらのモジュールのコア版を使うと、この事実を知らせるために "deprecated" カテゴリの警告が発生するようになりました。 これらの廃止予定警告を黙らせるには、問題になっているモジュールを CPAN から インストールしてください。

Note that these are (with rare exceptions) fine modules that you are encouraged to continue to use. Their disinclusion from core primarily hinges on their necessity to bootstrapping a fully functional, CPAN-capable Perl installation, not usually on concerns over their design.

(稀な例外はありますが) 使い続けることを奨励されている素晴らしいモジュールが あることに注意してください。 これらがコアに含まれなくなったのは、普通はその設計を考慮したためではなく、 主に完全に機能する、CPAN が使える Perl のインストールのブートストラッピングへの 必要性によって決まります。

encoding

The use of this pragma is now strongly discouraged. It conflates the encoding of source text with the encoding of I/O data, reinterprets escape sequences in source text (a questionable choice), and introduces the UTF-8 bug to all runtime handling of character strings. It is broken as designed and beyond repair.

このプラグマの使用は強く非推奨です。 これはソーステキストのエンコーディングと I/O データのエンコーディングを 融合し、ソーステキストのエスケープシーケンスを再解釈し(疑問のある選択です)、 全ての実行時の文字列の扱いに UTF-8 バグを導入します。 これは意図的に壊れていて、直すにはほど遠いです。

For using non-ASCII literal characters in source text, please refer to utf8. For dealing with textual I/O data, please refer to Encode and open.

ソーステキストに非 ASCII リテラル文字を使うには、どうか utf8 を 参照してください。 テキストの I/O データの扱いについては、どうか Encodeopen を 参照してください。

Archive::Extract
B::Lint
B::Lint::Debug
CPANPLUS and all included CPANPLUS::* modules

(CPANPLUS および含まれている全ての CPANPLUS::* モジュール)

Devel::InnerPackage
Log::Message
Log::Message::Config
Log::Message::Handlers
Log::Message::Item
Log::Message::Simple
Module::Pluggable
Module::Pluggable::Object
Object::Accessor
Pod::LaTeX
Term::UI
Term::UI::History

廃止予定のユーティリティ

The following utilities will be removed from the core distribution in a future release as their associated modules have been deprecated. They will remain available with the applicable CPAN distribution.

以下のユーティリティは、関連するモジュールが廃止予定なので、将来のリリースで コア配布から削除されます。 適切な CPAN 配布からは利用可能なままです。

cpanp
cpanp-run-perl
cpan2dist

These items are part of the CPANPLUS distribution.

これは CPANPLUS 配布の一部です。

pod2latex

This item is part of the Pod::LaTeX distribution.

これは Pod::LaTeX 配布の一部です。

PL_sv_objcount

This interpreter-global variable used to track the total number of Perl objects in the interpreter. It is no longer maintained and will be removed altogether in Perl v5.20.

このインタプリタグローバルな変数はインタプリタ内の Perl オブジェクトの総数を 記録するために使われていました。 これはもはや保守されず、Perl v5.20 で削除される予定です。

Five additional characters should be escaped in patterns with /x

(/x では追加で五つの文字にエスケープが必要になりました)

When a regular expression pattern is compiled with /x, Perl treats 6 characters as white space to ignore, such as SPACE and TAB. However, Unicode recommends 11 characters be treated thusly. We will conform with this in a future Perl version. In the meantime, use of any of the missing characters will raise a deprecation warning, unless turned off. The five characters are:

正規表現パターンが /x 付きでコンパイルされるとき、Perl は SPACE や TAB などの 6 文字を無視する空白として扱います。 しかし、Unicode は 11 文字をそう扱うように勧めています。 私たちはこれを将来の Perl バージョンで従う予定です。 当面の間、抜けている文字の使用は、オフにされていない限り廃止予定警告を 引き起こします。 五つの文字とは以下の通りです:

    U+0085 NEXT LINE
    U+200E LEFT-TO-RIGHT MARK
    U+200F RIGHT-TO-LEFT MARK
    U+2028 LINE SEPARATOR
    U+2029 PARAGRAPH SEPARATOR

予期しない空白付きのユーザー定義文字名

A user-defined character name with trailing or multiple spaces in a row is likely a typo. This now generates a warning when defined, on the assumption that uses of it will be unlikely to include the excess whitespace.

末尾や連続した空白を含むユーザー定義文字名はおそらくタイプミスです。 多すぎる空白を含むことはなさそうという仮定の下、このようなものを定義すると 警告が出るようになりました。

さまざまな XS から呼び出せる関数が廃止予定になりました

All the functions used to classify characters will be removed from a future version of Perl, and should not be used. With participating C compilers (e.g., gcc), compiling any file that uses any of these will generate a warning. These were not intended for public use; there are equivalent, faster, macros for most of them.

文字をクラス分けする全ての関数は将来のバージョンの Perl から削除されるので、 使うべきではありません。 これらのいずれかを使っているファイルをコンパイルすると、 (例えば gcc のような) 関連する C コンパイラは警告を生成します。 これらは公的な使用を想定していません; これらのほとんどに対しては、等価でより 高速なマクロがあります。

See "Character classes" in perlapi. The complete list is:

"Character classes" in perlapi を参照してください。 完全な一覧は:

is_uni_alnum, is_uni_alnumc, is_uni_alnumc_lc, is_uni_alnum_lc, is_uni_alpha, is_uni_alpha_lc, is_uni_ascii, is_uni_ascii_lc, is_uni_blank, is_uni_blank_lc, is_uni_cntrl, is_uni_cntrl_lc, is_uni_digit, is_uni_digit_lc, is_uni_graph, is_uni_graph_lc, is_uni_idfirst, is_uni_idfirst_lc, is_uni_lower, is_uni_lower_lc, is_uni_print, is_uni_print_lc, is_uni_punct, is_uni_punct_lc, is_uni_space, is_uni_space_lc, is_uni_upper, is_uni_upper_lc, is_uni_xdigit, is_uni_xdigit_lc, is_utf8_alnum, is_utf8_alnumc, is_utf8_alpha, is_utf8_ascii, is_utf8_blank, is_utf8_char, is_utf8_cntrl, is_utf8_digit, is_utf8_graph, is_utf8_idcont, is_utf8_idfirst, is_utf8_lower, is_utf8_mark, is_utf8_perl_space, is_utf8_perl_word, is_utf8_posix_digit, is_utf8_print, is_utf8_punct, is_utf8_space, is_utf8_upper, is_utf8_xdigit, is_utf8_xidcont, is_utf8_xidfirst.

In addition these three functions that have never worked properly are deprecated: to_uni_lower_lc, to_uni_title_lc, and to_uni_upper_lc.

さらに、以下の三つの決して正しく動作しない関数が廃止予定になりました: to_uni_lower_lc, to_uni_title_lc, and to_uni_upper_lc.

正規表現中の逆スラッシュのある種の稀な使用法は廃止予定になりました

There are three pairs of characters that Perl recognizes as metacharacters in regular expression patterns: {}, [], and (). These can be used as well to delimit patterns, as in:

Perl が正規表現パターンのメタ文字として認識する 3 組の文字があります: {}, [], () です。 これらは以下のように区切り文字としても使えます:

  m{foo}
  s(foo)(bar)

Since they are metacharacters, they have special meaning to regular expression patterns, and it turns out that you can't turn off that special meaning by the normal means of preceding them with a backslash, if you use them, paired, within a pattern delimited by them. For example, in

これらはメタ文字なので、正規表現では特別な意味があります; そして これらの文字を区切り文字として使ったパターンの中で使うとき、逆スラッシュを 前置して通常の意味にすることで特別な意味をなくすということができないことが 分かりました。 例えば、以下のものは

  m{foo\{1,3\}}

the backslashes do not change the behavior, and this matches "f o" followed by one to three more occurrences of "o".

逆スラッシュは振る舞いを変更せず、これは "f o" に引き続いて 1 から 3 文字の "o" にマッチングします。

Usages like this, where they are interpreted as metacharacters, are exceedingly rare; we think there are none, for example, in all of CPAN. Hence, this deprecation should affect very little code. It does give notice, however, that any such code needs to change, which will in turn allow us to change the behavior in future Perl versions so that the backslashes do have an effect, and without fear that we are silently breaking any existing code.

メタ文字として解釈される場所でのこのような使用法は極めて稀です; 例えば、 CPAN 全ての中で全く使われていません。 従って、この廃止予定はコードにほとんど影響を与えないはずです。 しかし、逆スラッシュが意味があるように将来の Perl バージョンの振る舞いを 変更したときに、このようなコードは変更する必要があり、黙って既存のコードを 壊す恐れがないように、ここで注意しておきます。

Splitting the tokens (? and (* in regular expressions

(正規表現でトークン (? または (* を分割する)

A deprecation warning is now raised if the ( and ? are separated by white space or comments in (?...) regular expression constructs. Similarly, if the ( and * are separated in (*VERB...) constructs.

(?...) 正規表現構文で (? が空白で分割されていると廃止予定警告が 発生するようになりました。 (*VERB...) 構文で (* が分割されている場合も同様です。

PerlIO 以前の IO 実装

In theory, you can currently build perl without PerlIO. Instead, you'd use a wrapper around stdio or sfio. In practice, this isn't very useful. It's not well tested, and without any support for IO layers or (thus) Unicode, it's not much of a perl. Building without PerlIO will most likely be removed in the next version of perl.

理論的には、今のところ PerlIO なしで perl をビルドすることは可能です。 代わりに、stdio か sfio のラッパーを使います。 実際には、これはかなり不便です。 あまりテストされておらず、IO 層や(従って)Unicode に対応しておらず、 perl としていいものではありません。 PerlIO なしのビルドはおそらく次のバージョンの perl で削除されます。

PerlIO supports a stdio layer if stdio use is desired. Similarly a sfio layer could be produced in the future, if needed.

PerlIO は、stdio を使いたいなら stdio 層に対応しています。 同様に sfio 層も、もし必要なら将来作成されるかもしれません。

将来の廃止予定

  • Platforms without support infrastructure

    対応基盤のないプラットフォーム

    Both Windows CE and z/OS have been historically under-maintained, and are currently neither successfully building nor regularly being smoke tested. Efforts are underway to change this situation, but it should not be taken for granted that the platforms are safe and supported. If they do not become buildable and regularly smoked, support for them may be actively removed in future releases. If you have an interest in these platforms and you can lend your time, expertise, or hardware to help support these platforms, please let the perl development effort know by emailing perl5-porters@perl.org.

    Windows CE と z/OS は歴史的に管理下にありましたが、現在の所どちらも ビルドに失敗したり定期的にスモークテストされていなかったりします。 この状況を変えるための努力は行われていますが、これらのプラットフォームが 安全で対応していると認められるべきではありません。 ビルド可能になって定期的にスモークテストが行われない場合、これらへの対応は 将来のリリースで積極的に削除されるかもしれません。 これらのプラットフォームに興味があって、これらのプラットフォームを 助けるための時間、知識、ハードウェアがあるなら、perl5-porters@perl.org に メールすることで perl 開発活動に知らせてください。

    Some platforms that appear otherwise entirely dead are also on the short list for removal between now and v5.20.0:

    その他の完全に死んでいるように見える一部のプラットフォームも現在から v5.20.0 の間に削除される短い一覧に載っています:

    DG/UX
    NeXT

    We also think it likely that current versions of Perl will no longer build AmigaOS, DJGPP, NetWare (natively), OS/2 and Plan 9. If you are using Perl on such a platform and have an interest in ensuring Perl's future on them, please contact us.

    私たちはまた、おそらく現在のバージョンの Perl はもはや AmigaOS, DJGPP, (ネイティブな) NetWare, OS/2, Plan 9 ではビルドできないと考えています。 もしあなたがこのようなプラットフォームで Perl を使っていて、これらでの Perl の未来を確実にすることに関心があるなら、どうか私たちに連絡してください。

    We believe that Perl has long been unable to build on mixed endian architectures (such as PDP-11s), and intend to remove any remaining support code. Similarly, code supporting the long umaintained GNU dld will be removed soon if no-one makes themselves known as an active user.

    私たちは、Perl は長い間 (PDP-11 のような) 混合エンディアンアーキテクチャでは ビルドできないと信じていて、残っている対応コードを削除するつもりです。 同様に、長い間保守されていない GNU dld に対応するコードも、誰も アクティブなユーザーとして知られることがなければ、もうすぐ 取り除かれるでしょう。

  • Swapping of $< and $>

    $< と $> の交換

    Perl has supported the idiom of swapping $< and $> (and likewise $( and $)) to temporarily drop permissions since 5.0, like this:

    Perl は 5.0 から、以下のように、一時的にパーミッションを落とすために $< と $> を(および同様に $( と $) を) 交換するという慣用句に対応しています:

        ($<, $>) = ($>, $<);

    However, this idiom modifies the real user/group id, which can have undesirable side-effects, is no longer useful on any platform perl supports and complicates the implementation of these variables and list assignment in general.

    しかし、実ユーザー/グループ ID を変更するという、望ましくない副作用が あるかもしれないこの慣用句は、もはや perl が対応しているどの プラットフォームでも有用ではなく、これらの変数と一般的なリスト代入の 実装を複雑にしています。

    As an alternative, assignment only to $> is recommended:

    代替策として、$> だけに代入することを推奨します:

        local $> = $<;

    See also: Setuid Demystified.

    関連項目: Setuid Demystified

  • microperl, long broken and of unclear present purpose, will be removed.

    長い間壊れていて存在理由がはっきりしない microperl は削除されます。

  • Revamping "\Q" semantics in double-quotish strings when combined with other escapes.

    ダブルクォート風文字列内で他のエスケープと組み合わされたときの "\Q" の意味論の刷新。

    There are several bugs and inconsistencies involving combinations of \Q and escapes like \x, \L, etc., within a \Q...\E pair. These need to be fixed, and doing so will necessarily change current behavior. The changes have not yet been settled.

    \Q...\E の組の中の \Q\x, \L などのようなエスケープとの 組み合わせに伴ういくつかのバグと非一貫性があります。 これらは修正される必要があり、そうするには現在の振る舞いを変える必要が あります。 変更はまだ確定していません。

  • Use of $x, where x stands for any actual (non-printing) C0 control character will be disallowed in a future Perl version. Use ${x} instead (where again x stands for a control character), or better, $^A , where ^ is a caret (CIRCUMFLEX ACCENT), and A stands for any of the characters listed at the end of "OPERATOR DIFFERENCES" in perlebcdic.

    $x (ここで x は任意の実際の (表示されない) C0 制御文字) の 使用は将来の Perl のバージョンでは認められなくなります。 代わりに ${x} を使うか (再び x は制御文字)、よりよいのは $^A (^ はキャレット (CIRCUMFLEX ACCENT)、A"OPERATOR DIFFERENCES" in perlebcdic の末尾に一覧がある任意の文字) を 使ってください。

性能改善

  • Lists of lexical variable declarations (my($x, $y)) are now optimised down to a single op and are hence faster than before.

    レキシカル変数宣言のリスト (my($x, $y)) は単一の op に最適化されたので、 以前より高速になりました。

  • A new C preprocessor define NO_TAINT_SUPPORT was added that, if set, disables Perl's taint support altogether. Using the -T or -t command line flags will cause a fatal error. Beware that both core tests as well as many a CPAN distribution's tests will fail with this change. On the upside, it provides a small performance benefit due to reduced branching.

    新しい C プリプロセッサ定義 NO_TAINT_SUPPORT が追加されました; これが 設定されると、Perl の汚染対応が完全に無効になります。 -T や -t のコマンドラインフラグを使うと致命的エラーとなります。 両方のコアのテストと同様に、多くの CPAN 配布のテストもこの変更で 失敗することに注意してください。 一方、分岐が減ることにより少し性能が改善します。

    Do not enable this unless you know exactly what you are getting yourself into.

    自分自身が何をしているかを正確に理解していない限りこれを 有効にしないでください。

  • pack with constant arguments is now constant folded in most cases [perl #113470].

    定数引数の pack はほとんどの場合定数畳み込みされるようになりました [perl #113470]。

  • Speed up in regular expression matching against Unicode properties. The largest gain is for \X, the Unicode "extended grapheme cluster." The gain for it is about 35% - 40%. Bracketed character classes, e.g., [0-9\x{100}] containing code points above 255 are also now faster.

    Unicode 特性に対してマッチングする正規表現が高速化されました。 最大の改善は Unicode「拡張書記素クラスタ」である \X です。 これに関する改善はおよそ 35% - 40% です。 256 以上の符号位置を含む大かっこ文字クラス、例えば 0-9\x{100}] も 高速化されました。

  • On platforms supporting it, several former macros are now implemented as static inline functions. This should speed things up slightly on non-GCC platforms.

    対応しているプラットフォームでは、いくつかの以前のマクロは静的インライン 関数として実装されるようになりました。 これは非 GCC プラットフォームで少し高速化するはずです。

  • The optimisation of hashes in boolean context has been extended to affect scalar(%hash), %hash ? ... : ..., and sub { %hash || ... }.

    真偽値コンテキストでのハッシュの最適化は scalar(%hash), %hash ? ... : ..., sub { %hash || ... } に影響を与えるように 拡張されました。

  • Filetest operators manage the stack in a fractionally more efficient manner.

    ファイルテスト演算子はスタックを少しだけより効率的な方法で扱うように なりました。

  • Globs used in a numeric context are now numified directly in most cases, rather than being numified via stringification.

    数値コンテキストで使われるグロブは、ほとんどの場合、文字列化を経由して 数値化されるのでなく、直接数値化されるようになりました。

  • The x repetition operator is now folded to a single constant at compile time if called in scalar context with constant operands and no parentheses around the left operand.

    x 繰り返し演算子は、スカラコンテキストで定数オペランドで呼び出され、 左オペランドにかっこがなければ、コンパイル時に単一の定数に 畳み込まれるようになりました。

モジュールとプラグマ

新しいモジュールとプラグマ

  • Config::Perl::V version 0.16 has been added as a dual-lifed module. It provides structured data retrieval of perl -V output including information only known to the perl binary and not available via Config.

    Config::Perl::V バージョン 0.16 は二重管理モジュールとして追加されました。 これは、perl バイナリのみが知っていて Config 経由では利用できない 情報を含む、perl -V 出力の構造化されたデータを提供します。

更新されたモジュールとプラグマ

For a complete list of updates, run:

更新の完全な一覧は、以下を実行してください:

  $ corelist --diff 5.16.0 5.18.0

You can substitute your favorite version in place of 5.16.0, too.

5.16.0 の部分は好みのバージョンに置き換えることもできます。

  • Archive::Extract has been upgraded to 0.68.

    Archive::Extract はバージョン 0.68 に更新されました。

    Work around an edge case on Linux with Busybox's unzip.

    Busybox の unzip を使う Linux でのエッジケースを回避します。

  • Archive::Tar has been upgraded to 1.90.

    Archive::Tar はバージョン 1.90 に更新されました。

    ptar now supports the -T option as well as dashless options [rt.cpan.org #75473], [rt.cpan.org #75475].

    ptar はダッシュなしのオプションと共に -T オプションに 対応するようになりました [rt.cpan.org #75473], [rt.cpan.org #75475]。

    Auto-encode filenames marked as UTF-8 [rt.cpan.org #75474].

    UTF-8 とマークされたファイル名を自動的にエンコードするようになりました [rt.cpan.org #75474]。

    Don't use tell on IO::Zlib handles [rt.cpan.org #64339].

    IO::Zlib ハンドルに対して tell を使わなくなりました [rt.cpan.org #64339]。

    Don't try to chown on symlinks.

    シンボリックリンクに対して chown しようとしなくなりました。

  • autodie has been upgraded to 2.13.

    autodie はバージョン 2.13 に更新されました。

    autodie now plays nicely with the 'open' pragma.

    autodie は 'open' プラグマをうまく扱うようになりました。

  • B has been upgraded to 1.42.

    B はバージョン 1.42 に更新されました。

    The stashoff method of COPs has been added. This provides access to an internal field added in perl 5.16 under threaded builds [perl #113034].

    COP の stashoff メソッドが追加されました。 これは perl 5.16 のスレッドビルドで追加された内部フィールドへのアクセスを 提供します [perl #113034]。

    B::COP::stashpv now supports UTF-8 package names and embedded NULs.

    B::COP::stashpv は UTF-8 パッケージ名と埋め込みの NUL に 対応するようになりました。

    All CVf_* and GVf_* and more SV-related flag values are now provided as constants in the B:: namespace and available for export. The default export list has not changed.

    全ての CVf_*GVf_* と、さらに SV 関係のフラグの値は、 B:: 名前空間の定数として提供され、エクスポート可能になりました。 デフォルトのエクスポートリストは変更されません。

    This makes the module work with the new pad API.

    これによりモジュールが新しい pad API で動作するようになります。

  • B::Concise has been upgraded to 0.95.

    B::Concise はバージョン 0.95 に更新されました。

    The -nobanner option has been fixed, and formats can now be dumped. When passed a sub name to dump, it will check also to see whether it is the name of a format. If a sub and a format share the same name, it will dump both.

    -nobanner オプションが修正され、format がダンプできるようになりました。 ダンプするサブルーチン名を渡したとき、それがフォーマットの名前かどうかも チェックします。 サブルーチンとフォーマットが同じ名前を共有している場合、両方とも ダンプされます。

    This adds support for the new OpMAYBE_TRUEBOOL and OPpTRUEBOOL flags.

    これは新しい OpMAYBE_TRUEBOOL および OPpTRUEBOOL フラグへの 対応を追加します。

  • B::Debug has been upgraded to 1.18.

    B::Debug はバージョン 1.18 に更新されました。

    This adds support (experimentally) for B::PADLIST, which was added in Perl 5.17.4.

    これは、Perl 5.17.4 で追加された B::PADLIST への対応を(実験的に) 追加します。

  • B::Deparse has been upgraded to 1.20.

    B::Deparse はバージョン 1.20 に更新されました。

    Avoid warning when run under perl -w.

    perl -w で実行されたときの警告を避けるようになりました。

    It now deparses loop controls with the correct precedence, and multiple statements in a format line are also now deparsed correctly.

    ループ制御を正しく逆パースするようになり、format 行に複数の文が あっても正しく逆パースできるようなりました。

    This release suppresses trailing semicolons in formats.

    このリリースはフォーマットの末尾のセミコロンを抑制します。

    This release adds stub deparsing for lexical subroutines.

    このリリースはレキシカルサブルーチンのためのスタブ逆パースが追加します。

    It no longer dies when deparsing sort without arguments. It now correctly omits the comma for system $prog @args and exec $prog @args.

    引数なしの sort を逆パースしてももはや die しなくなりました。 system $prog @argsexec $prog @args のカンマを正しく 省略できるようになりました。

  • bignum, bigint and bigrat have been upgraded to 0.33.

    bignum, bigint, bigrat はバージョン 0.33 に更新されました。

    The overrides for hex and oct have been rewritten, eliminating several problems, and making one incompatible change:

    hexoct のオーバーライドが書き直され、いくつかの問題が取り除かれ、 一つの互換性のない変更が行われました:

    • Formerly, whichever of use bigint or use bigrat was compiled later would take precedence over the other, causing hex and oct not to respect the other pragma when in scope.

      以前は、use bigint または use bigrat が後でコンパイルされると もう片方よりも優先順位が上になるので、スコープ内にあるときに hexoct がもう一つのプラグマを考慮しなくなっていました。

    • Using any of these three pragmata would cause hex and oct anywhere else in the program to evalute their arguments in list context and prevent them from inferring $_ when called without arguments.

      これら三つのプラグマのいずれかを使うと、hexoct はプログラム中の どこにあっても引数をリストコンテキストで評価し、引数なしで予備されたときに $_ を推論するのを妨げていました。

    • Using any of these three pragmata would make oct("1234") return 1234 (for any number not beginning with 0) anywhere in the program. Now "1234" is translated from octal to decimal, whether within the pragma's scope or not.

      これらの三つのプラグマのいずれかを使うと、プログラム中のどこにあっても oct("1234") (0 以外で始まる任意の数字について) が 1234 を返していました。 プラグマのスコープ内かどうかに関わらず、"1234" は 8 進数から 10 進数に 変換されるようになりました。

    • The global overrides that facilitate lexical use of hex and oct now respect any existing overrides that were in place before the new overrides were installed, falling back to them outside of the scope of use bignum.

      hexoct の使用を便利にするためのグローバルなオーバーライドは、 その場で以前新しく行われていた既存のオーバーライドを考慮して、 use bignum のスコープの外側ではそれらに フォールバックするようになりました。

    • use bignum "hex", use bignum "oct" and similar invocations for bigint and bigrat now export a hex or oct function, instead of providing a global override.

      bigint や bigrat のための use bignum "hex", use bignum "oct" あるいは 同様の起動によって、グローバルなオーバーライドを提供するのではなく、 hexoct 関数をエクスポートするようになりました。

  • Carp has been upgraded to 1.29.

    Carp はバージョン 1.29 に更新されました。

    Carp is no longer confused when caller returns undef for a package that has been deleted.

    Carp はもはや、caller が既に削除されたパッケージで undef を返したときに 混乱しなくなりました。

    The longmess() and shortmess() functions are now documented.

    longmess()shortmess() 関数は文書化されました。

  • CGI has been upgraded to 3.63.

    CGI はバージョン 3.63 に更新されました。

    Unrecognized HTML escape sequences are now handled better, problematic trailing newlines are no longer inserted after <form> tags by startform() or start_form(), and bogus "Insecure Dependency" warnings appearing with some versions of perl are now worked around.

    認識できない HTML エスケープシーケンスはよりよく扱われるようになり、 問題のある末尾の改行は、もはや startform()start_form() によって <form> タグの後に挿入されなくなり、また一部のバージョンの perl で 現れていた偽の "Insecure Dependency" 警告は回避されるようになりました。

  • Class::Struct has been upgraded to 0.64.

    Class::Struct はバージョン 0.64 に更新されました。

    The constructor now respects overridden accessor methods [perl #29230].

    コンストラクタはオーバーライドされるアクセサメソッドに従うようになりました [perl #29230]。

  • Compress::Raw::Bzip2 has been upgraded to 2.060.

    Compress::Raw::Bzip2 はバージョン 2.060 に更新されました。

    The misuse of Perl's "magic" API has been fixed.

    Perl の "magic" API の誤用は修正されました。

  • Compress::Raw::Zlib has been upgraded to 2.060.

    Compress::Raw::Zlib はバージョン 2.060 に更新されました。

    Upgrade bundled zlib to version 1.2.7.

    同梱されている zlib はバージョン 1.2.7 に更新されました。

    Fix build failures on Irix, Solaris, and Win32, and also when building as C++ [rt.cpan.org #69985], [rt.cpan.org #77030], [rt.cpan.org #75222].

    Irix, Solaris, Win32 でのビルド失敗、および C++ としてビルドしたときの 失敗が修正されました [rt.cpan.org #69985], [rt.cpan.org #77030], [rt.cpan.org #75222]。

    The misuse of Perl's "magic" API has been fixed.

    Perl の "magic" API の誤用は修正されました。

    compress(), uncompress(), memGzip() and memGunzip() have been speeded up by making parameter validation more efficient.

    compress(), uncompress(), memGzip(), memGunzip() は、引数の バリデーションをより効率的に行うことで高速化されました。

  • CPAN::Meta::Requirements has been upgraded to 2.122.

    CPAN::Meta::Requirements はバージョン 2.122 に更新されました。

    Treat undef requirements to from_string_hash as 0 (with a warning).

    from_string_hash に対する undef の扱いが (警告付きの) 0 になりました。

    Added requirements_for_module method.

    requirements_for_module メソッドが追加されました。

  • CPANPLUS has been upgraded to 0.9135.

    CPANPLUS はバージョン 0.9135 に更新されました。

    Allow adding blib/script to PATH.

    PATH に blib/script が追加されました。

    Save the history between invocations of the shell.

    シェルの起動の間の履歴が保存されるようになりました。

    Handle multiple makemakerargs and makeflags arguments better.

    複数の makemakerargs および makeflags 引数をより良く 扱うようになりました。

    This resolves issues with the SQLite source engine.

    これは SQLite ソースエンジンの問題を解決します。

  • Data::Dumper has been upgraded to 2.145.

    Data::Dumper はバージョン 2.145 に更新されました。

    It has been optimized to only build a seen-scalar hash as necessary, thereby speeding up serialization drastically.

    スカラに見えるハッシュを必要な場合にのみ構築するように最適化され、 それによってシリアル化が大幅に高速化しました。

    Additional tests were added in order to improve statement, branch, condition and subroutine coverage. On the basis of the coverage analysis, some of the internals of Dumper.pm were refactored. Almost all methods are now documented.

    文、分岐、条件、サブルーチンカバレッジの向上のために追加のテストが 追加されました。 カバレッジ解析に基づいて、Dumper.pm の内部の一部が リファクタリングされました。 ほとんど全てのメソッドは文書化されました。

  • DB_File has been upgraded to 1.827.

    DB_File はバージョン 1.827 に更新されました。

    The main Perl module no longer uses the "@_" construct.

    メイン Perl モジュールはもはや "@_" 構文を使わなくなりました。

  • Devel::Peek has been upgraded to 1.11.

    Devel::Peek はバージョン 1.11 に更新されました。

    This fixes compilation with C++ compilers and makes the module work with the new pad API.

    これは C++ コンパイラでのコンパイルの問題を修正し、モジュールが新しい pad API で動作するようにします。

  • Digest::MD5 has been upgraded to 2.52.

    Digest::MD5 はバージョン 2.52 に更新されました。

    Fix Digest::Perl::MD5 OO fallback [rt.cpan.org #66634].

    Digest::Perl::MD5 OO フォールバッグが修正されました [rt.cpan.org #66634]。

  • Digest::SHA has been upgraded to 5.84.

    Digest::SHA はバージョン 5.84 に更新されました。

    This fixes a double-free bug, which might have caused vulnerabilities in some cases.

    これは、場合によっては脆弱性を引き起こしていた二重解放バグを修正します。

  • DynaLoader has been upgraded to 1.18.

    DynaLoader はバージョン 1.18 に更新されました。

    This is due to a minor code change in the XS for the VMS implementation.

    これは VMS 実装のための XS の小さなコード変更によるものです。

    This fixes warnings about using CODE sections without an OUTPUT section.

    これは OUTPUT 節なしで CODE 節を使うことに関する警告を修正します。

  • Encode has been upgraded to 2.49.

    Encode はバージョン 2.49 に更新されました。

    The Mac alias x-mac-ce has been added, and various bugs have been fixed in Encode::Unicode, Encode::UTF7 and Encode::GSM0338.

    Mac 別名 x-mac-ce が追加され、Encode::Unicode, Encode::UTF7, Encode::GSM0338 の様々なバグが修正されました。

  • Env has been upgraded to 1.04.

    Env はバージョン 1.04 に更新されました。

    Its SPLICE implementation no longer misbehaves in list context.

    SPLICE 実装はもはやリストコンテキストで間違ってる振る舞いをしなくなりました。

  • ExtUtils::CBuilder has been upgraded to 0.280210.

    ExtUtils::CBuilder はバージョン 0.280210 に更新されました。

    Manifest files are now correctly embedded for those versions of VC++ which make use of them. [perl #111782, #111798].

    Manifest ファイルは、使おうとする VC++ のバージョンを正しく 組み込むようになりました。 [perl #111782, #111798]。

    A list of symbols to export can now be passed to link() when on Windows, as on other OSes [perl #115100].

    Windows でも、その他の OS と同様、エクスポートするシンボルの一覧を link() に渡せるようになりました [perl #115100]。

  • ExtUtils::ParseXS has been upgraded to 3.18.

    ExtUtils::ParseXS はバージョン 3.18 に更新されました。

    The generated C code now avoids unnecessarily incrementing PL_amagic_generation on Perl versions where it's done automatically (or on current Perl where the variable no longer exists).

    生成された C コードは、自動的に PL_amagic_generation を インクリメントする Perl バージョン (あるいはこの変数がもはや存在しない 現在の Perl) で不必要にインクリメントしなくなりました。

    This avoids a bogus warning for initialised XSUB non-parameters [perl #112776].

    これは初期化された XSUB 非パラメータに関する偽の警告を回避します [perl #112776]。

  • File::Copy has been upgraded to 2.26.

    File::Copy はバージョン 2.26 に更新されました。

    copy() no longer zeros files when copying into the same directory, and also now fails (as it has long been documented to do) when attempting to copy a file over itself.

    copy() はもはや同じディレクトリにコピーするときにファイルをゼロに することはなく、自分自身にコピーしようとした場合に(長い間そうすると 文書化されていたように)失敗するようになりました。

  • File::DosGlob has been upgraded to 1.10.

    File::DosGlob はバージョン 1.10 に更新されました。

    The internal cache of file names that it keeps for each caller is now freed when that caller is freed. This means use File::DosGlob 'glob'; eval 'scalar <*>' no longer leaks memory.

    それぞれの呼び出し元に関して保持していたファイル名の内部キャッシュは 呼び出し元が解放されたときに解放されるようになりました。 これは、use File::DosGlob 'glob'; eval 'scalar <*>' がもはや メモリリークしないということです。

  • File::Fetch has been upgraded to 0.38.

    File::Fetch はバージョン 0.38 に更新されました。

    Added the 'file_default' option for URLs that do not have a file component.

    ファイル要素を持たない URL のための 'file_default' オプションが 追加されました。

    Use File::HomeDir when available, and provide PERL5_CPANPLUS_HOME to override the autodetection.

    利用可能なら File::HomeDir を使い、自動検出を上書きするための PERL5_CPANPLUS_HOME を提供するようになりました。

    Always re-fetch CHECKSUMS if fetchdir is set.

    fetchdir が設定されると常に CHECKSUMS を 再フェッチするようになりました。

  • File::Find has been upgraded to 1.23.

    File::Find はバージョン 1.23 に更新されました。

    This fixes inconsistent unixy path handling on VMS.

    これは VMS での unix 風パスの扱いの非一貫性を修正します。

    Individual files may now appear in list of directories to be searched [perl #59750].

    個々のファイルが検索したディレクトリの一覧に現れるようになりました [perl #59750]。

  • File::Glob has been upgraded to 1.20.

    File::Glob はバージョン 1.20 に更新されました。

    File::Glob has had exactly the same fix as File::DosGlob. Since it is what Perl's own glob operator itself uses (except on VMS), this means eval 'scalar <*>' no longer leaks.

    File::Glob は File::DosGlob と正確に同じ修正が行われました。 (VMS 以外では) Perl 自身の glob 演算子自身が使っているので、これは eval 'scalar <*>' がもはやリークしないということです。

    A space-separated list of patterns return long lists of results no longer results in memory corruption or crashes. This bug was introduced in Perl 5.16.0. [perl #114984]

    長い一覧を返すパターンのスペース区切りの一覧はもはやメモリ破壊やクラッシュを 彦越さなくなりました。 このバグは Perl 5.16.0 で導入されました。 [perl #114984]

  • File::Spec::Unix has been upgraded to 3.40.

    File::Spec::Unix はバージョン 3.40 に更新されました。

    abs2rel could produce incorrect results when given two relative paths or the root directory twice [perl #111510].

    abs2rel は、二つの相対パスが与えられたりルートディレクトリが二回 与えられたときに間違った結果を生成することがありました [perl #111510]。

  • File::stat has been upgraded to 1.07.

    File::stat はバージョン 1.07 に更新されました。

    File::stat ignores the filetest pragma, and warns when used in combination therewith. But it was not warning for -r. This has been fixed [perl #111640].

    File::statfiletest プラグマを無視し、組み合わせて使われると 警告します。 しかしこれは -r は警告していませんでした。 これは修正されました [perl #111640]。

    -p now works, and does not return false for pipes [perl #111638].

    -p が動作するようになり、パイプに対して偽を返さなくなりました [perl #111638]。

    Previously File::stat's overloaded -x and -X operators did not give the correct results for directories or executable files when running as root. They had been treating executable permissions for root just like for any other user, performing group membership tests etc for files not owned by root. They now follow the correct Unix behaviour - for a directory they are always true, and for a file if any of the three execute permission bits are set then they report that root can execute the file. Perl's builtin -x and -X operators have always been correct.

    以前は File::stat によってオーバーロードされた -x-X 演算子は、 root として実行されているときにディレクトリと実行ファイルに関して 正しい結果になっていませんでした。 root に対する実行許可はその他のユーザーと同様、root によって所有されていない ファイルについてはグループ所有者テスト など を行っていました。 これらは正しい Unix の振る舞いに従うようになりました - ディレクトリに対しては 常に真、ファイルに関しては三つの実行許可ビットのいずれかが設定されていれば root がファイルを実行できると報告します。 Perl の組み込みの -x-X 演算子は常に正しいです。

  • File::Temp has been upgraded to 0.23

    File::Temp はバージョン 0.2 に更新されました。

    Fixes various bugs involving directory removal. Defers unlinking tempfiles if the initial unlink fails, which fixes problems on NFS.

    ディレクトリ削除に関する様々なバグが修正されました。 最初の unlink が失敗した場合、一時ファイルの削除は延期されるようになり、 これにより NFS での問題が修正されました。

  • GDBM_File has been upgraded to 1.15.

    GDBM_File はバージョン 1.15 に更新されました。

    The undocumented optional fifth parameter to TIEHASH has been removed. This was intended to provide control of the callback used by gdbm* functions in case of fatal errors (such as filesystem problems), but did not work (and could never have worked). No code on CPAN even attempted to use it. The callback is now always the previous default, croak. Problems on some platforms with how the C croak function is called have also been resolved.

    TIEHASH に対する文書化されていなかったオプションの第 5 引数は 削除されました。 これは(ファイルシステムの問題のような)致命的エラーの場合に gdbm* 関数によって使われるコールバックの制御を提供することを 意図していましたが、動作しておらず (そして動作させることもできず)、 CPAN のコードでは使おうとすらされていませんでした。 コールバックは常に以前のデフォルトである croak になりました。 Ccroak 関数の呼び出され方に関する一部のプラットフォームでの問題も 解決しました。

  • Hash::Util has been upgraded to 0.15.

    Hash::Util はバージョン 0.15 に更新されました。

    hash_unlocked and hashref_unlocked now returns true if the hash is unlocked, instead of always returning false [perl #112126].

    hash_unlockedhashref_unlocked は、常に偽を返すのではなく、 ハッシュがアンロックされた場合に真を返すようになりました [perl #112126]。

    hash_unlocked, hashref_unlocked, lock_hash_recurse and unlock_hash_recurse are now exportable [perl #112126].

    hash_unlocked, hashref_unlocked, lock_hash_recurse, unlock_hash_recurse はエクスポート可能になりました [perl #112126]。

    Two new functions, hash_locked and hashref_locked, have been added. Oddly enough, these two functions were already exported, even though they did not exist [perl #112126].

    二つの新しい関数 hash_lockedhashref_locked が追加されました。 おかしなことに、これら二つの関数は存在していないのに既に エクスポートされていました [perl #112126]。

  • HTTP::Tiny has been upgraded to 0.025.

    HTTP::Tiny はバージョン 0.025 に更新されました。

    Add SSL verification features [github #6], [github #9].

    SSL 検証機能が追加されました [github #6], [github #9]。

    Include the final URL in the response hashref.

    レスポンスハッシュリファレンスに最終的な URL が含まれるようになりました。

    Add local_address option.

    local_address オプションが追加されました。

    This improves SSL support.

    これは SSL 対応を改良します。

  • IO has been upgraded to 1.28.

    IO はバージョン 1.28 に更新されました。

    sync() can now be called on read-only file handles [perl #64772].

    sync() は読み込み専用ファイルハンドルに対して呼び出せるようになりました [perl #64772]。

    IO::Socket tries harder to cache or otherwise fetch socket information.

    IO::Socket はソケット情報をよりしっかりとキャッシュやさもなければ フェッチしようとするようになりました。

  • IPC::Cmd has been upgraded to 0.80.

    IPC::Cmd はバージョン 0.80 に更新されました。

    Use POSIX::_exit instead of exit in run_forked [rt.cpan.org #76901].

    run_forkedexit ではなく Use POSIX::_exit を使うようになりました [rt.cpan.org #76901]。

  • IPC::Open3 has been upgraded to 1.13.

    IPC::Open3 はバージョン 1.13 に更新されました。

    The open3() function no longer uses POSIX::close() to close file descriptors since that breaks the ref-counting of file descriptors done by PerlIO in cases where the file descriptors are shared by PerlIO streams, leading to attempts to close the file descriptors a second time when any such PerlIO streams are closed later on.

    open3() 関数はファイル記述子を閉じるのにもはや POSIX::close() を 使わなくなりました; なぜなら、ファイル記述子が PerlIO ストリームによって 共有されている場合、PerlIO によって行われるファイル記述子の参照カウントを 壊し、そのような PerlIO ストリームが後で閉じられたときに 2 回ファイル 記述子を閉じようとしていました。

  • Locale::Codes has been upgraded to 3.25.

    Locale::Codes はバージョン 3.25 に更新されました。

    It includes some new codes.

    いくつかの新しいコードを含んでいます。

  • Memoize has been upgraded to 1.03.

    Memoize はバージョン 1.03 に更新されました。

    Fix the MERGE cache option.

    MERGE キャッシュオプションが修正されました。

  • Module::Build has been upgraded to 0.4003.

    Module::Build はバージョン 0.4003 に更新されました。

    Fixed bug where modules without $VERSION might have a version of '0' listed in 'provides' metadata, which will be rejected by PAUSE.

    $VERSION のないモジュールが 'provides' メタデータの中でバージョン '0' を 出力して、PAUSE に拒否されるバグを修正しましたs。

    Fixed bug in PodParser to allow numerals in module names.

    モジュール名に数詞が使えるようにするために PodParser のバグを修正しました。

    Fixed bug where giving arguments twice led to them becoming arrays, resulting in install paths like ARRAY(0xdeadbeef)/lib/Foo.pm.

    引数を 2 回渡すと配列になり、インストールパスが ARRAY(0xdeadbeef)/lib/Foo.pm のようになる問題が修正されました。

    A minor bug fix allows markup to be used around the leading "Name" in a POD "abstract" line, and some documentation improvements have been made.

    小さなバグ修正により、POD "abstract" 行の先頭の "Name" の周りに マークアップが使えるようになり、一部の文書の改良が行われました。

  • Module::CoreList has been upgraded to 2.90

    Module::CoreList はバージョン 2.9 に更新されました。

    Version information is now stored as a delta, which greatly reduces the size of the CoreList.pm file.

    バージョン情報は差分として保管されるようになり、CoreList.pm ファイルの サイズが大幅に削減されました。

    This restores compatibility with older versions of perl and cleans up the corelist data for various modules.

    これにより古いバージョンの perl との互換性が復活し、様々なモジュールの コアリストデータが整理されました。

  • Module::Load::Conditional has been upgraded to 0.54.

    Module::Load::Conditional はバージョン 0.54 に更新されました。

    Fix use of requires on perls installed to a path with spaces.

    スペースを含むパスにインストールされた perl での requires の使用が 修正されました。

    Various enhancements include the new use of Module::Metadata.

    新しい Module::Metadata の使用を含む様々な拡張が行われました。

  • Module::Metadata has been upgraded to 1.000011.

    Module::Metadata はバージョン 1.000011 に更新されました。

    The creation of a Module::Metadata object for a typical module file has been sped up by about 40%, and some spurious warnings about $VERSIONs have been suppressed.

    典型的なモジュールファイルに対する Module::Metadata オブジェクトの作成は 約 40% 高速化し、$VERSION に関する偽の警告が抑制されました。

  • Module::Pluggable has been upgraded to 4.7.

    Module::Pluggable はバージョン 4.7 に更新されました。

    Amongst other changes, triggers are now allowed on events, which gives a powerful way to modify behaviour.

    その他の変更と共に、トリガはイベントに対して可能になり、振る舞いを 変更するための強力な手段となりました。

  • Net::Ping has been upgraded to 2.41.

    Net::Ping はバージョン 2.41 に更新されました。

    This fixes some test failures on Windows.

    これは Windows でのいくつかのテスト失敗を修正します。

  • Opcode has been upgraded to 1.25.

    Opcode はバージョン 1.25 に更新されました。

    Reflect the removal of the boolkeys opcode and the addition of the clonecv, introcv and padcv opcodes.

    boolkeys オペコードの削除と clonecv, introcv, padcv オペコードの追加を 反映しました。

  • overload has been upgraded to 1.22.

    overload はバージョン 1.22 に更新されました。

    no overload now warns for invalid arguments, just like use overload.

    no overloaduse overload と同様、不正な引数に対して 警告するようになりました。

  • PerlIO::encoding has been upgraded to 0.16.

    PerlIO::encoding はバージョン 0.16 に更新されました。

    This is the module implementing the ":encoding(...)" I/O layer. It no longer corrupts memory or crashes when the encoding back-end reallocates the buffer or gives it a typeglob or shared hash key scalar.

    これは ":encoding(...)" I/O 層を実装するモジュールです。 これはエンコーディングバックエンドがバッファを再配置したり型グロブや 共有ハッシュキースカラに使っても、もはやメモリを壊したり クラッシュしたりしなくなりました。

  • PerlIO::scalar has been upgraded to 0.16.

    PerlIO::scalar はバージョン 0.16 に更新されました。

    The buffer scalar supplied may now only contain code pounts 0xFF or lower. [perl #109828]

    提供されるバッファスカラは符号位置 0xFF 以下のみを含むようになりました。 [perl #109828]

  • Perl::OSType has been upgraded to 1.003.

    Perl::OSType はバージョン 1.003 に更新されました。

    This fixes a bug detecting the VOS operating system.

    これは VOS オペレーティングシステムを検出するバグを修正します。

  • Pod::Html has been upgraded to 1.18.

    Pod::Html はバージョン 1.18 に更新されました。

    The option --libpods has been reinstated. It is deprecated, and its use does nothing other than issue a warning that it is no longer supported.

    --libpods オプションが回復しました。 これは廃止予定で、もはや対応しないという警告を出す以外のことは何もしません。

    Since the HTML files generated by pod2html claim to have a UTF-8 charset, actually write the files out using UTF-8 [perl #111446].

    UTF-8 文字集合であると主張する、pod2html で生成された HTML ファイルは、 実際に UTF-8 を使ってファイルを書き出します [perl #111446]。

  • Pod::Simple has been upgraded to 3.28.

    Pod::Simple はバージョン 3.28 に更新されました。

    Numerous improvements have been made, mostly to Pod::Simple::XHTML, which also has a compatibility change: the codes_in_verbatim option is now disabled by default. See cpan/Pod-Simple/ChangeLog for the full details.

    多くの改良が行われました; ほとんどは Pod::Simple::XHTML に対するもので、 互換性の変更も行われました: codes_in_verbatim オプションはデフォルトで 無効になりました。 完全な詳細については cpan/Pod-Simple/ChangeLog を参照してください。

  • re has been upgraded to 0.23

    re はバージョン 0.2 に更新されました。

    Single character [class]es like /[s]/ or /[s]/i are now optimized as if they did not have the brackets, i.e. /s/ or /s/i.

    /[s]//[s]/i のような、単一文字の 大かっこクラスは、 大かっこがないかのように最適化されるようになりました; つまり /s//s/i

    See note about op_comp in the "Internal Changes" section below.

    以下の "Internal Changes" 節の op_comp に関する注意を参照してください。

  • Safe has been upgraded to 2.35.

    Safe はバージョン 2.35 に更新されました。

    Fix interactions with Devel::Cover.

    Devel::Cover との相互作用が修正されました。

    Don't eval code under no strict.

    no strict でコードを eval しなくなりました。

  • Scalar::Util has been upgraded to version 1.27.

    Scalar::Util はバージョン 1.27 に更新されました。

    Fix an overloading issue with sum.

    sum のオーバーロードの問題が修正されました。

    first and reduce now check the callback first (so &first(1) is disallowed).

    firstreduce はまずコールバックをチェックするようになりました (従って &first(1) とはできません)。

    Fix tainted on magical values [rt.cpan.org #55763].

    マジカル値に対する tainted が修正されました [rt.cpan.org #55763]。

    Fix sum on previously magical values [rt.cpan.org #61118].

    以前マジカルだった値に対する sum が修正されました [rt.cpan.org #61118]。

    Fix reading past the end of a fixed buffer [rt.cpan.org #72700].

    固定バッファの末尾を超えた読み込みが修正されました [rt.cpan.org #72700]。

  • Search::Dict has been upgraded to 1.07.

    Search::Dict はバージョン 1.07 に更新されました。

    No longer require stat on filehandles.

    ファイルハンドルへの stat はもはや要求しなくなりました。

    Use fc for casefolding.

    文字の畳み込みに fc を使うようになりました。

  • Socket has been upgraded to 2.009.

    Socket はバージョン 2.009 に更新されました。

    Constants and functions required for IP multicast source group membership have been added.

    IP マルチキャストソースグループメンバーシップに要求される定数と関数が 追加されました。

    unpack_sockaddr_in() and unpack_sockaddr_in6() now return just the IP address in scalar context, and inet_ntop() now guards against incorrect length scalars being passed in.

    unpack_sockaddr_in()unpack_sockaddr_in6() は、スカラ コンテキストでは単に IP アドレスを返すようになり、inet_ntop() は渡された 不正な長さのスカラから保護するようになりました。

    This fixes an uninitialized memory read.

    この修正は未初期化メモリの読み込みを修正します。

  • Storable has been upgraded to 2.41.

    Storable はバージョン 2.41 に更新されました。

    Modifying $_[0] within STORABLE_freeze no longer results in crashes [perl #112358].

    STORABLE_freeze の中で $_[0] を修正してももはや クラッシュしなくなりました [perl #112358]。

    An object whose class implements STORABLE_attach is now thawed only once when there are multiple references to it in the structure being thawed [perl #111918].

    STORABLE_attach を実装しているオブジェクトは、解凍される構造で複数回 参照されるときに一度だけ解凍されるようになりました [perl #111918]。

    Restricted hashes were not always thawed correctly [perl #73972].

    制限ハッシュは常に正しく解凍されていませんでした [perl #73972]。

    Storable would croak when freezing a blessed REF object with a STORABLE_freeze() method [perl #113880].

    Storable は、STORABLE_freeze() メソッドがある bless された REF オブジェクトを凍結させるときに croak するようになりました [perl #113880]。

    It can now freeze and thaw vstrings correctly. This causes a slight incompatible change in the storage format, so the format version has increased to 2.9.

    v文字列を正しく凍結および解凍できるようになりました。 これにより保管フォーマットに少し互換性のない変更を引き起こしたので、 フォーマットバージョンは 2.9 に増加しました。

    This contains various bugfixes, including compatibility fixes for older versions of Perl and vstring handling.

    これには様々なバグ修正を含んでいます; 古いバージョンの Perl やv文字列の扱いの 互換性の修正を含みます。

  • Sys::Syslog has been upgraded to 0.32.

    Sys::Syslog はバージョン 0.32 に更新されました。

    This contains several bug fixes relating to getservbyname(), setlogsock()and log levels in syslog(), together with fixes for Windows, Haiku-OS and GNU/kFreeBSD. See cpan/Sys-Syslog/Changes for the full details.

    getservbyname(), setlogsock() および syslog() のログレベルに 関するものに加えて、Windows, Haiku-OS, GNU/kFreeBSD に関連する いくつかのバグ修正を含んでいます。 完全な詳細については cpan/Sys-Syslog/Changes を参照してください。

  • Term::ANSIColor has been upgraded to 4.02.

    Term::ANSIColor はバージョン 4.02 に更新されました。

    Add support for italics.

    斜体に対応しました。

    Improve error handling.

    エラー処理が向上しました。

  • Term::ReadLine has been upgraded to 1.10. This fixes the use of the cpan and cpanp shells on Windows in the event that the current drive happens to contain a \dev\tty file.

    Term::ReadLine はバージョン 1.10 に更新されました。 これは、Windows でたまたま現在のドライブに \dev\tty ファイルがあるときの cpancpanp シェルの使用を修正します。

  • Test::Harness has been upgraded to 3.26.

    Test::Harness はバージョン 3.26 に更新されました。

    Fix glob semantics on Win32 [rt.cpan.org #49732].

    Win32 でのグロブ意味論が修正されました [rt.cpan.org #49732]。

    Don't use Win32::GetShortPathName when calling perl [rt.cpan.org #47890].

    perl を呼び出すときに Win32::GetShortPathName を使わなくなりました [rt.cpan.org #47890]。

    Ignore -T when reading shebang [rt.cpan.org #64404].

    シェバンを読むときに -T を無視するようになりました [rt.cpan.org #64404]。

    Handle the case where we don't know the wait status of the test more gracefully.

    テストの待ち状態が分からない場合をより優雅に扱うようになりました。

    Make the test summary 'ok' line overridable so that it can be changed to a plugin to make the output of prove idempotent.

    テストサマリの 'ok' 行を上書きできるようになったのでprove 互換の出力を 作るためのプラグインに変更出来るようになりました。

    Don't run world-writable files.

    全体書き込み可能ファイルを実行しなくなりました。

  • Text::Tabs and Text::Wrap have been upgraded to 2012.0818. Support for Unicode combining characters has been added to them both.

    Text::TabsText::Wrap は 2012.0818 に更新されました。 Unicode 結合文字の扱いが両方に追加されました。

  • threads::shared has been upgraded to 1.31.

    threads::shared はバージョン 1.31 に更新されました。

    This adds the option to warn about or ignore attempts to clone structures that can't be cloned, as opposed to just unconditionally dying in that case.

    クローンできない構造体をクローンしようとしたときに無条件に die するのではなく、警告したり無視したりするオプションが追加されました。

    This adds support for dual-valued values as created by Scalar::Util::dualvar.

    Scalar::Util::dualvar によって 作成された二重値対応が追加されました。

  • Tie::StdHandle has been upgraded to 4.3.

    Tie::StdHandle はバージョン 4.3 に更新されました。

    READ now respects the offset argument to read [perl #112826].

    READread へのオフセット引数を考慮するようになりました [perl #112826]。

  • Time::Local has been upgraded to 1.2300.

    Time::Local はバージョン 1.2300 に更新されました。

    Seconds values greater than 59 but less than 60 no longer cause timegm() and timelocal() to croak.

    59 より大きく 60 より小さい秒はもはや timegm()timelocal() で croak を引き起こさなくなりました。

  • Unicode::UCD has been upgraded to 0.53.

    Unicode::UCD はバージョン 0.53 に更新されました。

    This adds a function all_casefolds() that returns all the casefolds.

    これは、全ての折り畳み文字を返す関数 all_casefolds() を追加します。

  • Win32 has been upgraded to 0.47.

    Win32 はバージョン 0.47 に更新されました。

    New APIs have been added for getting and setting the current code page.

    現在のコードページを取得および設定するための新しい API が追加されました。

削除されたモジュールとプラグマ

文書

既存の文書の変更

perlcheat

  • perlcheat has been reorganized, and a few new sections were added.

    perlcheat は再構成され、いくつかの新しい内容が追加されました。

perldata

  • Now explicitly documents the behaviour of hash initializer lists that contain duplicate keys.

    重複したキーを持つハッシュ初期化リストの振る舞いが明示的に文書化されました。

perldiag

  • The explanation of symbolic references being prevented by "strict refs" now doesn't assume that the reader knows what symbolic references are.

    シンボリックリファレンスが "strict refs" で妨げられるという説明は、 読者がシンボリックリンクが何かということを知っているということを 仮定しなくなりました。

perlfaq

  • perlfaq has been synchronized with version 5.0150040 from CPAN.

    perlfaq は CPAN のバージョン 5.0150040 と同期されました。

perlfunc

  • The return value of pipe is now documented.

    pipe の返り値が文書化されました。

  • Clarified documentation of our.

    our の文書を明確化しました。

perlop

  • Loop control verbs (dump, goto, next, last and redo) have always had the same precedence as assignment operators, but this was not documented until now.

    ループ制御動詞 (dump, goto, next, last, redo) は常に 代入演算子と同じ優先順位を持っていますが、今まで文書化されていませんでした。

診断メッセージ

The following additions or changes have been made to diagnostic output, including warnings and fatal error messages. For the complete list of diagnostic messages, see perldiag.

以下の追加や変更が、警告や致命的エラーメッセージ含む診断出力に行われました。 完全な診断メッセージの一覧については、perldiag を参照してください。

新しい診断メッセージ

新しいエラー

  • Unterminated delimiter for here document

    This message now occurs when a here document label has an initial quotation mark but the final quotation mark is missing.

    このメッセージは、ヒヤドキュメントラベルの先頭に引用符があるけれども 末尾の引用符がない場合に起きるようになりました。

    This replaces a bogus and misleading error message about not finding the label itself [perl #114104].

    これは、ラベル自身が見つからないという偽で誤解させるエラーメッセージを 置き換えます [perl #114104]。

  • panic: child pseudo-process was never scheduled

    This error is thrown when a child pseudo-process in the ithreads implementation on Windows was not scheduled within the time period allowed and therefore was not able to initialize properly [perl #88840].

    このエラーは、Windows の ithreads 実装での子疑似プロセスが定められた時間 以内に計画されず、そのため適切に初期化できなかったときに投げられます [perl #88840]。

  • Group name must start with a non-digit word character in regex; marked by <-- HERE in m/%s/

    This error has been added for (?&0), which is invalid. It used to produce an incomprehensible error message [perl #101666].

    このエラーは、不正である (?&0) のために追加されました。 以前は不可解なエラーメッセージを生成していました [perl #101666]。

  • Can't use an undefined value as a subroutine reference

    Calling an undefined value as a subroutine now produces this error message. It used to, but was accidentally disabled, first in Perl 5.004 for non-magical variables, and then in Perl v5.14 for magical (e.g., tied) variables. It has now been restored. In the mean time, undef was treated as an empty string [perl #113576].

    サブルーチンとして未定義値を呼び出すとこのエラーメッセージが生成されます。 以前はそうでしたが、誤って無効になっていました; 非マジカル変数に関しては Perl 5.004 から、(例えば tie されたような)マジカルな変数に関しては Perl v5.14 からです。 これは復元されました。 それまでは、undef は空文字列として扱われていました [perl #113576]。

  • Experimental "%s" subs not enabled

    To use lexical subs, you must first enable them:

    レキシカルなサブルーチンを使うには、まず有効にしなければなりません:

        no warnings 'experimental::lexical_subs';
        use feature 'lexical_subs';
        my sub foo { ... }

新しい警告

  • 'Strings with code points over 0xFF may not be mapped into in-memory file handles'

  • '%s' resolved to '\o{%s}%d'

  • 'Trailing white-space in a charnames alias definition is deprecated'

  • 'A sequence of multiple spaces in a charnames alias definition is deprecated'

  • 'Passing malformed UTF-8 to "%s" is deprecated'

  • Subroutine "&%s" is not available

    (W closure) During compilation, an inner named subroutine or eval is attempting to capture an outer lexical subroutine that is not currently available. This can happen for one of two reasons. First, the lexical subroutine may be declared in an outer anonymous subroutine that has not yet been created. (Remember that named subs are created at compile time, while anonymous subs are created at run-time.) For example,

    (W closure) コンパイルの間、内側の名前付きサブルーチンや eval は 現在利用できない外側のレキシカルサブルーチンを捕捉しようとしています。 これは二つの理由の一つで起こりえます。 1 番目として、レキシカルサブルーチンはまだ作成されていない外側の 無名サブルーチンで宣言されるかもしれません。 (名前付きサブルーチンはコンパイル時に作成され、一方無名サブルーチンは 実行時に作成されることを忘れないでください。) 例えば、

        sub { my sub a {...} sub f { \&a } }

    At the time that f is created, it can't capture the current the "a" sub, since the anonymous subroutine hasn't been created yet. Conversely, the following won't give a warning since the anonymous subroutine has by now been created and is live:

    f が作成される時点で、現在の "a" サブルーチンを捕捉することはできません; 無名サブルーチンはまだ作成されていないからです。 反対に、以下のものは警告が出ません; 無名サブルーチンは既に作成されていて 有効だからです:

        sub { my sub a {...} eval 'sub f { \&a }' }->();

    The second situation is caused by an eval accessing a variable that has gone out of scope, for example,

    2 番目の状況は、eval がスコープから外れた変数にアクセスすることによって 引き起こされます; 例えば、

        sub f {
            my sub a {...}
            sub { eval '\&a' }
        }
        f()->();

    Here, when the '\&a' in the eval is being compiled, f() is not currently being executed, so its &a is not available for capture.

    ここで、eval 内の '\&a' がコンパイルされるとき、f() はまだ 実行されていないので、&a は捕捉するために利用できません。

  • "%s" subroutine &%s masks earlier declaration in same %s

    (W misc) A "my" or "state" subroutine has been redeclared in the current scope or statement, effectively eliminating all access to the previous instance. This is almost always a typographical error. Note that the earlier subroutine will still exist until the end of the scope or until all closure references to it are destroyed.

    (W misc) "my" または "state" サブルーチンが同じスコープや文で再定義され、 事実上以前の実体への全てのアクセスが削除されました。 これはほとんど常にタイプミスです。 以前のサブルーチンはスコープの終了したりや全てのクロージャリファレンスが 破壊されるまでまだ存在したままであることに注意してください。

  • The %s feature is experimental

    (S experimental) This warning is emitted if you enable an experimental feature via use feature. Simply suppress the warning if you want to use the feature, but know that in doing so you are taking the risk of using an experimental feature which may change or be removed in a future Perl version:

    (S experimental) この警告は、use feature で実験的機能を有効にしたときに 出力されます。 この機能を使いたいなら単に警告を抑制してください; しかしそうすると いうことは、将来の Perl バージョンで変更されたり削除されたりする実験的機能を 使うリスクを取るということです:

        no warnings "experimental::lexical_subs";
        use feature "lexical_subs";
  • sleep(%u) too large

    (W overflow) You called sleep with a number that was larger than it can reliably handle and sleep probably slept for less time than requested.

    (W overflow) sleep を信頼性を持って扱えるよりも大きな値で呼び出したので、 sleep はおそらく指定されたよりも短い時間だけ sleep します。

  • Wide character in setenv

    Attempts to put wide characters into environment variables via %ENV now provoke this warning.

    %ENV 経由で環境変数にワイド文字を入れようとするとこの警告が 出るようになりました。

  • "Invalid negative number (%s) in chr"

    chr() now warns when passed a negative value [perl #83048].

    chr() は、負数を渡すと警告するようになりました [perl #83048]。

  • "Integer overflow in srand"

    srand() now warns when passed a value that doesn't fit in a UV (since the value will be truncated rather than overflowing) [perl #40605].

    srand() は、UV に収まらない値を渡すと (値はオーバーフローするのではなく 切り詰められるので) きに警告するようになりました [perl #40605]。

  • "-i used with no filenames on the command line, reading from STDIN"

    Running perl with the -i flag now warns if no input files are provided on the command line [perl #113410].

    入力ファイルがコマンドラインから提供されないときに -i フラグ付きで perl を 実行すると、警告するようになりました [perl #113410]。

既存の診断メッセージの変更

  • $* is no longer supported

    The warning that use of $* and $# is no longer supported is now generated for every location that references them. Previously it would fail to be generated if another variable using the same typeglob was seen first (e.g. @* before $*), and would not be generated for the second and subsequent uses. (It's hard to fix the failure to generate warnings at all without also generating them every time, and warning every time is consistent with the warnings that $[ used to generate.)

    $* および $# の使用には対応していないという警告は、参照しているところ 全てで起こるようになりました。 以前は、同じ型グロブを使っている他の変数が先に現れると (例えば $* の前に @*) 生成に失敗していて、また 2 回目以降の使用では 生成されていませんでした。 (毎回生成することなく生成警告の失敗を修正するのは困難で、毎回警告するのは $[ が生成していた警告と一貫性があります。used to generate.)

  • The warnings for \b{ and \B{ were added. They are a deprecation warning which should be turned off by that category. One should not have to turn off regular regexp warnings as well to get rid of these.

    \b{\B{ のための警告が追加されました。 これはそのカテゴリでオフにされるべき廃止予定警告です。 これらを避けるために正規表現警告をオフにする必要があるべきではありません。

  • Constant(%s): Call to &{$^H{%s}} did not return a defined value

    Constant overloading that returns undef results in this error message. For numeric constants, it used to say "Constant(undef)". "undef" has been replaced with the number itself.

    undef を返す定数オーバーロードはこのエラーメッセージを出力します。 数値定数に関しては、"Constant(undef)" となっていました。 "undef" は数値自身に置き換えられました。

  • The error produced when a module cannot be loaded now includes a hint that the module may need to be installed: "Can't locate hopping.pm in @INC (you may need to install the hopping module) (@INC contains: ...)"

    モジュールが読み込めなかったときに生成されるエラーには、モジュールを インストールする必要があるかも知れないことを示すヒントが 含まれるようになりました: "Can't locate hopping.pm in @INC (you may need to install the hopping module) (@INC contains: ...)"

  • vector argument not supported with alpha versions

    This warning was not suppressable, even with no warnings. Now it is suppressible, and has been moved from the "internal" category to the "printf" category.

    この警告は no warnings でも抑制できませんでした。 これは抑制できるようになり、"internal" カテゴリから "printf" カテゴリに 移動しました。

  • Can't do {n,m} with n > m in regex; marked by <-- HERE in m/%s/

    This fatal error has been turned into a warning that reads:

    この致命的エラーは以下の警告になりました:

    Quantifier {n,m} with n > m can't match in regex

    (W regexp) Minima should be less than or equal to maxima. If you really want your regexp to match something 0 times, just put {0}.

    (W regexp) 最小値は最大値以下であるべきです。 本当に正規表現で何かに 0 回マッチングしたいなら、単に {0} としてください。

  • The "Runaway prototype" warning that occurs in bizarre cases has been removed as being unhelpful and inconsistent.

    奇妙な状況で起きる "Runaway prototype" 警告は削除されました; これは 助けにならず一貫していないからです。

  • The "Not a format reference" error has been removed, as the only case in which it could be triggered was a bug.

    "Not a format reference" エラーは削除されました; これが引き起こされるかも 知れない唯一の状況はバグだからです。

  • The "Unable to create sub named %s" error has been removed for the same reason.

    "Unable to create sub named %s" エラーも同じ理由で削除されました。

  • The 'Can't use "my %s" in sort comparison' error has been downgraded to a warning, '"my %s" used in sort comparison' (with 'state' instead of 'my' for state variables). In addition, the heuristics for guessing whether lexical $a or $b has been misused have been improved to generate fewer false positives. Lexical $a and $b are no longer disallowed if they are outside the sort block. Also, a named unary or list operator inside the sort block no longer causes the $a or $b to be ignored [perl #86136].

    'Can't use "my %s" in sort comparison' エラーは、 '"my %s" used in sort comparison' (state 変数の場合は 'my' の代わりに 'state') 警告に格下げされました。 さらに、レキシカルな $a や $b が誤用されているかどうかを推測する ヒューリスティックは、偽陽性の生成が減少するように改良されました。 レキシカルな $a や $b は、ソートブロックの外側ならもはや 禁止されなくなりました。 また、ソートブロックの内側の名前付き単項またはリスト演算子を使うと $a や $b が無視されるということはもはやなくなりました [perl #86136]。

ツールの変更

h2xs

  • h2xs no longer produces invalid code for empty defines. [perl #20636]

    h2xs はもはや空定義で不正なコードを生成しなくなりました。 [perl #20636]

設定とコンパイル

  • Added useversionedarchname option to Configure

    Configure に useversionedarchname オプションが追加されました

    When set, it includes 'api_versionstring' in 'archname'. E.g. x86_64-linux-5.13.6-thread-multi. It is unset by default.

    設定されると、'archname' に 'api_versionstring' が含まれます。 例えば x86_64-linux-5.13.6-thread-multi。 これはデフォルトでは設定されていません。

    This feature was requested by Tim Bunce, who observed that INSTALL_BASE creates a library structure that does not differentiate by perl version. Instead, it places architecture specific files in "$install_base/lib/perl5/$archname". This makes it difficult to use a common INSTALL_BASE library path with multiple versions of perl.

    この機能は、INSTALL_BASE が perl のバージョンによって違いがない ライブラリ構造を作ることを観測した Tim Bunce によって要望されました。 代わりに、アーキテクチャ固有のファイルを "$install_base/lib/perl5/$archname" に置きます。 これにより、複数のバージョンの perl で共通の INSTALL_BASE ライブラリパスを 使うのを難しくしていました。

    By setting -Duseversionedarchname, the $archname will be distinct for architecture and API version, allowing mixed use of INSTALL_BASE.

    -Duseversionedarchname を設定することで、$archname はアーキテクチャ および API バージョンで識別され、INSTALL_BASE を混ぜて 使えるようになります。

  • Add a PERL_NO_INLINE_FUNCTIONS option

    PERL_NO_INLINE_FUNCTIONS オプションを追加しました

    If PERL_NO_INLINE_FUNCTIONS is defined, don't include "inline.h"

    PERL_NO_INLINE_FUNCTIONS が定義されると、"inline.h" を インクルードしません。

    This permits test code to include the perl headers for definitions without creating a link dependency on the perl library (which may not exist yet).

    これにより、テストコードが、(まだ存在しないかも知れない) perl ライブラリへの リンク依存を作ることなく perl ヘッダをインクルードできるようになります。

  • Configure will honour the external MAILDOMAIN environment variable, if set.

    設定すると、Configure は外部の MAILDOMAIN 環境変数を調べます。

  • installman no longer ignores the silent option

    installman は静粛オプションを無視しなくなりました。

  • Both META.yml and META.json files are now included in the distribution.

    META.ymlMETA.json の両方のファイルは配布に含まれるように なりました。

  • Configure will now correctly detect isblank() when compiling with a C++ compiler.

    C++ でコンパイルするとき、Configure は正しく isblank() を 検出するようになりました。

  • The pager detection in Configure has been improved to allow responses which specify options after the program name, e.g. /usr/bin/less -R, if the user accepts the default value. This helps perldoc when handling ANSI escapes [perl #72156].

    Configure のページャ検出は、ユーザーがデフォルト値を受け付けるときに プログラム名の後にオプションを指定した場合 (例えば /usr/bin/less -R) に 対応するように改良されました。 これは ANSI エスケープを扱うときに perldoc を助けます [perl #72156]。

テスト

  • The test suite now has a section for tests that require very large amounts of memory. These tests won't run by default; they can be enabled by setting the PERL_TEST_MEMORY environment variable to the number of gibibytes of memory that may be safely used.

    テストスイートはとても大きなメモリを必要とするテストのための節を 持つようになりました。 これらのテストはデフォルトでは実行されません; PERL_TEST_MEMORY 環境変数に 安全に使えるメモリ量をギビバイト単位で指定することで有効になります。

プラットフォーム対応

中断したプラットフォーム

BeOS

BeOS was an operating system for personal computers developed by Be Inc, initially for their BeBox hardware. The OS Haiku was written as an open source replacement for/continuation of BeOS, and its perl port is current and actively maintained.

BeOS は Be Inc によって開発されたパソコンのためのオペレーティングシステムで、 当初は BeBox ハードウェアのためのものです。 Haiku OS は BeOS のオープンソース代替品/続編で、この perl 版は最新で活発に 保守されています。

UTS Global

Support code relating to UTS global has been removed. UTS was a mainframe version of System V created by Amdahl, subsequently sold to UTS Global. The port has not been touched since before Perl v5.8.0, and UTS Global is now defunct.

UTS グローバルに関する対応コードは削除されました。 UTS は Amdahl によって作成されたメインフレーム版の System V で、その後 UTS Global によって販売されました。 この移植版は Perl v5.8.0 以前から触れられておらず、UTS Global は もうありません。

VM/ESA

Support for VM/ESA has been removed. The port was tested on 2.3.0, which IBM ended service on in March 2002. 2.4.0 ended service in June 2003, and was superseded by Z/VM. The current version of Z/VM is V6.2.0, and scheduled for end of service on 2015/04/30.

VM/ESA 対応は削除されました。 この移植版は IBM が 2002 年 3 月に対応を終了した 2.3.0 で テストされていました。 2.4.0 は 2003 年 6 月に対応を終了し、Z/VM に取って代わられました。 Z/VM の現在のバージョンは V6.2.0 で、2015/04/30 に対応を終了することが 予定されています。

MPE/IX

Support for MPE/IX has been removed.

MPE/IX 対応は削除されました。

EPOC

Support code relating to EPOC has been removed. EPOC was a family of operating systems developed by Psion for mobile devices. It was the predecessor of Symbian. The port was last updated in April 2002.

EPOC に関連する対応コードは削除されました。 EPOC は Psion によって開発されたモバイルデバイス向けのオペレーティング システムファミリーです。 これは Symbian の祖先です。 この移植版が最後に更新されたのは 2002 年 4 月です。

Rhapsody

Support for Rhapsody has been removed.

Rhapsody 対応は削除されました。

プラットフォーム固有の注意

AIX

Configure now always adds -qlanglvl=extc99 to the CC flags on AIX when using xlC. This will make it easier to compile a number of XS-based modules that assume C99 [perl #113778].

Configure は xlC を使うときに AIX の CC フラグに常に -qlanglvl=extc99 を 追加するようになりました。 これにより C99 を仮定している多くの XS ベースのモジュールをコンパイルするのが より容易になります [perl #113778]。

clang++

There is now a workaround for a compiler bug that prevented compiling with clang++ since Perl v5.15.7 [perl #112786].

Perl v5.15.7 から clang++ でコンパイルするのを妨げるコンパイラのバグを 回避するようになりました [perl #112786]。

C++

When compiling the Perl core as C++ (which is only semi-supported), the mathom functions are now compiled as extern "C", to ensure proper binary compatibility. (However, binary compatibility isn't generally guaranteed anyway in the situations where this would matter.)

Perl コアを C++ としてコンパイルするとき(これは半対応状態です)、 mathom 関数は extern "C" でコンパイルされるようになれるようになりました; 適切なバイナリ互換性を確実にするためです。 (しかし、バイナリ互換性は、これが問題になるような状況では一般的には 保証されません。)

Darwin

Stop hardcoding an alignment on 8 byte boundaries to fix builds using -Dusemorebits.

-Dusemorebits を使ったビルドを修正するために、8 バイト境界のアライメントの ハードコーディングを止めました。

Haiku

Perl should now work out of the box on Haiku R1 Alpha 4.

Perl は Haiku R1 Alpha 4 そのままで動作するようになったはずです。

MidnightBSD

libc_r was removed from recent versions of MidnightBSD and older versions work better with pthread. Threading is now enabled using pthread which corrects build errors with threading enabled on 0.4-CURRENT.

libc_r は最近のバージョンの MidnightBSD から取り除かれ、より古い バージョンは pthread でよりよく動作します。 0.4-CURRENT でスレッドを有効にしたときのビルドエラーを修正するために、 スレッドは pthread を使って有効化されるようになりました。

Solaris

In Configure, avoid running sed commands with flags not supported on Solaris.

Configure で、Solaris で対応していないフラグ付きの sed コマンドを 実行しないようになりました。

VMS

  • Where possible, the case of filenames and command-line arguments is now preserved by enabling the CRTL features DECC$EFS_CASE_PRESERVE and DECC$ARGV_PARSE_STYLE at start-up time. The latter only takes effect when extended parse is enabled in the process from which Perl is run.

    可能な場所では、起動時に CRTL 機能 DECC$EFS_CASE_PRESERVEDECC$ARGV_PARSE_STYLE を有効にすることで、ファイル名とコマンドライン引数の 大文字小文字を保存するようになりました。 後者は Perl が実行されているプロセスで拡張パースが有効の場合にのみ効果が あります。

  • The character set for Extended Filename Syntax (EFS) is now enabled by default on VMS. Among other things, this provides better handling of dots in directory names, multiple dots in filenames, and spaces in filenames. To obtain the old behavior, set the logical name DECC$EFS_CHARSET to DISABLE.

    Extended Filename Syntax (EFS) のための文字集合は VMS ではデフォルトで 有効になりました。 特に、これはディレクトリ名のドット、ファイル名の複数のドット、ファイル名の 中のスペースをよりよい扱いを提供します。 古い振る舞いを適用するには、論理名 DECC$EFS_CHARSETDISABLE に 設定してください。

  • Fixed linking on builds configured with -Dusemymalloc=y.

    -Dusemymalloc=y が設定されたビルドのリンクが修正されました。

  • Experimental support for building Perl with the HP C++ compiler is available by configuring with -Dusecxx.

    HP C++ コンパイラでの Perl ビルドの実験的対応は -Dusecxx 付きで 設定することで利用可能です。

  • All C header files from the top-level directory of the distribution are now installed on VMS, providing consistency with a long-standing practice on other platforms. Previously only a subset were installed, which broke non-core extension builds for extensions that depended on the missing include files.

    配布の最上位ディレクトリの全ての C ヘッダファイルは VMS に インストールされるようになり、他のプラットフォームの長年の慣例との一貫性を 提供します。 以前は一部分のみがインストールされていたので、書けていたインクルード ファイルに依存していたエクステンションに関しては非コアエクステンションの ビルドを壊していました。

  • Quotes are now removed from the command verb (but not the parameters) for commands spawned via system, backticks, or a piped open. Previously, quotes on the verb were passed through to DCL, which would fail to recognize the command. Also, if the verb is actually a path to an image or command procedure on an ODS-5 volume, quoting it now allows the path to contain spaces.

    system、逆クォート、パイプの open で起動されるコマンドのための コマンド動詞からクォートが削除されました(引数はそのままです)。 以前は、動詞のクォートは DCL に渡され、コマンドの認識に 失敗することになっていました。 また、動詞が実際には ODS-5 ボリュームのイメージやコマンド手続きへのパスの 場合、クォートすることでスペースを含むパスが使えるようになりました。

  • The a2p build has been fixed for the HP C++ compiler on OpenVMS.

    a2p ビルドは OpenVMS での C++ コンパイラのために修正されました。

Win32

  • Perl can now be built using Microsoft's Visual C++ 2012 compiler by specifying CCTYPE=MSVC110 (or MSVC110FREE if you are using the free Express edition for Windows Desktop) in win32/Makefile.

    win32/Makefile でCCTYPE=MSVC110 (または無料の Express Express edition for Windows Desktop を使っているなら MSVC110FREE) を指定することで Microsoft の Visual C++ 2012 コンパイラを使ってビルドできるようになりました。

  • The option to build without USE_SOCKETS_AS_HANDLES has been removed.

    USE_SOCKETS_AS_HANDLES なしでビルドするオプションは削除されました。

  • Fixed a problem where perl could crash while cleaning up threads (including the main thread) in threaded debugging builds on Win32 and possibly other platforms [perl #114496].

    Win32 のスレッド付きデバッグビルドおよび、可能性としては他の プラットフォームで、(メインスレッドを含む) スレッドの掃除中に クラッシュすることがある問題が修正されました [perl #114496]。

  • A rare race condition that would lead to sleep taking more time than requested, and possibly even hanging, has been fixed [perl #33096].

    要求したよりも長い間 sleep したり、ハングする可能性も あるような、稀な競合条件が修正されました [perl #33096]。

  • link on Win32 now attempts to set $! to more appropriate values based on the Win32 API error code. [perl #112272]

    Win32 での link は、Win32 API エラーコードを基にしたより適切な値を $! に 設定しようとするようになりました。 [perl #112272]

    Perl no longer mangles the environment block, e.g. when launching a new sub-process, when the environment contains non-ASCII characters. Known problems still remain, however, when the environment contains characters outside of the current ANSI codepage (e.g. see the item about Unicode in %ENV in http://perl5.git.perl.org/perl.git/blob/HEAD:/Porting/todo.pod). [perl #113536]

    Perl は、例えば新しいサブプロセスを起動するとき、環境に非 ASCII 文字が 入っているときに、もはや環境ブロックを壊さなくなりました。 しかし、環境に現在の ANSI コードページの外側の文字を含む場合の既知の問題は まだ残っています (例えば、%ENV 内の Unicode については http://perl5.git.perl.org/perl.git/blob/HEAD:/Porting/todo.pod を 参照してください)。 [perl #113536]

  • Building perl with some Windows compilers used to fail due to a problem with miniperl's glob operator (which uses the perlglob program) deleting the PATH environment variable [perl #113798].

    一部の Windows での perl のビルドは、 (perlglob プログラムを使う) miniperl の glob 演算子が PATH 環境変数を 削除するという問題によって失敗していました [perl #113798]。

  • A new makefile option, USE_64_BIT_INT, has been added to the Windows makefiles. Set this to "define" when building a 32-bit perl if you want it to use 64-bit integers.

    新しい makefile オプションである USE_64_BIT_INT が Windows の makefile に追加されました。 32-ビット perl をビルドするときに 64-ビット整数を使いたいなら、これを "define" に設定します。

    Machine code size reductions, already made to the DLLs of XS modules in Perl v5.17.2, have now been extended to the perl DLL itself.

    マシンコードサイズの削減は、XS モジュールの DLL に対しては既に Perl v5.17.2 で行われていましたが、perl DLL 自身に拡張されました。

    Building with VC++ 6.0 was inadvertently broken in Perl v5.17.2 but has now been fixed again.

    VC++ 6.0 でのビルドは不注意により Perl v5.17.2 で壊れていましたが、 再び修正されました。

WinCE

Building on WinCE is now possible once again, although more work is required to fully restore a clean build.

WinCE でのビルドは再び可能になりましたが、クリーンなビルドを完全に 復元するにはさらなる作業が必要です。

内部の変更

  • Synonyms for the misleadingly named av_len() have been created: av_top_index() and av_tindex. All three of these return the number of the highest index in the array, not the number of elements it contains.

    誤解される名前である av_len() の同義語が作成されました: av_top_index()av_tindex。 これら三つ全ては、含んでいる要素の数ではなく、配列の最大のインデックスの値を 返します。

  • SvUPGRADE() is no longer an expression. Originally this macro (and its underlying function, sv_upgrade()) were documented as boolean, although in reality they always croaked on error and never returned false. In 2005 the documentation was updated to specify a void return value, but SvUPGRADE() was left always returning 1 for backwards compatibility. This has now been removed, and SvUPGRADE() is now a statement with no return value.

    SvUPGRADE() もはや式ではありません。 元々このマクロ (および基礎となる関数 sv_upgrade()) は真偽値を返すと 文書化されていましたが、実際にはエラー時には常に croak し、偽の値を 返すことはありませんでした。 2005 年に、返り値は void であるというように文書が更新されましたが、 SvUPGRADE() は後方互換性のために常に 1 を返すままで残されました。 これは削除され、SvUPGRADE() は値を返さない文になりました。

    So this is now a syntax error:

    従ってこれは文法エラーになりました:

        if (!SvUPGRADE(sv)) { croak(...); }

    If you have code like that, simply replace it with

    このようなコードがあるなら、単に以下のもので置き換えるか

        SvUPGRADE(sv);

    or to avoid compiler warnings with older perls, possibly

    あるいは古い perl でのコンパイラ警告を避けるために、以下のようにしてください

        (void)SvUPGRADE(sv);
  • Perl has a new copy-on-write mechanism that allows any SvPOK scalar to be upgraded to a copy-on-write scalar. A reference count on the string buffer is stored in the string buffer itself. This feature is not enabled by default.

    Perl は、任意の SvPOK スカラをコピーオンライトスカラに昇格できる新しい コピーオンライト機構を持ちます。 文字列バッファの参照カウントは文字列バッファ自身に保管されます。 この機能は デフォルトでは有効になりません

    It can be enabled in a perl build by running Configure with -Accflags=-DPERL_NEW_COPY_ON_WRITE, and we would encourage XS authors to try their code with such an enabled perl, and provide feedback. Unfortunately, there is not yet a good guide to updating XS code to cope with COW. Until such a document is available, consult the perl5-porters mailing list.

    これは -Accflags=-DPERL_NEW_COPY_ON_WRITE 付きで Configure を実行した perl ビルドで有効にでき、私たちは XS 作者がこのように有効になった perl でコードを試して、フィードバックを提供するように勧めます。 残念ながら、COW に対応するように XS コードを更新するためのよいガイドは まだありません。 そのような文書が利用可能になるまで、perl5-porters メーリングリストに 相談してください。

    It breaks a few XS modules by allowing copy-on-write scalars to go through code paths that never encountered them before.

    これは、コピーオンライトスカラが以前は決して遭遇しなかったコードパスを 通ることを許すので、いくつかの XS モジュールを壊します。

  • Copy-on-write no longer uses the SvFAKE and SvREADONLY flags. Hence, SvREADONLY indicates a true read-only SV.

    コピーオンライトはもはや SvFAKE と SvREADONLY のフラグを使いません。 従って、SvREADONLY は本当の読み込み専用 SV を示します。

    Use the SvIsCOW macro (as before) to identify a copy-on-write scalar.

    コピーオンライトスカラを識別するには(今まで通り) SvIsCOW マクロを 使ってください。

  • PL_glob_index is gone.

    PL_glob_index はなくなりました。

  • The private Perl_croak_no_modify has had its context parameter removed. It is now has a void prototype. Users of the public API croak_no_modify remain unaffected.

    プライベートな Perl_croak_no_modify のコンテキスト引数は削除されました。 これは void プロトタイプに二なりました。 公式 API croak_no_modify のユーザーは影響を受けません。

  • Copy-on-write (shared hash key) scalars are no longer marked read-only. SvREADONLY returns false on such an SV, but SvIsCOW still returns true.

    コピーオンライト (共有ハッシュキー) スカラはもはや読み込み専用として マークされなくなりました。 SvREADONLY はそのような SV に対しては偽を返しますが、SvIsCOW は真を 返すままです。

  • A new op type, OP_PADRANGE has been introduced. The perl peephole optimiser will, where possible, substitute a single padrange op for a pushmark followed by one or more pad ops, and possibly also skipping list and nextstate ops. In addition, the op can carry out the tasks associated with the RHS of a my(...) = @_ assignment, so those ops may be optimised away too.

    新しい op 型 OP_PADRANGE が導入されました。 perl の覗き穴最適化器は、可能なら、pushmark に引き続く一つ以上の pad op を 単一の padrange に置き換え、また可能ならリストと nextstate op を飛ばします。 さらに、この op は my(...) = @_ の RHS に関連する作業も実行できるので、 これらの op も最適化されて消えます。

  • Case-insensitive matching inside a [bracketed] character class with a multi-character fold no longer excludes one of the possibilities in the circumstances that it used to. [perl #89774].

    複数文字畳み込みのある [大かっこ] 文字クラスの内側の大文字小文字を無視した マッチングは、以前の状況での可能性の一つをもはや除かなくなりました。 [perl #89774]。

  • PL_formfeed has been removed.

    PL_formfeed は削除されました。

  • The regular expression engine no longer reads one byte past the end of the target string. While for all internally well-formed scalars this should never have been a problem, this change facilitates clever tricks with string buffers in CPAN modules. [perl #73542]

    正規表現エンジンはもはやターゲット文字列の末尾から 1 バイト過ぎて 読み込まなくなりました。 内部で整形された全てのスカラに関しては決して問題にならないはずですが、この 変更は CPAN モジュールの文字列バッファに対する賢い小技を容易にします。 [perl #73542]

  • Inside a BEGIN block, PL_compcv now points to the currently-compiling subroutine, rather than the BEGIN block itself.

    BEGIN ブロックの内側で、PL_compcv は BEGIN ブロック自身ではなく現在 コンパイルしているサブルーチンを示すようになりました。

  • mg_length has been deprecated.

    mg_length は廃止予定になりました。

  • sv_len now always returns a byte count and sv_len_utf8 a character count. Previously, sv_len and sv_len_utf8 were both buggy and would sometimes returns bytes and sometimes characters. sv_len_utf8 no longer assumes that its argument is in UTF-8. Neither of these creates UTF-8 caches for tied or overloaded values or for non-PVs any more.

    sv_len は常にバイトカウントを、sv_len_utf8 は文字カウントを 返すようになりました。 以前は、sv_lensv_len_utf8 は両方ともバグ持ちで、時々バイトを返し、 時々文字を返していました。 sv_len_utf8 はもはや引数が UTF-8 であると仮定しません。 どちらももはや tie されたり オーバーロードされたりした値や 非 PV のために UTF-8 キャッシュを作成しなくなりました。

  • sv_mortalcopy now copies string buffers of shared hash key scalars when called from XS modules [perl #79824].

    sv_mortalcopy は、XS モジュールから呼び出されたときに、共有ハッシュキー スカラの文字列バッファをコピーするようになりました [perl #79824]。

  • RXf_SPLIT and RXf_SKIPWHITE are no longer used. They are now #defined as 0.

    RXf_SPLITRXf_SKIPWHITE はもはや使われません。 これらは 0 に #define されるようになりました。

  • The new RXf_MODIFIES_VARS flag can be set by custom regular expression engines to indicate that the execution of the regular expression may cause variables to be modified. This lets s/// know to skip certain optimisations. Perl's own regular expression engine sets this flag for the special backtracking verbs that set $REGMARK and $REGERROR.

    新しい RXf_MODIFIES_VARS フラグは、正規表現の実行によって変数の変更が 起きたかも知れないことを示すためにカスタム正規表現エンジンによって 設定されます。 これによって s/// がいくつかの最適化を飛ばせるようになります。 Perl 自身の正規表現エンジンは、$REGMARK と $REGERROR を設定する特殊な バックトラック動詞のためにこのフラグを設定します。

  • The APIs for accessing lexical pads have changed considerably.

    レキシカルパッドにアクセスするための API はかなり変更されました。

    PADLISTs are now longer AVs, but their own type instead. PADLISTs now contain a PAD and a PADNAMELIST of PADNAMEs, rather than AVs for the pad and the list of pad names. PADs, PADNAMELISTs, and PADNAMEs are to be accessed as such through the newly added pad API instead of the plain AV and SV APIs. See perlapi for details.

    PADLIST はもはや AV ではなく、独自の型になりました。 PADLIST はパッドおよびパッド名のリストのための AV ではなく、 PADNAMEPADPADNAMELIST を含むようになりました。 PAD, PADNAMELIST, PADNAME は当然ながら、普通の AV および SV の API ではなく、新しく追加されたパッド API 経由でアクセスできます。 詳しくは perlapi を参照してください。

  • In the regex API, the numbered capture callbacks are passed an index indicating what match variable is being accessed. There are special index values for the $`, $&, $& variables. Previously the same three values were used to retrieve ${^PREMATCH}, ${^MATCH}, ${^POSTMATCH} too, but these have now been assigned three separate values. See "Numbered capture callbacks" in perlreapi.

    正規表現 API で、番号付き捕捉コールバックは、どのマッチング変数が アクセスされたかを示すインデックスを渡されます。 $`, $&, $& 変数のための特殊インデックス値があります。 以前は、${^PREMATCH}, ${^MATCH}, ${^POSTMATCH} を取得するのに同じ三つの 値が使われていましたが、しかしこれらは三つの別々の値が 代入されるようになりました。 "Numbered capture callbacks" in perlreapi を参照してください。

  • PL_sawampersand was previously a boolean indicating that any of $`, $&, $& had been seen; it now contains three one-bit flags indicating the presence of each of the variables individually.

    PL_sawampersand は、以前は $`, $&, $& のいずれかが現れたかどうかを 示す真偽値でした; それぞれの変数の存在を別々に示す 1 ビットのフラグを三つ 含むようになりました。

  • The CV * typemap entry now supports &{} overloading and typeglobs, just like &{...} [perl #96872].

    CV * typemap エントリは、ちょうど &{...} と同様に &{} オーバーロードと型グロブに対応するようになりました [perl #96872]。

  • The SVf_AMAGIC flag to indicate overloading is now on the stash, not the object. It is now set automatically whenever a method or @ISA changes, so its meaning has changed, too. It now means "potentially overloaded". When the overload table is calculated, the flag is automatically turned off if there is no overloading, so there should be no noticeable slowdown.

    オーバーロードを示すための SVf_AMAGIC フラグはオブジェクトではなく スタッシュ置かれるようになりました。 これはメソッドや @ISA が変更されると自動的に設定されるようになったので、 意味も変わりました。 これは「オーバーロードされる可能性がある」ことを意味するようになりました。 オーバーロードテーブルが計算されるとき、このフラグはオーバーロードがなければ 自動的にオフになるので、目立つほどの速度低下はないはずです。

    The staleness of the overload tables is now checked when overload methods are invoked, rather than during bless.

    オーバーロードテーブルの鮮度は、bless の間ではなくオーバーロード メソッドが起動されたときにチェックされるようになりました。

    "A" magic is gone. The changes to the handling of the SVf_AMAGIC flag eliminate the need for it.

    "A" マジックはなくなりました。 SVf_AMAGIC フラグの扱いの変更によってこれの必要がなくなりました。

    PL_amagic_generation has been removed as no longer necessary. For XS modules, it is now a macro alias to PL_na.

    PL_amagic_generation はもはや不要となったので削除されました。 XS モジュールについては、PL_na へのマクロ別名となりました。

    The fallback overload setting is now stored in a stash entry separate from overloadedness itself.

    フォールバックオーバーロード設定はオーバーロード自体とは分離されたスタッシュ エントリに保管されるようになりました。

  • The character-processing code has been cleaned up in places. The changes should be operationally invisible.

    文字プロセスコードはあちこちで整理されました。 変更は操作上は不可視のはずです。

  • The study function was made a no-op in v5.16. It was simply disabled via a return statement; the code was left in place. Now the code supporting what study used to do has been removed.

    study 関数は v5.16 から何もしないものになりました。 これは単に return 文を使って無効にされていました; コードはその場に 残されていました。 study がしていたことに対応するコードは削除されました。

  • Under threaded perls, there is no longer a separate PV allocated for every COP to store its package name (cop->stashpv). Instead, there is an offset (cop->stashoff) into the new PL_stashpad array, which holds stash pointers.

    スレッド対応 perl では、パッケージ名を保管するために (cop->stashpv) もはや COP 毎に別々の PV を割り当てなくなりました。 代わりに、スタッシュポインタを保持している新しい PL_stashpad 配列への オフセット (cop->stashoff) があります。

  • In the pluggable regex API, the regexp_engine struct has acquired a new field op_comp, which is currently just for perl's internal use, and should be initialized to NULL by other regex plugin modules.

    プラグ可能な正規表現 API で、regexp_engine 構造体は新しいフィールド op_comp を持つようになりました; これは今のところ単に perl の内部 使用のためのもので、他の正規表現プラグインモジュールによって NULL に 初期化されるべきです。

  • A new function alloccopstash has been added to the API, but is considered experimental. See perlapi.

    新しい関数 alloccopstash が API に追加されましたが、実験的と 考えられています。 perlapi を参照してください。

  • Perl used to implement get magic in a way that would sometimes hide bugs in code that could call mg_get() too many times on magical values. This hiding of errors no longer occurs, so long-standing bugs may become visible now. If you see magic-related errors in XS code, check to make sure it, together with the Perl API functions it uses, calls mg_get() only once on SvGMAGICAL() values.

    Perl は、マジカルな値に mg_get() を多すぎる回数呼び出すことがあるコードでの バグを隠すことがある方法で get magic を実装していました。 このエラーの隠蔽はもはや起こらないので、長年のバグが目に見えるように なりました。 XS コードにマジック関連のエラーが出た場合、使っている Perl API 関数と共に、 SvGMAGICAL() 値に対して一度だけ mg_get() を呼び出しているかを チェックしてください。

  • OP allocation for CVs now uses a slab allocator. This simplifies memory management for OPs allocated to a CV, so cleaning up after a compilation error is simpler and safer [perl #111462][perl #112312].

    CV の OP 割り当てにスラブアロケータを使うようになりました。 これは OP を CV に割り当てるためのメモリ管理を単純化するので、コンパイル エラーの後の掃除がより単純にかつ安全になりました [perl #111462][perl #112312]。

  • PERL_DEBUG_READONLY_OPS has been rewritten to work with the new slab allocator, allowing it to catch more violations than before.

    PERL_DEBUG_READONLY_OPS は新しいスラブアロケータで動作するように 書き直され、以前よりも多くの違反を捕捉するようになりました。

  • The old slab allocator for ops, which was only enabled for PERL_IMPLICIT_SYS and PERL_DEBUG_READONLY_OPS, has been retired.

    PERL_IMPLICIT_SYSPERL_DEBUG_READONLY_OPS のためだけに 有効化されていた op のための古いスラブアロケータは引退しました。

バグ修正の抜粋

  • Here document terminators no longer require a terminating newline character when they occur at the end of a file. This was already the case at the end of a string eval [perl #65838].

    ヒヤドキュメント終端子は、それがファイル末尾に現れるときにはもはや改行文字で 終端される必要がなくなりました。 これは既に文字列 eval の末尾では行われていました [perl #65838]。

  • -DPERL_GLOBAL_STRUCT builds now free the global struct after they've finished using it.

    -DPERL_GLOBAL_STRUCT ビルドは、グローバル構造体を、使い終わった 後に 解放するようになりました。

  • A trailing '/' on a path in @INC will no longer have an additional '/' appended.

    @INC のパスの末尾の '/' でもはや '/' を追加しなくなりました。

  • The :crlf layer now works when unread data doesn't fit into its own buffer. [perl #112244].

    :crlf 層は、未読み込みデータが自身のバッファに収まらない場合でも 動作するようになりました。 [perl #112244]。

  • ungetc() now handles UTF-8 encoded data. [perl #116322].

    ungetc() は UTF-8 エンコードされたデータを扱うようになりました。 [perl #116322]。

  • A bug in the core typemap caused any C types that map to the T_BOOL core typemap entry to not be set, updated, or modified when the T_BOOL variable was used in an OUTPUT: section with an exception for RETVAL. T_BOOL in an INPUT: section was not affected. Using a T_BOOL return type for an XSUB (RETVAL) was not affected. A side effect of fixing this bug is, if a T_BOOL is specified in the OUTPUT: section (which previous did nothing to the SV), and a read only SV (literal) is passed to the XSUB, croaks like "Modification of a read-only value attempted" will happen. [perl #115796]

    コア typemap のバグにより、T_BOOL コア typemap エントリにマッピングされている C 型は、T_BOOL 変数が RETVAL 以外の OUTPUT: 節で使われていると設定、 更新、修正されなくなっていました。 INPUT: 節の T_BOOL には影響していませんでした。 XSUB (RETVAL) に T_BOOL 返り値型を使うことには影響していませんでした。 このバグを修正した副作用は、T_BOOL は OUTPUT: 節に指定されていて(これは以前は SV に対して何もしていませんでした)、読み込み専用 SV (リテラル) が XSUB に渡された場合、"Modification of a read-only value attempted" のような croak が起こります。 [perl #115796]

  • On many platforms, providing a directory name as the script name caused perl to do nothing and report success. It should now universally report an error and exit nonzero. [perl #61362]

    多くのプラットフォームで、スクリプト名としてディレクトリ名を指定すると perl は何もせずに成功を報告していました。 これは一般的にエラーを報告して非ゼロを返すようになりました。 [perl #61362]

  • sort {undef} ... under fatal warnings no longer crashes. It had begun crashing in Perl v5.16.

    致命的警告の元での sort {undef} ... はもはやクラッシュしません。 Perl v5.16 からクラッシュし始めていました。

  • Stashes blessed into each other (bless \%Foo::, 'Bar'; bless \%Bar::, 'Foo') no longer result in double frees. This bug started happening in Perl v5.16.

    互いに bless されたスタッシュ (bless \%Foo::, 'Bar'; bless \%Bar::, 'Foo') はもはや二重解放にならなくなりました。 このバグはたまたま Perl v5.16 から発生していました。

  • Numerous memory leaks have been fixed, mostly involving fatal warnings and syntax errors.

    多くのメモリリークが修正されました; ほとんどは致命的警告と文法エラーに 関するものです。

  • Some failed regular expression matches such as 'f' =~ /../g were not resetting pos. Also, "match-once" patterns (m?...?g) failed to reset it, too, when invoked a second time [perl #23180].

    'f' =~ /../g のようなある種の失敗した正規表現マッチングは pos を リセットしていませんでした。 また、「一度だけマッチング」パターン (m?...?g) も、二回目に 起動されたときにこれのリセットに失敗していました [perl #23180]。

  • Several bugs involving local *ISA and local *Foo:: causing stale MRO caches have been fixed.

    local *ISAlocal *Foo:: によって MRO キャッシュが古くなることによる いくつかのバグが修正されました。

  • Defining a subroutine when its typeglob has been aliased no longer results in stale method caches. This bug was introduced in Perl v5.10.

    型グロブが別名化されているときにサブルーチンを定義してももはやメソッド キャッシュは古くならなくなりました。 このバグは Perl v5.10 で発生していました。

  • Localising a typeglob containing a subroutine when the typeglob's package has been deleted from its parent stash no longer produces an error. This bug was introduced in Perl v5.14.

    型グロブのパッケージが親スタッシュから削除されているときにサブルーチンを含む 型グロブをローカル化してももはやエラーを出力しなくなりました。 このバグは Perl v5.14 で発生していました。

  • Under some circumstances, local *method=... would fail to reset method caches upon scope exit.

    ある種の状況で、local *method=... によってスコープ終了時に メソッドキャッシュのリセットに失敗していました。

  • /[.foo.]/ is no longer an error, but produces a warning (as before) and is treated as /[.fo]/ [perl #115818].

    /[.foo.]/ はもはやエラーではなく、(以前通り) 警告を出力して /[.fo]/ として扱われます [perl #115818]。

  • goto $tied_var now calls FETCH before deciding what type of goto (subroutine or label) this is.

    goto $tied_var は、これがどの種類の goto か (サブルーチンかラベルか) を 決定する前に FETCH を呼び出すようになりました。

  • Renaming packages through glob assignment (*Foo:: = *Bar::; *Bar:: = *Baz::) in combination with m?...? and reset no longer makes threaded builds crash.

    m?...? および reset の組み合わせでグロブ代入によって (*Foo:: = *Bar::; *Bar:: = *Baz::) パッケージの名前を変えても、もはや スレッド付きビルドをクラッシュさせなくなりました。

  • A number of bugs related to assigning a list to hash have been fixed. Many of these involve lists with repeated keys like (1, 1, 1, 1).

    リストからハッシュへの代入に関連するいくつかのバグが修正されました。 これらの多くは (1, 1, 1, 1) のように繰り返されるキーのリストに 関連するものです。

    • The expression scalar(%h = (1, 1, 1, 1)) now returns 4, not 2.

      scalar(%h = (1, 1, 1, 1))2 ではなく 4 を返すように なりました。

    • The return value of %h = (1, 1, 1) in list context was wrong. Previously this would return (1, undef, 1), now it returns (1, undef).

      リストコンテキストでの %h = (1, 1, 1) の返り値は間違っていました。 以前は (1, undef, 1) を返していましたが、今では (1, undef) を返します。

    • Perl now issues the same warning on ($s, %h) = (1, {}) as it does for (%h) = ({}), "Reference found where even-sized list expected".

      Perl は ($s, %h) = (1, {})(%h) = ({}) と同じ "Reference found where even-sized list expected" 警告を 発生させるようになりました。

    • A number of additional edge cases in list assignment to hashes were corrected. For more details see commit 23b7025ebc.

      さらにいくつかの境界条件でのハッシュへのリスト代入が修正されました。 さらなる詳細についてはコミット 23b7025ebc を参照してください。

  • Attributes applied to lexical variables no longer leak memory. [perl #114764]

    レキシカル変数に対して属性を適用してももはやメモリリークしなくなりました。 [perl #114764]

  • dump, goto, last, next, redo or require followed by a bareword (or version) and then an infix operator is no longer a syntax error. It used to be for those infix operators (like +) that have a different meaning where a term is expected. [perl #105924]

    dump, goto, last, next, redo, require のいずれかに 裸の単語 (またはバージョン) と挿入演算子が引き続いてももはや文法エラーに ならなくなりました。 以前は (+ のような) 挿入演算子は想定されていない場所では異なる意味を 持っていました。 [perl #105924]

  • require a::b . 1 and require a::b + 1 no longer produce erroneous ambiguity warnings. [perl #107002]

    require a::b . 1require a::b + 1 はもはや間違った曖昧性警告を 生成しなくなりました。 [perl #107002]

  • Class method calls are now allowed on any string, and not just strings beginning with an alphanumeric character. [perl #105922]

    クラスメソッド呼び出しは、英数字で始まる文字列だけでなく、任意の文字列で 可能になりました。 [perl #105922]

  • An empty pattern created with qr// used in m/// no longer triggers the "empty pattern reuses last pattern" behaviour. [perl #96230]

    m/// の中で使われる、qr// で作られるからパターンは、もはや 「空パターンは直前のパターンを再利用する」という振る舞いを 引き起こさなくなりました。 [perl #96230]

  • Tying a hash during iteration no longer results in a memory leak.

    反復中にハッシュを tie してもメモリリークしなくなりました。

  • Freeing a tied hash during iteration no longer results in a memory leak.

    反復中に tie されたハッシュを解放してもメモリリークしなくなりました。

  • List assignment to a tied array or hash that dies on STORE no longer results in a memory leak.

    tie された配列やハッシュへのリスト代入で STORE 時に die しても メモリリークしなくなりました。

  • If the hint hash (%^H) is tied, compile-time scope entry (which copies the hint hash) no longer leaks memory if FETCH dies. [perl #107000]

    ヒントハッシュ (%^H) が tie された場合、FETCH が die してもコンパイル時 スコープエントリ (これはヒントハッシュをコピーします) は メモリリークしなくなりました。 [perl #107000]

  • Constant folding no longer inappropriately triggers the special split " " behaviour. [perl #94490]

    定数畳み込みはもはや不適切に特殊な split " " の振る舞いを 引き起こさなくなりました。 [perl #94490]

  • defined scalar(@array), defined do { &foo }, and similar constructs now treat the argument to defined as a simple scalar. [perl #97466]

    defined scalar(@array), defined do { &foo }, および同様の構文は、 defined への引数を単純なスカラとして扱うようになりました。 [perl #97466]

  • Running a custom debugging that defines no *DB::DB glob or provides a subroutine stub for &DB::DB no longer results in a crash, but an error instead. [perl #114990]

    *DB::DB グロブを定義していなかったり &DB::DB のためのサブルーチン スタブを提供しているカスタムデバッグで実行してももはやクラッシュせず、 代わりにエラーになりました。 [perl #114990]

  • reset "" now matches its documentation. reset only resets m?...? patterns when called with no argument. An empty string for an argument now does nothing. (It used to be treated as no argument.) [perl #97958]

    reset "" は文書と一致するようになりました。 reset は引数なしで呼び出されたとき、m?...? パターンのみを リセットします。 引数としてから文字列を指定した場合は何もしなくなりました。 (以前は引数なしとして扱われていました。) [perl #97958]

  • printf with an argument returning an empty list no longer reads past the end of the stack, resulting in erratic behaviour. [perl #77094]

    空リストを返す引数の printf はもはや、スタックの末尾を超えて読み込んで おかしな振る舞いをしなくなりました。 [perl #77094]

  • --subname no longer produces erroneous ambiguity warnings. [perl #77240]

    --subname はもはや間違った曖昧性警告を生成しなくなりました。 [perl #77240]

  • v10 is now allowed as a label or package name. This was inadvertently broken when v-strings were added in Perl v5.6. [perl #56880]

    v10 は、ラベルやパッケージ名として許されるようになりました。 これは Perl v5.6 でv-文字列が追加されたときに不注意で壊れていました。 [perl #56880]

  • length, pos, substr and sprintf could be confused by ties, overloading, references and typeglobs if the stringification of such changed the internal representation to or from UTF-8. [perl #114410]

    length, pos, substr, sprintf は、tie、オーバーロード、 リファレンス、型グロブの文字列化によって内部表現が UTF-8 との間で変更された ときに混乱することがありました。 [perl #114410]

  • utf8::encode now calls FETCH and STORE on tied variables. utf8::decode now calls STORE (it was already calling FETCH).

    utf8::encode は tie された変数で FETCH と STORE を呼び出すようになりました。 utf8::decode は STORE を呼び出すようになりました (これは FETCH は常に 呼び出していました)。

  • $tied =~ s/$non_utf8/$utf8/ no longer loops infinitely if the tied variable returns a Latin-1 string, shared hash key scalar, or reference or typeglob that stringifies as ASCII or Latin-1. This was a regression from v5.12.

    $tied =~ s/$non_utf8/$utf8/ は、tie された変数が Latin-1 文字列、 共有ハッシュキースカラ、リファレンス、あるいは ASCII または Latin-1 に 文字列化される型グロブを返すと無限ループしていましたが、もはや しなくなりました。 これは v5.12 からの退行でした。

  • s/// without /e is now better at detecting when it needs to forego certain optimisations, fixing some buggy cases:

    /e なしの s/// は、先立つある種の最適化が必要になるのがいつかの検出を よりよく行うようになり、いくつかのバグっぽい場合が修正されました:

    • Match variables in certain constructs (&&, ||, .. and others) in the replacement part; e.g., s/(.)/$l{$a||$1}/g. [perl #26986]

      置換部のある種の構文 (&&, ||, .. など) のマッチング変数; the replacement part; 例えば s/(.)/$l{$a||$1}/g。 [perl #26986]

    • Aliases to match variables in the replacement.

      置換での変数のマッチングへの別名。

    • $REGERROR or $REGMARK in the replacement. [perl #49190]

      置換での $REGERROR$REGMARK。 [perl #49190]

    • An empty pattern (s//$foo/) that causes the last-successful pattern to be used, when that pattern contains code blocks that modify the variables in the replacement.

      パターンが置換部で変数を変更するコードブロックを含むとき、最後に成功した パターンが使われることになる空パターン (s//$foo/)。

  • The taintedness of the replacement string no longer affects the taintedness of the return value of s///e.

    置換文字列の汚染性はもはや s///e の返り値の汚染性に影響しなくなりました。

  • The $| autoflush variable is created on-the-fly when needed. If this happened (e.g., if it was mentioned in a module or eval) when the currently-selected filehandle was a typeglob with an empty IO slot, it used to crash. [perl #115206]

    $| 自動フラッシュ変数は必要なときにその場で作成されます。 現在選択されているファイルハンドルが空 IO スロットの型グロブのときに これが起きる (つまりモジュールや eval で言及される) と、 クラッシュしていました。 [perl #115206]

  • Line numbers at the end of a string eval are no longer off by one. [perl #114658]

    文字列 eval の末尾の行番号はもはや一つ行き過ぎなくなりました。 [perl #114658]

  • @INC filters (subroutines returned by subroutines in @INC) that set $_ to a copy-on-write scalar no longer cause the parser to modify that string buffer in place.

    $_ にコピーオンライトスカラを設定する @INC フィルタ (@INC 内の サブルーチンによって返されるサブルーチン) はもはやパーサが文字列バッファを その場で修正しなくなりました。

  • length($object) no longer returns the undefined value if the object has string overloading that returns undef. [perl #115260]

    length($object) はオブジェクトが undef を返す文字列オーバーロードを 持っているときにもはや未定義値を返さなくなりました。 [perl #115260]

  • The use of PL_stashcache, the stash name lookup cache for method calls, has been restored,

    メソッド呼び出しのためのスタッシュ名検索キャッシュである PL_stashcache の 使用は復元されました。

    Commit da6b625f78f5f133 in August 2011 inadvertently broke the code that looks up values in PL_stashcache. As it's a only cache, quite correctly everything carried on working without it.

    2011 年 8 月の Commit da6b625f78f5f133 は PL_stashcache の値を見る コードを不注意で壊していました。 これは単にキャッシュなので、ほとんど全てはこれなしで動作していました。

  • The error "Can't localize through a reference" had disappeared in v5.16.0 when local %$ref appeared on the last line of an lvalue subroutine. This error disappeared for \local %$ref in perl v5.8.1. It has now been restored.

    "Can't localize through a reference" エラーは、local %$ref が左辺値 サブルーチンの最後の行にある場合は v5.16.0 から消えていました。 \local %$ref に対するこのエラーは perl v5.8.1 で消えていました。 これは復元されました。

  • The parsing of here-docs has been improved significantly, fixing several parsing bugs and crashes and one memory leak, and correcting wrong subsequent line numbers under certain conditions.

    ヒヤドキュメントのパースはかなり改善し、いくつかのパースのバグおよび クラッシュと一つのメモリリークが修正され、ある種の状況での間違った引き続く 行番号が修正されました。

  • Inside an eval, the error message for an unterminated here-doc no longer has a newline in the middle of it [perl #70836].

    eval の内側で、終了していないヒヤドキュメントのエラーメッセージはもはや その途中に改行を含まなくなりました [perl #70836]。

  • A substitution inside a substitution pattern (s/${s|||}//) no longer confuses the parser.

    置換パターンの内側の置換 (s/${s|||}//) はもはやパーサを 混乱させなくなりました。

  • It may be an odd place to allow comments, but s//"" # hello/e has always worked, unless there happens to be a null character before the first #. Now it works even in the presence of nulls.

    コメントを認めるにはおかしな場所かもしれませんが、最初の # の前にたまたま NUL 文字が ない限りs//"" # hello/e は常に動作していました。 これは NUL 文字があっても動作するようになりました。

  • An invalid range in tr/// or y/// no longer results in a memory leak.

    tr///y/// で不正な範囲を指定してももはや メモリリークしなくなりました。

  • String eval no longer treats a semicolon-delimited quote-like operator at the very end (eval 'q;;') as a syntax error.

    文字列 eval はもはや末尾のセミコロン区切りのクォート風演算子 (eval 'q;;') を文法エラーとして扱わなくなりました。

  • warn {$_ => 1} + 1 is no longer a syntax error. The parser used to get confused with certain list operators followed by an anonymous hash and then an infix operator that shares its form with a unary operator.

    warn {$_ => 1} + 1 はもはや文法エラーではなくなりました。 パーサはある種のリスト演算子の後に無名ハッシュ、そして単項演算子と 形式を共有している挿入演算子が引き続くと混乱していました。

  • (caller $n)[6] (which gives the text of the eval) used to return the actual parser buffer. Modifying it could result in crashes. Now it always returns a copy. The string returned no longer has "\n;" tacked on to the end. The returned text also includes here-doc bodies, which used to be omitted.

    (eval のテキストを与える) (caller $n)[6] は実際のパーサバッファを 返していました。 これを変更するとクラッシュしていました。 これは常にコピーを返すようになりました。 返された文字列はもはや末尾に "\n;" を付け加えられなくなりました。 また返されたテキストは、以前は省略されていたヒヤドキュメントの本体を 含むようになりました。

  • The UTF-8 position cache is now reset when accessing magical variables, to avoid the string buffer and the UTF-8 position cache getting out of sync [perl #114410].

    文字列バッファと UTF-8 位置キャッシュの同期がずれることを防ぐために、 マジカル変数にアクセスしたときに UTF-8 位置キャッシュを リセットするようになりました [perl #114410]。

  • Various cases of get magic being called twice for magical UTF-8 strings have been fixed.

    マジカルな UTF-8 文字列に対して二回 get magic が呼び出される様々な場合が 修正されました。

  • This code (when not in the presence of $& etc)

    このコードは ($& などが存在しない場合)

        $_ = 'x' x 1_000_000;
        1 while /(.)/;

    used to skip the buffer copy for performance reasons, but suffered from $1 etc changing if the original string changed. That's now been fixed.

    性能上の理由によりバッファのコピーを飛ばしていましたが、元の文字列が 変更された場合 $1 などが変更されるという影響がありました。 これは修正されました。

  • Perl doesn't use PerlIO anymore to report out of memory messages, as PerlIO might attempt to allocate more memory.

    Perl はメモリ不足メッセージの報告に PerlIO を使わなくなりました; PerlIO は より多いメモリを割り当てようとするかも知れないからです。

  • In a regular expression, if something is quantified with {n,m} where n > m, it can't possibly match. Previously this was a fatal error, but now is merely a warning (and that something won't match). [perl #82954].

    正規表現で、n > m となるような {n,m} で量が指定されると、 マッチングすることは不可能です。 以前はこれは致命的エラーでしたが、単なる警告になりました (そして マッチングはしません)。 [perl #82954].

  • It used to be possible for formats defined in subroutines that have subsequently been undefined and redefined to close over variables in the wrong pad (the newly-defined enclosing sub), resulting in crashes or "Bizarre copy" errors.

    引き続いて未定義化されたり再定義されたりしたサブルーチンで定義された フォーマットが、間違ったパッド(新しく定義された囲んでいるサブルーチン)の 変数を隠蔽することが可能で、クラッシュしたり "Bizarre copy" エラーが 出たりしていました。

  • Redefinition of XSUBs at run time could produce warnings with the wrong line number.

    実行時の XSUB の再定義は間違った行番号で警告を生成することがありました。

  • The %vd sprintf format does not support version objects for alpha versions. It used to output the format itself (%vd) when passed an alpha version, and also emit an "Invalid conversion in printf" warning. It no longer does, but produces the empty string in the output. It also no longer leaks memory in this case.

    sprintf フォーマット %vd はαバージョンのバージョンオブジェクトに 対応していませんでした。 αバージョンが渡されるとフォーマット自身 (%vd) が出力され、 "Invalid conversion in printf" 警告が出ていました。 これはもはや起こらず、出力としてから文字列が生成されるようになりました。 また、この場合にもはやメモリリークしなくなりました。

  • $obj->SUPER::method calls in the main package could fail if the SUPER package had already been accessed by other means.

    main パッケージでの $obj->SUPER::method 呼び出しは、SUPER パッケージが 既に他の意味でアクセスされているときに失敗することがありました。

  • Stash aliasing (*foo:: = *bar::) no longer causes SUPER calls to ignore changes to methods or @ISA or use the wrong package.

    スタッシュの別名化 (*foo:: = *bar::) によって SUPER 呼び出しが メソッドや @ISA の変更を無視したり間違ったパッケージを使ったりしていましたが、 もはやこれは起こらなくなりました。

  • Method calls on packages whose names end in ::SUPER are no longer treated as SUPER method calls, resulting in failure to find the method. Furthermore, defining subroutines in such packages no longer causes them to be found by SUPER method calls on the containing package [perl #114924].

    名前が ::SUPER で終わるパッケージでのメソッド呼び出しはもはや、 SUPER メソッド呼び出しと扱われてメソッド検索に失敗することがなくなりました。 さらに、そのようなパッケージでのサブルーチンを定義しても、もあはやそれを 含んでいるパッケージでの SUPER メソッド呼び出しによって 見つからなくなりました [perl #114924]。

  • \w now matches the code points U+200C (ZERO WIDTH NON-JOINER) and U+200D (ZERO WIDTH JOINER). \W no longer matches these. This change is because Unicode corrected their definition of what \w should match.

    \w は符号位置 U+200C (ZERO WIDTH NON-JOINER) と U+200D (ZERO WIDTH JOINER) にマッチングするようになりました。 \W はもはやこれらにはマッチングしません。 この変更は、Unicode が \w で何がマッチングするべきかの定義を 修正したからです。

  • dump LABEL no longer leaks its label.

    dump LABEL はもはやラベルをリークしなくなりました。

  • Constant folding no longer changes the behaviour of functions like stat() and truncate() that can take either filenames or handles. stat 1 ? foo : bar nows treats its argument as a file name (since it is an arbitrary expression), rather than the handle "foo".

    定数畳み込みはもはや stat()truncate() のようなファイル名と ハンドルのどちらかを取る関数の振る舞いを変更しなくなりました。 stat 1 ? foo : bar は (任意の式なので) ハンドル "foo" ではなく、引数を ファイル名として扱うようになりました。

  • truncate FOO, $len no longer falls back to treating "FOO" as a file name if the filehandle has been deleted. This was broken in Perl v5.16.0.

    truncate FOO, $len は、ファイルハンドルが既に削除されていた場合にもはや "FOO" をファイル名として扱うようにフォールバックしなくなりました。 これは Perl v5.16.0 で壊れていました。

  • Subroutine redefinitions after sub-to-glob and glob-to-glob assignments no longer cause double frees or panic messages.

    サブルーチンからグロブまたはグロブからグロブへの代入の後サブルーチンを 再定義してももはや二重解放やパニックメッセージを引き起こさなくなりました。

  • s/// now turns vstrings into plain strings when performing a substitution, even if the resulting string is the same (s/a/a/).

    s/// は、例え結果の文字列が同じ (s/a/a/) でも、置換を行うときに v-文字列から通常の文字列への変換を行うようになりました。

  • Prototype mismatch warnings no longer erroneously treat constant subs as having no prototype when they actually have "".

    プロトタイプ不一致警告は、実際にはプロトタイプが "" である定数サブルーチンを もはや間違ってプロトタイプがないものとして扱わなくなりました。

  • Constant subroutines and forward declarations no longer prevent prototype mismatch warnings from omitting the sub name.

    定数サブルーチンと前方宣言は、もはやサブルーチン名を省略することから プロトタイプ不一致警告を妨げなくなりました。

  • undef on a subroutine now clears call checkers.

    サブルーチンでの undef は呼び出しチェッカをクリアするようになりました。

  • The ref operator started leaking memory on blessed objects in Perl v5.16.0. This has been fixed [perl #114340].

    ref 演算子は Perl v5.16.0 から bless されたオブジェクトでメモリを リークさせていました。 これは修正されました [perl #114340]。

  • use no longer tries to parse its arguments as a statement, making use constant { () }; a syntax error [perl #114222].

    use はもはや引数を文としてパースしようとして use constant { () }; を 文法エラーにしなくなりました [perl #114222]。

  • On debugging builds, "uninitialized" warnings inside formats no longer cause assertion failures.

    デバッグビルドで、フォーマットの内側での "uninitialized" 警告はもはや アサーション失敗を引き起こさなくなりました。

  • On debugging builds, subroutines nested inside formats no longer cause assertion failures [perl #78550].

    デバッグビルドで、フォーマットの内側でネストしたサブルーチンはもはや アサーション失敗を引き起こさなくなりました [perl #78550]。

  • Formats and use statements are now permitted inside formats.

    フォーマットと use 文はフォーマットの内側でも使えるようになりました。

  • print $x and sub { print $x }->() now always produce the same output. It was possible for the latter to refuse to close over $x if the variable was not active; e.g., if it was defined outside a currently-running named subroutine.

    print $xsub { print $x }->() は常に同じ出力を 生成するようになりました。 後者は、変数がアクティブでない場合、つまり現在実行されている名前付き サブルーチンの外側で定義された場合、 $x を超えて閉じることを拒否することが 可能でした。

  • Similarly, print $x and print eval '$x' now produce the same output. This also allows "my $x if 0" variables to be seen in the debugger [perl #114018].

    同様に、print $xprint eval '$x' は同じ出力を生成するように なりました。 また、これによって "my $x if 0" 変数がデバッガで見えるようになります [perl #114018]。

  • Formats called recursively no longer stomp on their own lexical variables, but each recursive call has its own set of lexicals.

    再帰的に呼び出されるフォーマットはもはや自分自身のレキシカル変数を壊さず、 再帰呼び出し毎に独自のレキシカルの集合を持つようになりました。

  • Attempting to free an active format or the handle associated with it no longer results in a crash.

    アクティブなフォーマットやそれに関連づけられているハンドルを 解放しようとしてももはやクラッシュしなくなりました。

  • Format parsing no longer gets confused by braces, semicolons and low-precedence operators. It used to be possible to use braces as format delimiters (instead of = and .), but only sometimes. Semicolons and low-precedence operators in format argument lines no longer confuse the parser into ignoring the line's return value. In format argument lines, braces can now be used for anonymous hashes, instead of being treated always as do blocks.

    フォーマットのパーサはもはや中かっこ、セミコロン、優先順位の低い演算子で 混乱しなくなりました。 フォーマットの区切り文字に (=. の代わりに) 中かっこを使うことが できましたが、時々だけでした。 パーサは、もはやフォーマット引数のセミコロンおよび優先順位の低い演算子で 混乱してその行の返り値を無視しなくなりました。 フォーマット引数行では、中かっこは常に do ブロックとして 扱われるのではなく、無名ハッシュとして使われるようになりました。

  • Formats can now be nested inside code blocks in regular expressions and other quoted constructs (/(?{...})/ and qq/${...}/) [perl #114040].

    フォーマットは正規表現のコードブロックやその他のクォート構文 (/(?{...})/qq/${...}/) の内側でネスト出来るようになりました [perl #114040]。

  • Formats are no longer created after compilation errors.

    フォーマットはコンパイルエラーの後ではもはや作られなくなりました。

  • Under debugging builds, the -DA command line option started crashing in Perl v5.16.0. It has been fixed [perl #114368].

    デバッグビルドでは、-DA コマンドライン引数は Perl v5.16.0 から クラッシュしていました。 これは修正されました [perl #114368]。

  • A potential deadlock scenario involving the premature termination of a pseudo- forked child in a Windows build with ithreads enabled has been fixed. This resolves the common problem of the t/op/fork.t test hanging on Windows [perl #88840].

    iスレッド付きの Windows ビルドでの疑似 fork された子の早すぎる終了に 関連する潜在的なデッドロックシナリオは修正されました。 これは Windows で t/op/fork.t テストがハングするという一般的な問題を 解決します [perl #88840]。

  • The code which generates errors from require() could potentially read one or two bytes before the start of the filename for filenames less than three bytes long and ending /\.p?\z/. This has now been fixed. Note that it could never have happened with module names given to use() or require() anyway.

    require() からのエラーを生成するコードは、3 文字より短く /\.p?\z/ で 終わっているファイル名に対してファイル名の先頭より 1 または 2 バイト手前を 読む可能性がありました。 これは修正されました。 これはどちらにしろ use()require() で指定されたモジュール名では 決して起きていなかったことに注意してください。

  • The handling of pathnames of modules given to require() has been made thread-safe on VMS.

    require() で与えられるモジュールのパス名の扱いが VMS で スレッドセーフになりました。

  • Non-blocking sockets have been fixed on VMS.

    非ブロックソケットは VMS で修正されました。

  • Pod can now be nested in code inside a quoted construct outside of a string eval. This used to work only within string evals [perl #114040].

    Pod は文字列 eval の外側のクォートされた構文の内側の構文で ネストできるようになりました。 これは文字列 eval の内側でだけ動作していました [perl #114040]。

  • goto '' now looks for an empty label, producing the "goto must have label" error message, instead of exiting the program [perl #111794].

    goto '' はプログラムを終了させるのではなく、空ラベルを探して、 "goto must have label" エラーメッセージを生成するようになりました [perl #111794]。

  • goto "\0" now dies with "Can't find label" instead of "goto must have label".

    goto "\0" は "goto must have label" ではなく "Can't find label" で die するようになりました。

  • The C function hv_store used to result in crashes when used on %^H [perl #111000].

    C 関数 hv_store%^H に対して使われるとクラッシュしていました [perl #111000]。

  • A call checker attached to a closure prototype via cv_set_call_checker is now copied to closures cloned from it. So cv_set_call_checker now works inside an attribute handler for a closure.

    cv_set_call_checker 経由でクロージャプロトタイプに付けられた 呼び出しチェッカは、そこからクローンされたクロージャに コピーされるようになりました。 これにより、cv_set_call_checker はクロージャのための属性ハンドラの内側で 動作するようになりました。

  • Writing to $^N used to have no effect. Now it croaks with "Modification of a read-only value" by default, but that can be overridden by a custom regular expression engine, as with $1 [perl #112184].

    $^N への書き込みは何も起きていませんでした。 これはデフォルトでは "Modification of a read-only value" で croak するようになりましたが、$1 と同様カスタム正規表現エンジンで 上書きできます [perl #112184]。

  • undef on a control character glob (undef *^H) no longer emits an erroneous warning about ambiguity [perl #112456].

    制御文字グロブ に対する undef (undef *^H) はもはや曖昧性に関する 間違った警告を出力しなくなりました [perl #112456]。

  • For efficiency's sake, many operators and built-in functions return the same scalar each time. Lvalue subroutines and subroutines in the CORE:: namespace were allowing this implementation detail to leak through. print &CORE::uc("a"), &CORE::uc("b") used to print "BB". The same thing would happen with an lvalue subroutine returning the return value of uc. Now the value is copied in such cases.

    性能のために、多くの演算子と組み込み関数は毎回同じスカラを返します。 しかし、左辺値サブルーチンと CORE:: 名前空間のサブルーチンではこの実装詳細が リークを起こしていました。 print &CORE::uc("a"), &CORE::uc("b") は "BB" を表示していました。 同じことは uc の返り値を返す左辺値サブルーチンでも起きていました。 このような場合では値はコピーされるようになりました。

  • method {} syntax with an empty block or a block returning an empty list used to crash or use some random value left on the stack as its invocant. Now it produces an error.

    空ブロックや空リストを返すブロックでの method {} 文法はクラッシュしたり 呼び出し元としてスタックにランダムな値を残したりしていました。 これはエラーを生成するようになりました。

  • vec now works with extremely large offsets (>2 GB) [perl #111730].

    vec は極端に大きなオフセット (>2 GB) でも動作するようになりました [perl #111730]。

  • Changes to overload settings now take effect immediately, as do changes to inheritance that affect overloading. They used to take effect only after bless.

    オーバーロード設定の変更は直ちに効果を持つようになりました; オーバーロードに 影響する継承を変更するからです。 以前は bless の後で飲み効果を持っていました。

    Objects that were created before a class had any overloading used to remain non-overloaded even if the class gained overloading through use overload or @ISA changes, and even after bless. This has been fixed [perl #112708].

    クラスがオーバーロードを持つ前に作られたオブジェクトは、例え use overload や @ISA の変更によってクラスにオーバーロードを得たり、 bless の後でさえも、オーバーロードなしのままでした。 これは修正されました [perl #112708]。

  • Classes with overloading can now inherit fallback values.

    オーバーロードのあるクラスはフォールバック値を継承するようになりました。

  • Overloading was not respecting a fallback value of 0 if there were overloaded objects on both sides of an assignment operator like += [perl #111856].

    オーバーロードは、+= のような代入演算子の両側がオーバーロードされた オブジェクトの場合、フォールバック値 0 を考慮していませんでした [perl #111856]。

  • pos now croaks with hash and array arguments, instead of producing erroneous warnings.

    pos はハッシュや配列を引数に取ると間違った警告を生成するのではなく、 croak するようになりました。

  • while(each %h) now implies while(defined($_ = each %h)), like readline and readdir.

    while(each %h)readlinereaddir と同様、 while(defined($_ = each %h)) を暗示するようになりました。

  • Subs in the CORE:: namespace no longer crash after undef *_ when called with no argument list (&CORE::time with no parentheses).

    CORE:: 名前空間のサブルーチンは、undef *_ の後引数リストなしで 呼び出しても (かっこなしの &CORE::time) もはやクラッシュしなくなりました。

  • unpack no longer produces the "'/' must follow a numeric type in unpack" error when it is the data that are at fault [perl #60204].

    unpack は、間違ったデータのときにもはや "'/' must follow a numeric type in unpack" エラーを生成しなくなりました [perl #60204]。

  • join and "@array" now call FETCH only once on a tied $" [perl #8931].

    join"@array" は tie された $" に対して FETCH を一度だけ 呼び出すようになりました [perl #8931]。

  • Some subroutine calls generated by compiling core ops affected by a CORE::GLOBAL override had op checking performed twice. The checking is always idempotent for pure Perl code, but the double checking can matter when custom call checkers are involved.

    CORE::GLOBAL オーバーライドによって影響を受けるコア op の コンパイルによって生成された一部のサブルーチン呼び出しは op チェックを 2 回実行していました。 このチェックはピュア Perl コードでは常に冪等ですが、二重チェックは カスタム呼び出しチェッカが関わっているときは問題になるかもしれません。

  • A race condition used to exist around fork that could cause a signal sent to the parent to be handled by both parent and child. Signals are now blocked briefly around fork to prevent this from happening [perl #82580].

    親と子の両方で扱われるシグナルを親に送る異なる fork 関係の競合条件が 存在していました。 このようなことが起こるのを防ぐために、シグナルは fork の間一時的に ブロックされるようになりました [perl #82580]。

  • The implementation of code blocks in regular expressions, such as (?{}) and (??{}), has been heavily reworked to eliminate a whole slew of bugs. The main user-visible changes are:

    (?{})(??{}) のような、正規表現中のコードブロックの実装は、 大量のバグを取り除くために大きく再作業されました。 ユーザーから見える主な変更は:

    • Code blocks within patterns are now parsed in the same pass as the surrounding code; in particular it is no longer necessary to have balanced braces: this now works:

      パターンの内側のコードブロックは周りのコードと同じパスで パースされるようになりました; 特に、釣り合った中かっこはもはや 必要ではありません: 以下のものは動作するようになりました:

          /(?{  $x='{'  })/

      This means that this error message is no longer generated:

      これは、このエラーメッセージはもはや生成されないと言うことです:

          Sequence (?{...}) not terminated or not {}-balanced in regex

      but a new error may be seen:

      しかし新しいエラーが起こります:

          Sequence (?{...}) not terminated with ')'

      In addition, literal code blocks within run-time patterns are only compiled once, at perl compile-time:

      さらに、実行時パターンの内側でのリテラルなコードブロックは、perl の コンパイル時に一度だけコンパイルされます:

          for my $p (...) {
              # this 'FOO' block of code is compiled once,
              # at the same time as the surrounding 'for' loop
              /$p{(?{FOO;})/;
          }
    • Lexical variables are now sane as regards scope, recursion and closure behavior. In particular, /A(?{B})C/ behaves (from a closure viewpoint) exactly like /A/ && do { B } && /C/, while qr/A(?{B})C/ is like sub {/A/ && do { B } && /C/}. So this code now works how you might expect, creating three regexes that match 0, 1, and 2:

      レキシカル変数はスコープ、再帰、クロージャの振る舞いに関して まともになりました。 特に、/A(?{B})C/ は (クロージャからの視点では) 正確に /A/ && do { B } && /C/ と同様で、一方 qr/A(?{B})C/sub {/A/ && do { B } && /C/} と同様です。 従って以下のコードは想定しているであろう通りに動作し、0, 1, 2 に マッチングする三つの正規表現を作成します:

          for my $i (0..2) {
              push @r, qr/^(??{$i})$/;
          }
          "1" =~ $r[1]; # matches
    • The use re 'eval' pragma is now only required for code blocks defined at runtime; in particular in the following, the text of the $r pattern is still interpolated into the new pattern and recompiled, but the individual compiled code-blocks within $r are reused rather than being recompiled, and use re 'eval' isn't needed any more:

      use re 'eval' プラグマは実行時に定義されたコードブロックでのみ 要求されるようになりました; 特に以下のように、$r パターンのテキストは 新しいパターンに展開されて再コンパイルされるままですが、$r の中の コンパイルされた個々のコードブロックはコンパイルされず再利用されるようになり、 use re 'eval' はもはや必要なくなりました:

          my $r = qr/abc(?{....})def/;
          /xyz$r/;
    • Flow control operators no longer crash. Each code block runs in a new dynamic scope, so next etc. will not see any enclosing loops. return returns a value from the code block, not from any enclosing subroutine.

      フロー制御演算子はもはやクラッシュしなくなりました。 それぞれのコードブロックは新しい動的スコープで実行されるので、next などは 囲んでいるループを見ません。 return は囲んでいるサブルーチンからではなく、コードブロックからの値を 返します。

    • Perl normally caches the compilation of run-time patterns, and doesn't recompile if the pattern hasn't changed, but this is now disabled if required for the correct behavior of closures. For example:

      Perl は普通実行時パターンのコンパイルをキャッシュし、パターンが 変更されなければ再コンパイルしませんが、クロージャの正しい振る舞いのために 要求された場合無効化されるようになりました。 例えば:

          my $code = '(??{$x})';
          for my $x (1..3) {
              # recompile to see fresh value of $x each time
              $x =~ /$code/;
          }
    • The /msix and (?msix) etc. flags are now propagated into the return value from (??{}); this now works:

      /msix(?msix) などのフラグは (??{}) からの返り値に 伝搬するようになりました; 以下のものは動作するようになりました:

          "AB" =~ /a(??{'b'})/i;
    • Warnings and errors will appear to come from the surrounding code (or for run-time code blocks, from an eval) rather than from an re_eval:

      警告とエラーは re_eval からではなく周りのコード (または実行時 コードブロックの場合は eval) から起こるように見えるようになりました:

          use re 'eval'; $c = '(?{ warn "foo" })'; /$c/;
          /(?{ warn "foo" })/;

      formerly gave:

      以前は以下のようになっていました:

          foo at (re_eval 1) line 1.
          foo at (re_eval 2) line 1.

      and now gives:

      今では以下のようになります:

          foo at (eval 1) line 1.
          foo at /some/prog line 2.
  • Perl now can be recompiled to use any Unicode version. In v5.16, it worked on Unicodes 6.0 and 6.1, but there were various bugs if earlier releases were used; the older the release the more problems.

    Perl は全てのリリースの Unicode を使って再コンパイル出来るようになりました。 v5.16 では、Unicode 6.0 と 6.1 では動作していましたが、それ以前の リリースを使うと、様々なバグがありました; リリースが古いものほど多くの問題が ありました。

  • vec no longer produces "uninitialized" warnings in lvalue context [perl #9423].

    vec はもはや左辺値コンテキストで "uninitialized" 警告を 生成しなくなりました [perl #9423]。

  • An optimization involving fixed strings in regular expressions could cause a severe performance penalty in edge cases. This has been fixed [perl #76546].

    正規表現での固定文字列に関する最適化は、極端な状況で大きな性能上の ペナルティを引き起こしていました。 これは修正されました [perl #76546]。

  • In certain cases, including empty subpatterns within a regular expression (such as (?:) or (?:|)) could disable some optimizations. This has been fixed.

    ある種の状況では、((?:)(?:|) のように) 正規表現中に空部分パターンを 含んでいると一部の最適化が無効になることがありました。 これは修正されました。

  • The "Can't find an opnumber" message that prototype produces when passed a string like "CORE::nonexistent_keyword" now passes UTF-8 and embedded NULs through unchanged [perl #97478].

    "CORE::nonexistent_keyword" のような文字列が渡されたときに prototype が 生成する "Can't find an opnumber" メッセージは、UTF-8 と組み込みの NUL を 無変更で渡すようになりました。

  • prototype now treats magical variables like $1 the same way as non-magical variables when checking for the CORE:: prefix, instead of treating them as subroutine names.

    prototype は、CORE:: 前置詞をチェックするとき、$1 のようなマジカル 変数を、サブルーチン名として扱うのではなく、非マジカル変数と同じように 扱うようになりました。

  • Under threaded perls, a runtime code block in a regular expression could corrupt the package name stored in the op tree, resulting in bad reads in caller, and possibly crashes [perl #113060].

    スレッド化 perl では、正規表現内の実行時コードブロックは構文木に保管された パッケージ名を壊して、caller で間違った結果を読んだり、クラッシュする 可能性がありました [perl #113060]。

  • Referencing a closure prototype (\&{$_[1]} in an attribute handler for a closure) no longer results in a copy of the subroutine (or assertion failures on debugging builds).

    クロージャプロトタイプの参照 (クロージャのための属性ハンドラでの \&{$_[1]}) はもはやサブルーチンのコピー (またはデバッグビルドでの アサーション失敗) を引き起こさなくなりました。

  • eval '__PACKAGE__' now returns the right answer on threaded builds if the current package has been assigned over (as in *ThisPackage:: = *ThatPackage::) [perl #78742].

    eval '__PACKAGE__' は、(*ThisPackage:: = *ThatPackage:: のように) 現在のパッケージが上書きされた場合、スレッド化ビルドで正しい答えを 返すようになりました [perl #78742]。

  • If a package is deleted by code that it calls, it is possible for caller to see a stack frame belonging to that deleted package. caller could crash if the stash's memory address was reused for a scalar and a substitution was performed on the same scalar [perl #113486].

    呼び出したコードでパッケージが削除されると、caller が削除された パッケージが所有するスタックフレームを見る可能性がありました。 スタッシュのメモリアドレスがスカラに再利用され、置換が同じスカラで 実行されると、caller がクラッシュすることがありました [perl #113486]。

  • UNIVERSAL::can no longer treats its first argument differently depending on whether it is a string or number internally.

    UNIVERSAL::can は、もはや最初の引数が内部で文字列か数値かに依存して 異なった扱いをしなくなりました。

  • open with <& for the mode checks to see whether the third argument is a number, in determining whether to treat it as a file descriptor or a handle name. Magical variables like $1 were always failing the numeric check and being treated as handle names.

    モードに <& を持つ open は、ファイル記述子として扱うか ハンドル名として扱うかを決定するために、第 3 引数が数値かどうかを チェックします。 $1 のようなマジカル変数は常に数値チェックに失敗し、ハンドル名として 扱われます。

  • warn's handling of magical variables ($1, ties) has undergone several fixes. FETCH is only called once now on a tied argument or a tied $@ [perl #97480]. Tied variables returning objects that stringify as "" are no longer ignored. A tied $@ that happened to return a reference the previous time it was used is no longer ignored.

    マジカル変数 ($1, tie) の warn の扱いはいくつか修正されました。 FETCH は tie された引数や tie された $@ で一度だけ 呼び出されるようになりました [perl #97480]。 "" に文字列化されるオブジェクトを返す tie された変数はもはや 無視されなくなりました。 tie された $@ がたまたま 前回 使われたリファレンスを返しても もはや無視されなくなりました。

  • warn "" now treats $@ with a number in it the same way, regardless of whether it happened via $@=3 or $@="3". It used to ignore the former. Now it appends "\t...caught", as it has always done with $@="3".

    warn "" は、たまたま $@=3 経由か $@="3" 経由かに関わらず、 $@ を同じように数値として扱うようになりました。 以前は前者は無視していました。 常に $@="3" で行われていたように、"\t...caught" が 追加されるようになりました。

  • Numeric operators on magical variables (e.g., $1 + 1) used to use floating point operations even where integer operations were more appropriate, resulting in loss of accuracy on 64-bit platforms [perl #109542].

    マジカル変数に対する数値演算子 (例えば $1 + 1) は、整数演算が より適切な場合でも浮動小数点数演算を使っていて、64-ビットプラットフォームで 精度を失っていました [perl #109542]。

  • Unary negation no longer treats a string as a number if the string happened to be used as a number at some point. So, if $x contains the string "dogs", -$x returns "-dogs" even if $y=0+$x has happened at some point.

    単項否定は、文字列がどこかで数値として使われていても、もはや文字列を 数値として扱わなくなりました。 それで、$x に文字列 "dogs" を含んでいると、例え $y=0+$x がどこかで あっても、-$x は "-dogs" を返します。

  • In Perl v5.14, -'-10' was fixed to return "10", not "+10". But magical variables ($1, ties) were not fixed till now [perl #57706].

    Perl v5.14 で、-'-10' は "+10" ではなく "10" を返すように修正されました。 しかしマジカル変数 ($1, tie) は今まで修正されていませんでした [perl #57706]。

  • Unary negation now treats strings consistently, regardless of the internal UTF8 flag.

    単項否定は内部 UTF8 フラグに関わらず文字列を一貫性を持って 扱うようになりました。

  • A regression introduced in Perl v5.16.0 involving tr/SEARCHLIST/REPLACEMENTLIST/ has been fixed. Only the first instance is supposed to be meaningful if a character appears more than once in SEARCHLIST. Under some circumstances, the final instance was overriding all earlier ones. [perl #113584]

    Perl v5.16.0 で導入された、tr/SEARCHLIST/REPLACEMENTLIST/ に 関連する退行が修正されました。 ある文字が複数回 SEARCHLIST に現れると、最初の実体のみが 意味を持つことになっています。 ある種の状況では、最後の実体がその前のものを上書きしていました。 [perl #113584]

  • Regular expressions like qr/\87/ previously silently inserted a NUL character, thus matching as if it had been written qr/\00087/. Now it matches as if it had been written as qr/87/, with a message that the sequence "\8" is unrecognized.

    qr/\87/ のような正規表現は以前は暗黙に NUL 文字を挿入し、従って qr/\00087/ と書かれていたかのようにマッチングしていました。 これは、並び "\8" が認識出来ないというメッセージと共に、 qr/87/ と書かれていたかのようにマッチングするようになりました。

  • __SUB__ now works in special blocks (BEGIN, END, etc.).

    __SUB__ は特殊ブロック (BEGIN, END など) でも動作するように なりました。

  • Thread creation on Windows could theoretically result in a crash if done inside a BEGIN block. It still does not work properly, but it no longer crashes [perl #111610].

    Windows でのスレッド作成は、BEGIN ブロックの内側で行われると、理論的には クラッシュすることがありました。 これはまだ適切に動作しませんが、もはやクラッシュすることはなくなりました [perl #111610]。

  • \&{''} (with the empty string) now autovivifies a stub like any other sub name, and no longer produces the "Unable to create sub" error [perl #94476].

    \&{''} (with the empty string) はその他のサブルーチン名と同様にスタブを 自動有効化し、もはや "Unable to create sub" エラーを生成しなくなりました [perl #94476]。

  • A regression introduced in v5.14.0 has been fixed, in which some calls to the re module would clobber $_ [perl #113750].

    re モジュールへの一部の呼び出しが $_ を上書きするという、v5.14.0 で 導入された退行が修正されました [perl #113750]。

  • do FILE now always either sets or clears $@, even when the file can't be read. This ensures that testing $@ first (as recommended by the documentation) always returns the correct result.

    do FILE は、例えファイルが読み込めなくても、$@ を設定または クリアします。 これにより、(文書で勧められているように) 先に $@ をテストすると常に 正しい結果を返します。

  • The array iterator used for the each @array construct is now correctly reset when @array is cleared [perl #75596]. This happens, for example, when the array is globally assigned to, as in @array = (...), but not when its values are assigned to. In terms of the XS API, it means that av_clear() will now reset the iterator.

    each @array 構文で使われる配列反復子は、@array がクリアされたときに 正しくリセットされるようになりました [perl #75596]。 これは例えば @array = (...) のように配列がグローバルに代入されたときに 起き、その が代入された時には起きません。 XS API に関して、これは av_clear() は反復子をリセットするということです。

    This mirrors the behaviour of the hash iterator when the hash is cleared.

    これはハッシュがクリアされたときのハッシュ反復子の振る舞いを反映しています。

  • $class->can, $class->isa, and $class->DOES now return correct results, regardless of whether that package referred to by $class exists [perl #47113].

    $class->can, $class->isa, $class->DOES は、 $class で参照しているパッケージが存在するかどうかに関わらず、正しい結果を 返すようになりました [perl #47113]。

  • Arriving signals no longer clear $@ [perl #45173].

    シグナルが届いてももはや $@ をクリアしなくなりました [perl #45173]。

  • Allow my () declarations with an empty variable list [perl #113554].

    空変数リストの my () 宣言が許されるようになりました [perl #113554]。

  • During parsing, subs declared after errors no longer leave stubs [perl #113712].

    パース中、エラーの後に宣言されたサブルーチンはもはやスタブを 残さなくなりました [perl #113712]。

  • Closures containing no string evals no longer hang on to their containing subroutines, allowing variables closed over by outer subroutines to be freed when the outer sub is freed, even if the inner sub still exists [perl #89544].

    文字列 eval を含まないクロージャはもはや含んでいるサブルーチンでハングせず、 内側のサブルーチンがまだ存在しているにも関わらず外側のサブルーチンが 解放されたとき、解放された外側のサブルーチンによって変数が 隠蔽されなくなりました [perl #89544]。

  • Duplication of in-memory filehandles by opening with a "<&=" or ">&=" mode stopped working properly in v5.16.0. It was causing the new handle to reference a different scalar variable. This has been fixed [perl #113764].

    "<&=" または ">&=" のモードで開くことでのメモリ内ファイルハンドルの複製は、 v5.16.0 から適切に動作しなくなっていました。 これにより新しいハンドルが異なったスカラ変数を参照することになっていました。 これは修正されました [perl #113764]。

  • qr// expressions no longer crash with custom regular expression engines that do not set offs at regular expression compilation time [perl #112962].

    qr// 式は、もはや正規表現のコンパイル時に offs を設定しないカスタム 正規表現エンジンでクラッシュしなくなりました [perl #112962]。

  • delete local no longer crashes with certain magical arrays and hashes [perl #112966].

    delete local はもはやある種のマジカルな配列やハッシュで クラッシュしなくなりました [perl #112966]。

  • local on elements of certain magical arrays and hashes used not to arrange to have the element deleted on scope exit, even if the element did not exist before local.

    ある種のマジカルな配列やハッシュの要素に対する local は、例え要素が local の前に存在していなくても、スコープ終了時に要素の削除を 手配していませんでした。

  • scalar(write) no longer returns multiple items [perl #73690].

    scalar(write) はもはや複数のアイテムを返さなくなりました [perl #73690]。

  • String to floating point conversions no longer misparse certain strings under use locale [perl #109318].

    文字列から浮動小数点数への変換はもはや use locale の基である種の文字列の パースを間違わなくなりました [perl #109318]。

  • @INC filters that die no longer leak memory [perl #92252].

    die する @INC フィルタはもはやメモリリークしなくなりました [perl #92252]。

  • The implementations of overloaded operations are now called in the correct context. This allows, among other things, being able to properly override <> [perl #47119].

    オーバーロードされた演算子の実装は正しいコンテキストで呼び出されるように なりました。 これにより、特に <> を適切にオーバーライド出来るようになりました [perl #47119]。

  • Specifying only the fallback key when calling use overload now behaves properly [perl #113010].

    use overload を呼び出すときに fallback キーのみを指定されても 正しく振る舞うようになりました [perl #113010]。

  • sub foo { my $a = 0; while ($a) { ... } } and sub foo { while (0) { ... } } now return the same thing [perl #73618].

    sub foo { my $a = 0; while ($a) { ... } }sub foo { while (0) { ... } } は同じものを返すようになりました [perl #73618]。

  • String negation now behaves the same under use integer; as it does without [perl #113012].

    文字列否定は use integer; が指定されているときも指定されていないときと 同じように振る舞うようになりました [perl #113012]。

  • chr now returns the Unicode replacement character (U+FFFD) for -1, regardless of the internal representation. -1 used to wrap if the argument was tied or a string internally.

    chr は -1 に対して内部表現に関わらず Unicode 置換文字 (U+FFFD) を 返すようになりました。 引数が tie されていたり内部で文字列の場合 -1 が回り込んでいました。

  • Using a format after its enclosing sub was freed could crash as of perl v5.12.0, if the format referenced lexical variables from the outer sub.

    フォーマットが外側のサブルーチンからのレキシカル変数を参照しているときに 囲んでいるサブルーチンが解放されてから format を使うと、perl v5.12.0 以降 クラッシュしていました。

  • Using a format after its enclosing sub was undefined could crash as of perl v5.10.0, if the format referenced lexical variables from the outer sub.

    フォーマットが外側のサブルーチンからのレキシカル変数を参照しているときに 囲んでいるサブルーチンが未定義化されてから format を使うと、perl v5.10.0 以降クラッシュしていました。

  • Using a format defined inside a closure, which format references lexical variables from outside, never really worked unless the write call was directly inside the closure. In v5.10.0 it even started crashing. Now the copy of that closure nearest the top of the call stack is used to find those variables.

    外側からのレキシカル変数を参照するような、クロージャの内側で定義された format の使用は、write 呼び出しが直接クロージャの内側でない限り 実際には動作していませんでした。 v5.10.0 ではクラッシュし始めていました。 これらの変数を探すために、呼び出しスタックの先頭にもっとも近いクロージャの コピーが使われるようになりました。

  • Formats that close over variables in special blocks no longer crash if a stub exists with the same name as the special block before the special block is compiled.

    特殊ブロックがコンパイルされる前に特殊ブロックと同じ名前のスタブが 存在する場合、特殊ブロックの変数を隠すフォーマットはもはや クラッシュしなくなりました。

  • The parser no longer gets confused, treating eval foo () as a syntax error if preceded by print; [perl #16249].

    print; が前にあるとパーサが混乱して eval foo () を文法エラーとして 扱っていましたが、これはもはや起こらなくなりました [perl #16249]。

  • The return value of syscall is no longer truncated on 64-bit platforms [perl #113980].

    syscall の返り値はもはや 64-ビットプラットフォームで 切り詰められなくなりました [perl #113980]。

  • Constant folding no longer causes print 1 ? FOO : BAR to print to the FOO handle [perl #78064].

    定数畳み込みはもはや print 1 ? FOO : BAR で FOO ハンドルを 表示しなくなりました [perl #78064]。

  • do subname now calls the named subroutine and uses the file name it returns, instead of opening a file named "subname".

    do subname は、"subname" というファイルを開くのではなく、名前付き サブルーチンを呼び出してその返り値をファイル名として使うようになりました。

  • Subroutines looked up by rv2cv check hooks (registered by XS modules) are now taken into consideration when determining whether foo bar should be the sub call foo(bar) or the method call "bar"->foo.

    (XS モジュールによって登録される) rv2cv チェックフックによる サブルーチン検索は、foo bar がサブルーチン呼び出し foo(bar) か メソッド呼び出し "bar"->foo かをいつ決定するかを考慮に 入れるようになりました。

  • CORE::foo::bar is no longer treated specially, allowing global overrides to be called directly via CORE::GLOBAL::uc(...) [perl #113016].

    CORE::foo::bar はもはや特別に扱われなくなり、 CORE::GLOBAL::uc(...) 経由で直接呼び出せるグローバルなオーバーライドが 可能になりました [perl #113016]。

  • Calling an undefined sub whose typeglob has been undefined now produces the customary "Undefined subroutine called" error, instead of "Not a CODE reference".

    型グロブが未定義である、未定義サブルーチンを呼び出すと、 "Not a CODE reference" ではなく、通常の "Undefined subroutine called" エラーが生成されるようになりました。

  • Two bugs involving @ISA have been fixed. *ISA = *glob_without_array and undef *ISA; @{*ISA} would prevent future modifications to @ISA from updating the internal caches used to look up methods. The *glob_without_array case was a regression from Perl v5.12.

    @ISA に関連する二つのバグが修正されました。 *ISA = *glob_without_arrayundef *ISA; @{*ISA} は、@ISA の将来の 変更が、メソッド検索に使われる内部キャッシュを更新することを妨げていました。 *glob_without_array の場合は Perl v5.12 からの退行でした。

  • Regular expression optimisations sometimes caused $ with /m to produce failed or incorrect matches [perl #114068].

    正規表現最適化によって /m 付きの $ がマッチングに失敗したり間違ったり していました [perl #114068]。

  • __SUB__ now works in a sort block when the enclosing subroutine is predeclared with sub foo; syntax [perl #113710].

    __SUB__sort ブロックで、内側のサブルーチンが sub foo; 文法で 先行宣言されているときに動作するようになりました [perl #113710]。

  • Unicode properties only apply to Unicode code points, which leads to some subtleties when regular expressions are matched against above-Unicode code points. There is a warning generated to draw your attention to this. However, this warning was being generated inappropriately in some cases, such as when a program was being parsed. Non-Unicode matches such as \w and [:word:] should not generate the warning, as their definitions don't limit them to apply to only Unicode code points. Now the message is only generated when matching against \p{} and \P{}. There remains a bug, [perl #114148], for the very few properties in Unicode that match just a single code point. The warning is not generated if they are matched against an above-Unicode code point.

    Unicode 特性は Unicode 符号位置にのみ適用されるため、正規表現が 上位 Unicode 符号位置に対してマッチングするときに微妙なことが起こります。 これに注意を向けるために生成される警告があります。 しかしこの警告は、プログラムがパースされたときのような一部の場合に 不適切に生成されていました。 \w[:word:] のような非 Unicode マッチングは、定義上 Unicode 符号位置にだけ適用するように制限されていないので、この警告を 生成するべきではありません。 このメッセージは \p{} および \P{} に対してマッチングするときにのみ 生成されるようになりました。 単に単一の符号位置にマッチングする Unicode のごく僅かな特性に関する [perl #114148] バグが残っています。 上述の Unicode 符号位置に対してマッチングする場合は警告は生成されません。

  • Uninitialized warnings mentioning hash elements would only mention the element name if it was not in the first bucket of the hash, due to an off-by-one error.

    ハッシュ要素に言及する未初期化警告は、ハッシュの最初のバケツ以外だった場合、 off-by-one エラーによって、要素名だけに言及していました。

  • A regular expression optimizer bug could cause multiline "^" to behave incorrectly in the presence of line breaks, such that "/\n\n" =~ m#\A(?:^/$)#im would not match [perl #115242].

    正規表現最適化器のバグにより、複数行 "^" が改行の存在を正しく扱えず、 "/\n\n" =~ m#\A(?:^/$)#im のようなものががマッチングしないことが ありました [perl #115242]。

  • Failed fork in list context no longer corrupts the stack. @a = (1, 2, fork, 3) used to gobble up the 2 and assign (1, undef, 3) if the fork call failed.

    リストコンテキストで fork が失敗してももはやスタックが壊れなくなりました。 @a = (1, 2, fork, 3) は、fork が失敗すると 2 を食べてしまって (1, undef, 3) を代入していました。

  • Numerous memory leaks have been fixed, mostly involving tied variables that die, regular expression character classes and code blocks, and syntax errors.

    様々なメモリリークが修正されました; ほとんどは die した tie 変数、 正規表現文字クラスとコードブロック、文法エラーに関するものです。

  • Assigning a regular expression (${qr//}) to a variable that happens to hold a floating point number no longer causes assertion failures on debugging builds.

    正規表現 (${qr//}) を、たまたま浮動小数点数を保持していた変数に 代入しても、もはやデバッグビルドでアサーション失敗を 引き起こさなくなりました。

  • Assigning a regular expression to a scalar containing a number no longer causes subsequent numification to produce random numbers.

    数値を保持していたスカラに正規表現を代入しても、もはや引き続く数値化が ランダムな数値を生成しなくなりました。

  • Assigning a regular expression to a magic variable no longer wipes away the magic. This was a regression from v5.10.

    正規表現のマジカル変数への代入はもはやマジックを削除しなくなりました。 これは v5.10 からの退行でした。

  • Assigning a regular expression to a blessed scalar no longer results in crashes. This was also a regression from v5.10.

    正規表現の bless された変数への代入はもはやクラッシュしなくなりました。 これも v5.10 からの退行でした。

  • Regular expression can now be assigned to tied hash and array elements with flattening into strings.

    正規表現は、文字列に平坦化されて tie されたハッシュや配列に 代入できるようになりました。

  • Numifying a regular expression no longer results in an uninitialized warning.

    正規表現の数値化はもはや非初期化警告を出さなくなりました。

  • Negative array indices no longer cause EXISTS methods of tied variables to be ignored. This was a regression from v5.12.

    tie された変数に対する負数の配列インデックスはもはや EXISTS メソッドを 無視しなくなりました。 これは v5.12 からの退行でした。

  • Negative array indices no longer result in crashes on arrays tied to non-objects.

    非オブジェクトに tie された配列に対する負数の配列インデックスはもはや クラッシュしなくなりました。

  • $byte_overload .= $utf8 no longer results in doubly-encoded UTF-8 if the left-hand scalar happened to have produced a UTF-8 string the last time overloading was invoked.

    $byte_overload .= $utf8 は、左側のスカラがたまたま最後にオーバーロードが 起動されたときに UTF-8 文字列を生成していたときにも、もはや二重に UTF-8 に エンコードされなくなりました。

  • goto &sub now uses the current value of @_, instead of using the array the subroutine was originally called with. This means local @_ = (...); goto &sub now works [perl #43077].

    goto &sub は、サブルーチンがもともと呼ばれたときのものではなく、現在の 値の @_ を使うようになりました。 これは、local @_ = (...); goto &sub が動作するようになったということです [perl #43077]。

  • If a debugger is invoked recursively, it no longer stomps on its own lexical variables. Formerly under recursion all calls would share the same set of lexical variables [perl #115742].

    デバッガが再帰的に起動されたとき、もはや自分自身のレキシカル変数を 踏みつけなくなりました。 以前は再帰したときには全ての呼び出しは同じレキシカル変数の集合を 共有していました [perl #115742]。

  • *_{ARRAY} returned from a subroutine no longer spontaneously becomes empty.

    サブルーチンから返された *_{ARRAY} はもはや自然に空にならなくなりました。

既知の問題

  • UTF8-flagged strings in %ENV on HP-UX 11.00 are buggy

    HP-UX 11.00 での %ENV 内の UTF8 フラグがついた文字列はバグがある

    The interaction of UTF8-flagged strings and %ENV on HP-UX 11.00 is currently dodgy in some not-yet-fully-diagnosed way. Expect test failures in t/op/magic.t, followed by unknown behavior when storing wide characters in the environment.

    HP-UX 11.00 での UTF8 フラグ付きの文字列と %ENV の相互作用は現在の所 まだ完全に診断されていない形の危険があります。 t/op/magic.t での想定されているテスト失敗に引き続いて、環境にワイド文字を 保管すると明らかでない振る舞いがあります。

お悔やみ

Hojung Yoon (AMORETTE), 24, of Seoul, South Korea, went to his long rest on May 8, 2013 with llama figurine and autographed TIMTOADY card. He was a brilliant young Perl 5 & 6 hacker and a devoted member of Seoul.pm. He programmed Perl, talked Perl, ate Perl, and loved Perl. We believe that he is still programming in Perl with his broken IBM laptop somewhere. He will be missed.

韓国ソウルの 24 才 Hojung Yoon (AMORETTE) は、ラマの人形およびサイン入り TIMTOADY カードと共に長い眠りにつきました。 彼は素晴らしい若手 Perl 5 & 6 ハッカーであり、Seoul.pm の献身的な メンバーでした。 彼は Perl をプログラムし、Perl を話し、Perl を食べ、Perl を愛していました。 私たちは、彼が今でもどこかで彼の壊れた IBM ラップトップで Perl で プログラミングしていると信じています。 お悔やみを申し上げます。

Acknowledgements

Perl v5.18.0 represents approximately 12 months of development since Perl v5.16.0 and contains approximately 400,000 lines of changes across 2,100 files from 113 authors.

Perl v5.18.0 は、Perl v5.16.0 以降、113 人の作者によって、 2,100 のファイルに約 400,000 行の変更を加えて、 約 12 months開発されてきました。

Perl continues to flourish into its third decade thanks to a vibrant community of users and developers. The following people are known to have contributed the improvements that became Perl v5.18.0:

Perl は、活気のあるユーザーと開発者のコミュニティのおかげで 20 年を超えて 繁栄しています。 以下の人々が、Perl v5.18.0 になるための改良に貢献したことが分かっています:

Aaron Crane, Aaron Trevena, Abhijit Menon-Sen, Adrian M. Enache, Alan Haggai Alavi, Alexandr Ciornii, Andrew Tam, Andy Dougherty, Anton Nikishaev, Aristotle Pagaltzis, Augustina Blair, Bob Ernst, Brad Gilbert, Breno G. de Oliveira, Brian Carlson, Brian Fraser, Charlie Gonzalez, Chip Salzenberg, Chris 'BinGOs' Williams, Christian Hansen, Colin Kuskie, Craig A. Berry, Dagfinn Ilmari Mannsåker, Daniel Dragan, Daniel Perrett, Darin McBride, Dave Rolsky, David Golden, David Leadbeater, David Mitchell, David Nicol, Dominic Hargreaves, E. Choroba, Eric Brine, Evan Miller, Father Chrysostomos, Florian Ragwitz, François Perrad, George Greer, Goro Fuji, H.Merijn Brand, Herbert Breunung, Hugo van der Sanden, Igor Zaytsev, James E Keenan, Jan Dubois, Jasmine Ahuja, Jerry D. Hedden, Jess Robinson, Jesse Luehrs, Joaquin Ferrero, Joel Berger, John Goodyear, John Peacock, Karen Etheridge, Karl Williamson, Karthik Rajagopalan, Kent Fredric, Leon Timmermans, Lucas Holt, Lukas Mai, Marcus Holland-Moritz, Markus Jansen, Martin Hasch, Matthew Horsfall, Max Maischein, Michael G Schwern, Michael Schroeder, Moritz Lenz, Nicholas Clark, Niko Tyni, Oleg Nesterov, Patrik Hägglund, Paul Green, Paul Johnson, Paul Marquess, Peter Martini, Rafael Garcia-Suarez, Reini Urban, Renee Baecker, Rhesa Rozendaal, Ricardo Signes, Robin Barker, Ronald J. Kimball, Ruslan Zakirov, Salvador Fandiño, Sawyer X, Scott Lanning, Sergey Alekseev, Shawn M Moore, Shirakata Kentaro, Shlomi Fish, Sisyphus, Smylers, Steffen Müller, Steve Hay, Steve Peters, Steven Schubiger, Sullivan Beck, Sven Strickroth, Sébastien Aperghis-Tramoni, Thomas Sibley, Tobias Leich, Tom Wyant, Tony Cook, Vadim Konovalov, Vincent Pit, Volker Schatz, Walt Mankowski, Yves Orton, Zefram.

The list above is almost certainly incomplete as it is automatically generated from version control history. In particular, it does not include the names of the (very much appreciated) contributors who reported issues to the Perl bug tracker.

これはバージョンコントロール履歴から自動的に生成しているので、ほぼ確実に 不完全です。 特に、Perl バグトラッカーに問題を報告をしてくれた (とてもありがたい)貢献者の 名前を含んでいません。

Many of the changes included in this version originated in the CPAN modules included in Perl's core. We're grateful to the entire CPAN community for helping Perl to flourish.

このバージョンに含まれている変更の多くは、Perl コアに含まれている CPAN モジュール由来のものです。 私たちは Perl の発展を助けている CPAN コミュニティ全体に感謝します。

For a more complete list of all of Perl's historical contributors, please see the AUTHORS file in the Perl source distribution.

全ての Perl の歴史的な貢献者のより完全な一覧については、どうか Perl ソース 配布に含まれている AUTHORS を参照してください。

バグ報告

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 will 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 コアのセキュリティ問題だけに使ってください。

SEE ALSO

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

変更点の完全な詳細を見る方法については Changes ファイル。

The INSTALL file for how to build Perl.

Perl のビルド方法については INSTALL ファイル。

The README file for general stuff.

一般的なことについては README ファイル。

The Artistic and Copying files for copyright information.

著作権情報については Artistic 及び Copying ファイル。