これは、Ubuntu Online、Fedora Online、Windowsオンラインエミュレーター、MACOSオンラインエミュレーターなどの複数の無料オンラインワークステーションの5220つを使用してOnWorks無料ホスティングプロバイダーで実行できるコマンドperlXNUMXdeltaです。
プログラム:
NAME
perl5220delta-perlv5.22.0の新機能
DESCRIPTION
このドキュメントでは、5.20.0リリースと5.22.0リリースの違いについて説明します。
5.18.0などの以前のリリースからアップグレードする場合は、最初にperl5200deltaを読んでください。
5.18.0と5.20.0の違いを説明しています。
ペース: 機能強化
New ビット単位 演算子
4つの標準ビット演算子を
("& | ^ ~") はオペランドを一貫して数値として扱い、4つの新しいドット付き演算子を導入します。
演算子(「&. |. ^. ~.」)は、オペランドを一貫して文字列として扱います。
代入バリアント ("&= |= ^= &.= |.= ^.=") に適用されます。
これを使用するには、「bitwise」機能を有効にし、「experimental::bitwise」警告を無効にします。
カテゴリ。詳細については、perlop の「ビット文字列演算子」を参照してください。[perl #123466]
。
New ダブルダイヤモンド オペレータ
「<<>>」は「<>」に似ていますが、@ARGVの各ファイルを開くために3つの引数「open」を使用します。これは、
@ARGVの各要素は実際のファイル名として扱われ、"|foo"は
パイプオープンとして扱われます。
New "\b" 境界 in レギュラー 表現
「qr/\b{gcb}/」
「gcb」はGrapheme Cluster Boundaryの略です。これは、
ネイティブには1つの文字のように見える文字列間の境界
Perlは長い間、"\X"を通じてこれらを処理する能力を持っていました。
通常のエスケープシーケンス。現在、これらを処理する別の方法があります。「\b{}」を参照してください。
詳細については、perlrebackslash の「\b、\B{}、\B」を参照してください。
「qr/\b{wb}/」
「wb」は単語境界を意味します。これは、単語間の境界を見つけるUnicodeプロパティです。
これは普通の「\b」(括弧なし)に似ていますが、
自然言語処理。例えば、アポストロフィが
単語の途中。詳細については、perlrebackslash の「\b{}、\b、\B{}、\B」を参照してください。
「qr/\b{sb}/」
「sb」は文の境界を意味します。これは、自然な文の解析を支援するためのUnicodeプロパティです。
言語文。詳細については、perlrebackslash の「\b{}、\b、\B{}、\B」を参照してください。
非キャプチャ レギュラー 表現 フラグ
正規表現は、$1、$2、$XNUMXのキャプチャと入力を無効にする「/n」フラグをサポートするようになりました。
グループ内の等:
"hello" =~ /(hi|hello)/n; # $1 は設定されていません
これは、すべてのキャプチャ グループの先頭に「?:」を置くことと同じです。
詳細については、perlre の「n」を参照してください。
"使用する re '厳しい'"
これにより、コンパイルされた正規表現パターンに、より厳密な構文規則が適用されます。
スコープ。これにより、入力ミスやその他の意図しない動作を警告できるようになります。
下位互換性の問題により、通常の正規表現でレポートすることができません。
コンパイル。この動作は将来のPerlリリースで変更される可能性があるため
経験を積むにつれて、このプラグマを使用するとカテゴリの警告が表示されます
「experimental::re_strict」。reの「strict」を参照してください。
Unicode 7.0 (with 修正) is 今 。
このリリースの内容の詳細については、
<http://www.unicode.org/versions/Unicode7.0.0/>. 付属のUnicode 7.0のバージョンは
Perlにはアラビア語のグリフ形状に関する修正が含まれています(
<http://www.unicode.org/errata/#現在の正誤表>)。
"使用する ロケール」 できる 制限する which ローカル カテゴリ 影響を受けました
ロケールのサブセットを指定するために「use locale」にパラメータを渡すことが可能になりました
カテゴリはロケール対応となり、残りのカテゴリは影響を受けません。「use locale」を参照してください。
詳細については、perllocale の「pragma」を参照してください。
パール 今 サポート POSIX 2008 ローカル 通貨 追加
POSIX.1-2008を処理できるプラットフォームでは、
「POSIX::localeconv()」には、そのバージョンで追加された国際通貨フィールドが含まれています。
POSIX標準。これらは「int_n_cs_precedes」、「int_n_sep_by_space」、
「int_n_sign_posn」、「int_p_cs_precedes」、「int_p_sep_by_space」、および「int_p_sign_posn」。
より良いです ヒューリスティック on 古い プラットフォーム の 決定 ローカル UTF-8 性
C99標準もPOSIX 2001標準も実装していないプラットフォームでは、
現在のロケールがUTF-8であるかどうかの判断はヒューリスティックに依存します。これらは
このリリースでは改善されました。
エイリアシング 、 参照
変数とサブルーチンは、参照に割り当てることでエイリアス化できるようになりました。
\$c = \$d;
\&x = \&y;
エイリアシングは、「foreach」イテレータの前にバックスラッシュを使用することによっても実現できます。
変数。これはおそらくこの機能が提供する最も便利な慣用句です。
foreach \%hash (@array_of_hash_refs) { ... }
この機能は実験的なものであり、「use feature 'refaliasing'」で有効にする必要があります。
「experimental::refaliasing」警告カテゴリが無効になっていない限り、警告します。
perlref の「参照への割り当て」を参照してください。
"プロトタイプ" いいえ 引数
引数のない "prototype()" は $_ を推論するようになりました。[perl #123514]
。
New ":const" サブルーチン 属性を使用する。
「const」属性は無名サブルーチンに適用できます。これにより、新しいサブルーチンは
作成されるとすぐに実行されます(すなわち 「sub」式が
その値はキャプチャされ、新しい定数サブルーチンを作成するために使用されます。
返されます。この機能は実験的です。perlsub の「定数関数」を参照してください。
「ファイルノ」 今 仕組み on ディレクトリにジョブを開始します。 ハンドル
オペレーティングシステムで関連するサポートが利用できる場合、「fileno」組み込み関数が
ディレクトリハンドルに対して動作し、基になるファイル記述子を次のように返します。
ファイルハンドル。このようなサポートのないオペレーティングシステムでは、ディレクトリハンドルの「fileno」
以前と同様に未定義の値を返し続けますが、$!を設定して、
操作はサポートされていません。
現在、これはOSの「DIR」構造の「dd_fd」メンバー、または ディルフド(3)
POSIX.1-2008 で規定された関数。
リスト フォーム of パイプ 開いた 実装 の Win32
パイプのリスト形式:
open my $fh, "-|", "program", @arguments;
Win32で実装されました。Win32の「system LIST」と同じ制限があります。
Win32 API はプログラム引数をリストとして受け入れません。
譲渡 〜へ リスト 繰り返し
「(...) x ...」は、左側の要素が
sideは有効な左辺値です。これにより、「(undef,undef,$foo) = that_function()」と書くことができます。
「((undef)x2, $foo) = that_function()」のように。
Infinity NaN (非数) 取り扱い 改善されました
浮動小数点値は、無限大、負の無限大、および
NaN(非数)の値を、より確実に認識して伝播できるようになりました。
計算を行い、出力時に文字列「Inf」、「-Inf」、および「NaN」に正規化します。
POSIX 拡張機能も参照してください。
フローティング ポイント 解析する 持っています き 改善されました
浮動小数点値の解析と印刷が改善されました。
完全に新しい機能として、0進浮動小数点リテラル(「1.23x4p-XNUMX」など)が
現在サポートされており、「printf "%a"」で出力できます。「スカラー値コンストラクタ」を参照してください。
詳細については perldata を参照してください。
梱包 無限大 or 非数字 に a 文字 is 今 致命的な
以前は、無限大や非数を(符号付き)文字にパックしようとすると、Perlは
警告し、0xFFをパックしようとしていると想定します。これを「chr」の引数として指定した場合は、「U+FFFD」
返却されました。
しかし、現在では、このようなアクション (「pack」、「chr」、および「print '%c'」) はすべて致命的なエラーを引き起こします。
実験的 C バックトレース API
PerlはCレベルのAPI経由でCレベルのバックトレース(
(gdb のようなシンボリック デバッガーが行う)。
バックトレースは、C呼び出しフレームのスタックトレースをシンボル名とともに返します。
(関数名)、オブジェクト名(「perl」など)、可能であればソースコードも
場所 (ファイル:line)。
サポートされているプラットフォームはLinuxとOS Xです(一部の*BSDは少なくとも部分的には動作するかもしれませんが、
まだテストされていません。
この機能は、「Configure -Dusecbacktrace」で有効にする必要があります。
詳細については、perlhacktips の「C backtrace」を参照してください。
セキュリティ
パール is 今 コンパイル 「-fstack-プロテクター-強力」 if 利用できます
Perlはスタック破壊防止オプション「-fstack-protector」付きでコンパイルされています。
5.10.1. 現在、Perl は、利用可能な場合は「-fstack-protector-strong」と呼ばれる新しいバリアントを使用します。
当学校区の 食の安全 モジュール 可能性 許す 外側 パッケージ 〜へ be 置き換え
重大なバグ修正: 外部パッケージが置き換えられる可能性がある。Safeは2.38にパッチ適用され、
これに対処します。
パール is 今 常に コンパイル "-D_FORTIFY_SOURCE=2" if 利用できます
gcc 4.*で利用可能な「_FORTIFY_SOURCE」と呼ばれる「コード強化」オプションは、常に
利用可能な場合、Perl をコンパイルするために使用されます。
これは必ずしも大きなステップではないことに注意してください。多くのプラットフォームではすでにこのステップが採用されているためです。
数年前に採用された。多くのLinuxディストリビューション(Fedoraなど)はこれを採用している。
Perl のオプションであり、OS X でも長年にわたって同じオプションが強制されています。
互換性がない 変更
サブルーチン 署名 が 属性
5.20で導入された実験的なサブシグネチャ機能は、
属性。このリリースでは、実験的な機能のユーザーからのフィードバックを受けて、
位置が移動され、シグネチャがサブルーチン名の後に出現するようになりました(
属性リスト(存在する場合)の前に配置します。
「&」 "\&" プロトタイプ 受け入れる の 潜水艦
「&」プロトタイプ文字は、匿名のサブルーチン(「sub {...}」)のみを受け入れるようになりました。
「\&」で始まるか、明示的な「undef」。以前は誤って
配列、ハッシュ、リストへの参照。[perl #4539]
. [perl #4539]
. [perl #123062]
。
さらに、「\&」プロトタイプではサブルーチン呼び出しが許可されていましたが、現在は
サブルーチン: &foo は引数として引き続き使用できますが、"&foo()" と "foo()" は使用できなくなりました。
そうです。[perl #77860] 。
"使用する エンコーディング" is 今 語彙
エンコーディングプラグマの効果は、現在、レキシカルスコープに限定されています。このプラグマは非推奨です。
しかし、その間に、関係のないモジュールに悪影響を与える可能性があります。
同じプログラムです。この変更によりそれが修正されます。
リスト スライス 返す 空の lists
リストスライスは、元のリストが空の場合(または
以前は、リストスライスはすべてのインデックスが
元のリストの外側では、その場合には「undef」値のリストが返されます。[perl
[#114498] 。
"\ N {}" a シーケンス of の試合に スペース is 今 a 致命的な エラー
例えば「\N{TOO MANY SPACES}」や「\N{TRAILING SPACE }」など。これは廃止されました。
v5.18。
"使用する UNIVERSAL 「...」 is 今 a 致命的な エラー
「UNIVERSAL」からの関数のインポートはv5.12以降非推奨となり、現在は致命的である。
エラー。引数なしの「use UNIVERSAL」は引き続き許可されます。
In 二重引用符風 "\ cX", X しなければなりません 今 be a 印刷可能な ASCII 文字
以前のリリースでは、これを行わないと非推奨の警告が表示されました。
分裂 トークン 「(?」 "(*" in レギュラー 表現 is 今 a 致命的な 編集 エラー。
これらは v5.18 以降非推奨となっていました。
「qr/foo/x」 今 無視する を Unicode パターン 白 スペース
「/x」正規表現修飾子を使用すると、パターンに空白を含めることができ、
コメント(両方とも無視されます)を追加して読みやすさを向上させました。これまでは、
Unicodeがこの目的のために指定する空白文字が処理されました。
現在認識されている追加機能は次のとおりです。
U+0085次の行
U+200E左から右へのマーク
U+200F右から左のマーク
U+2028ラインセパレーター
U+2029段落セパレータ
これらの文字を「/x」で括弧内の文字クラスの外で使用する場合と、括弧内の文字クラス以外で使用する場合は、
バックスラッシュで始まる文字はv5.18以降非推奨警告が出ていました。今後は
無視されます。
コメント ライン 以内 「(?[ ])" 今 終わった の by a "\ n"
「(?[ ])」はv5.18で導入された実験的な機能です。これは「/x」が
常に有効です。ただし、違いがありました: コメント行 (「#」文字の後)
次のように、すべての垂直空白を含む「\R」に一致するもので終了する。
フォームフィード。一貫性を保つため、コメント行の終了と一致するように変更されました。
「(?[ ])」の外側、つまり「\n」(エスケープされていても)は、
heredoc 文字列と形式。
「(?[...])」 演算子 今 標準 パール 優先順位
この実験的な機能では、正規表現パターンで集合演算が可能になります。
これにより、交差演算子は他の二項演算子と同じ優先順位を持ちます。
優先順位が高くなりました。これにより、既存のコードとは異なる結果になる可能性があります。
期待される(ドキュメントでは常にこの変更が起こる可能性があることが言及されているが、
式を完全に括弧で囲むことを推奨します。「拡張括弧付き文字」を参照してください。
perlrecharclass の「クラス」を参照してください。
省略 「%」 「@」 on ハッシュ 配列 名 is いいえ より長いです 許可
古いPerlでは、配列名の「@」やハッシュ名の「%」を省略できるものもありました。
スポット。これはPerl 5.000以降非推奨警告を発しており、もはや
許可されています。
「$!」 클라우드 기반 AI/ML및 고성능 컴퓨팅을 통한 디지털 트윈의 기초 – Edward Hsu, Rescale CPO 많은 엔지니어링 중심 기업에게 클라우드는 R&D디지털 전환의 첫 단계일 뿐입니다. 클라우드 자원을 활용해 엔지니어링 팀의 제약을 해결하는 단계를 넘어, 시뮬레이션 운영을 통합하고 최적화하며, 궁극적으로는 모델 기반의 협업과 의사 결정을 지원하여 신제품을 결정할 때 데이터 기반 엔지니어링을 적용하고자 합니다. Rescale은 이러한 혁신을 돕기 위해 컴퓨팅 추천 엔진, 통합 데이터 패브릭, 메타데이터 관리 등을 개발하고 있습니다. 이번 자리를 빌려 비즈니스 경쟁력 제고를 위한 디지털 트윈 및 디지털 스레드 전략 개발 방법에 대한 인사이트를 나누고자 합니다. is 今 in 英語 外側 スコープ of "使用する ロケール」
これまで、テキストは他のほとんどのものと異なり、常に現在の
プログラムの基になるロケール。(一部のシステムでは「$^E」も影響を受けます。) プログラムの場合
ロケールの違いに対応していないと、文字化けしたテキストが表示されることがあります。
表示される。ゴミのようなテキストよりも、何らかのツールで翻訳可能なテキストを表示する方が良い。
理解するのがはるかに難しいテキストです。
「$!」 클라우드 기반 AI/ML및 고성능 컴퓨팅을 통한 디지털 트윈의 기초 – Edward Hsu, Rescale CPO 많은 엔지니어링 중심 기업에게 클라우드는 R&D디지털 전환의 첫 단계일 뿐입니다. 클라우드 자원을 활용해 엔지니어링 팀의 제약을 해결하는 단계를 넘어, 시뮬레이션 운영을 통합하고 최적화하며, 궁극적으로는 모델 기반의 협업과 의사 결정을 지원하여 신제품을 결정할 때 데이터 기반 엔지니어링을 적용하고자 합니다. Rescale은 이러한 혁신을 돕기 위해 컴퓨팅 추천 엔진, 통합 데이터 패브릭, 메타데이터 관리 등을 개발하고 있습니다. 이번 자리를 빌려 비즈니스 경쟁력 제고를 위한 디지털 트윈 및 디지털 스레드 전략 개발 방법에 대한 인사이트를 나누고자 합니다. 意志 be すべての本を返却しているか確認してください。 in UTF-8 を特定いたします。 適切な
$! と $^E の文字列化では、テキストが実際に
非ASCII UTF-8。これにより、ロケールを認識するように設定されたプログラムが適切に
ユーザーの母国語でメッセージを出力します。5.20と
以前の動作では、「use bytes」と「use bytes」の両方のスコープ内で文字列化を行うことができます。
「use locale ":messages"」。この2つのスコープ内では、他のPerl操作は実行されません。
ロケールの影響を受けます。$! と $^E の文字列化のみ。"bytes" プラグマは UTF-8 の
フラグは以前のPerlリリースと同様に設定されません。これにより[perl #112208]が解決されます。
。
サポート の "?パターン?" 無し 明白な オペレータ 持っています き 削除
正規表現を1回だけ一致させることができる「m?PATTERN?」構造は、以前は
代替形式は、疑問符区切りで直接書かれ、
明示的な「m」演算子。この使用法は5.14.0以降非推奨警告を生成しました。
疑問符は構文エラーになり、新しい演算子で使用できるようになります。
「定義済み(@配列)」 「定義済み(%ハッシュ)」 今 致命的な エラー
これらは v5.6.1 以降非推奨となっており、v5.16 以降では非推奨警告が出ています。
使い方 a ハッシュ or an 配列 as a 参照 今 致命的な エラー
たとえば、「%foo->{"bar"}」は致命的なコンパイルエラーを引き起こすようになりました。これらは
v5.8 より前から非推奨であり、それ以降は非推奨の警告が出されています。
変更 〜へ 「*」 プロトタイプ
サブルーチンのプロトタイプ内の「*」文字は、ベアワードを優先させるために使用されます。
サブルーチン名の大部分(すべてではない)に対して、一貫性がなく、バグが発生しました。
行動。
現在は変更されており、サブルーチンは常にベアワードよりも優先されます。
同様にプロトタイプ化された組み込み関数に準拠します。
サブスプラット(*) { ... }
sub foo {...}
splat(foo); # 常に splat(foo()) になります
splat(bar); # 以前と同じようにsplat('bar')
閉じる(foo); # 閉じる(foo())
close(bar); # close('bar')
非推奨
Setting 「${^ENCODING}」 〜へ 何でも 焙煎が極度に未発達や過発達のコーヒーにて、クロロゲン酸の味わいへの影響は強くなり、金属を思わせる味わいと乾いたマウスフィールを感じさせます。 「undef」
この変数を使用すると、Perl スクリプトを ASCII または UTF-8 以外のエンコードで記述できるようになります。
しかし、それはすべてのモジュールにグローバルに影響を及ぼし、間違った回答やセグメンテーションにつながる。
障害。新しいスクリプトはUTF-8で記述し、古いスクリプトはUTF-8に変換する必要があります。
これは piconv ユーティリティを使用すると簡単に実行できます。
of 非グラフィック 文字 in XNUMX文字 変数 名
1文字の変数名の構文は、長い変数名よりも緩やかです。
名前に1文字の句読点文字や非表示文字(
非グラフィック)。Perl v5.20では、ASCII範囲コントロールをそのような名前として廃止しました。現在、
以前は許可されていた非グラフィック文字は廃止されました。
これは「utf8を使用する」が選択されていない場合にのみ発生し、C1コントロール(コードポイント)のみに影響します。
0x80 から 0xFF)、ノーブレークスペース、およびソフトハイフン。
インライン化 of 「サブ () { $ var }" 観察可能 副作用
多くの場合、Perlは「sub () { $var }」をインライン化可能な定数サブルーチンにします。
「sub」式が評価された時点で$varの値をキャプチャします。これにより、
$varがその後変更された場合のクロージャの動作は、
サブルーチンは変更された値を返しません。(これはすべて匿名にのみ適用されることに注意してください
空のプロトタイプを持つサブルーチン ("sub ()")。
変数が変更される可能性がある場合には、この使用法は非推奨になりました。
Perlはそのようなケースを検出し、非推奨の警告を発します。そのようなコードは
将来的には変更され、定数の生成が停止される可能性があります。
変数が宣言された場所でのみ変更される場合、Perlは
警告なしでサブをインライン化し続けてください。
サブ make_constant {
私の$var = shift;
return sub () { $var }; # 問題ありません
}
サブ make_constant_deprecated {
私の$var;
$var = シフト;
return sub () { $var }; # 非推奨
}
サブ make_constant_deprecated2 {
私の$var = shift;
log_that_value($var); # $varを変更できる
return sub () { $var }; # 非推奨
}
上記の2番目の例では、$varが1回だけ割り当てられていることを検出するのは非常に困難です。
検出します。それが「my」宣言以外の場所で発生すると、Perlは
疑わしいと思う。
この非推奨の警告は、サブルーチンの本体の単純な変数に対してのみ発生します。(A
サブルーチン内の「BEGIN」ブロックまたは「use」ステートメントは無視されます。
より複雑なケースでは、例えば
「sub () { do_something() if 0; $var }」の動作が変更され、インライン化は行われなくなりました。
変数が他の場所で変更可能な場合は発生しません。このようなケースはまれです。
of の試合に "/バツ" 正規表現 修飾子
次のようなことを言うことは非推奨になりました。
qr/foo/xx;
/(?xax:foo)/;
re qw(/amxx); を使用します。
つまり、"x"は連続した正規表現の文字列内で1回だけ出現することになります。
パターン修飾子。CPAN 全体でこれが発生することはないと思われます。
これは、将来のPerlリリースで「/xx」が空白を許可するようにするための準備です。
括弧で囲まれた文字クラス(角括弧で囲まれた文字クラス:「[...]」)の読みやすさ。
使い方 a ノーブレイク スペース in a 文字 alias の "\ N{...}" is 今 非推奨の
この非グラフィック文字は、本質的に通常の空間と区別がつかないため、
許可しないでください。charnames の「カスタム エイリアス」を参照してください。
A リテラル 「{」 すべき 今 be 逃げた in a パターン
通常の左中括弧(左中括弧とも呼ばれる)を
表現パターンは、バックスラッシュを前に付けるか、
("\{")または角括弧"[{]"で囲むか、"\Q"を使用します。それ以外の場合は、
廃止の警告が出されます。これはv5.16で初めて発表されました。
リリースにより、将来的に言語を拡張できるようになります。
作成 を 警告 致命的な is 落胆した
致命的な警告のドキュメントには、「use warnings FATAL => 'all'」と記載されています。
推奨されておらず、一般的な致命的な警告のリスクについてより強い言葉で説明しています。
パフォーマンス 機能強化
· メソッド名やクラス名がコンパイル時に分かっている場合は、ハッシュが事前に計算され、高速化されます。
実行時のメソッド検索。また、「SUPER::new」のような複合メソッド名は、
実行時に解析する必要がないように、コンパイル時に行います。
· 定数または単純な配列やハッシュの検索(特にネストされたもの)
変数をキーとして使う方法は、かなり高速になりました。詳細については「内部変更」を参照してください。
詳細。
· 「(...)x1」、「("constant")x0」、および「($scalar)x0」はリストコンテキストで最適化されるようになりました。
右辺の引数が定数1の場合、繰り返し演算子は消えます。
右辺の引数が定数0の場合、式全体が空になるように最適化される。
リストの左側の引数が単純なスカラーまたは定数である限り、
「(foo())x0」はこの最適化の対象ではありません。
· 「substr」代入は、4つの引数を持つ「substr」に最適化され、
サブルーチン(または「戻り値」の引数として)として使用できます。以前は、この最適化は
無効なコンテキストで発生しました。
· 「\L...」、「\Q...」などでは、余分な「文字列化」演算が最適化され、
これらは「lcfirst」、「quotemeta」などと同じくらい高速です。
· 空のリストへの代入が高速化されることがあります。特に、
以前は時々実行されていたのに、右側の結び付けられた引数に対して「FETCH」が実行されるようになりました。
· 「長さ」を非文字列に適用すると、パフォーマンスが最大20%向上します。
魔法の非連結文字列であり、「use bytes」がスコープ内にあるか、文字列が使用されていないかのいずれかです。
内部的には UTF-8 です。
· 64ビット整数を使用するほとんどのPerlビルドでは、非マジカル、非タイドのメモリ使用量は
浮動小数点値のみを含むスカラーは8から32に減少しました。
OS に応じてバイトになります。
· "@array = split"では、割り当ては最適化され、"split"は次のように書きます。
配列に直接適用されます。この最適化は、他のパッケージ配列に対してのみ行われていました。
@_ よりも、時々だけ最適化されます。現在、この最適化はほぼ常に実行されます。
· 「join」は定数畳み込みの対象になりました。例えば「join "-", "a", "b"」は
コンパイル時に「ab」に変換されます。さらに、スカラーまたは定数を「結合」すると、
セパレータと結合する単一項目リストは文字列化に簡略化され、
セパレータは評価されません。
· 「qq(@array)」は、文字列化演算と結合演算の2つの演算を使用して実装されています。「qq」
単一の配列のみが含まれる場合、文字列化は最適化されて削除されます。
· void コンテキストの "our $var" および "our($s,@a,%h)" は実行時に評価されなくなりました。
「our $foo;」ステートメントのシーケンス全体も単にスキップされます。
「状態」変数に適用されます。
· 多くの内部関数がリファクタリングされ、パフォーマンスが向上し、
メモリフットプリント。[perl #121436]
[perl #121906] [perl #121906]
· "-T" および "-B" ファイルテストは、空のファイルが検出されるとすぐに返されます。[perl
#121489]
· キーが定数であるハッシュ検索は高速です。
· 空のプロトタイプと本体に「undef」のみを含むサブルーチンは、
インライン化に適しています。[perl #122728]
· パッケージ内のサブルーチンはもはや型グロブに格納する必要がなくなりました。
サブルーチンは、可能であれば単純なサブ参照をスタッシュに直接配置するようになりました。
メモリを節約します。型グロブは概念上はまだ存在するので、アクセスすると
スタッシュエントリを型グロブにアップグレードする(すなわち これは単なる内部実装です
この最適化は現在XSUBやエクスポートされたサブルーチンには適用されません。
メソッド呼び出しは型グロブにキャッシュするので、これを元に戻します。[perl #120441]
· 関数「utf8::native_to_unicode()」および「utf8::unicode_to_native()」 (utf8 を参照)
ASCIIプラットフォームでは最適化されなくなりました。パフォーマンスの最小値さえもなくなりました。
ASCII と EBCDIC プラットフォーム間で移植可能なコードの作成に失敗しました。
· Win32 Perlは、各Perlプロセスごとに、以前よりも8KB少ないプロセスメモリを使用します。
一部のデータはディスクからメモリマップされ、プロセス間で共有されるようになったため、
同じ perl バイナリ。
モジュール プラグマタ
更新中 モジュール プラグマタ
Perlに同梱されているライブラリの多くは、v5.20.0以降にアップグレードされています。
変更の完全なリストを表示するには、以下を実行します。
コアリスト --diff 5.20.0 5.22.0
5.20.0の代わりにお気に入りのバージョンに置き換えることもできます。
注目すべき変更点は次のとおりです。
· Archive::Tar がバージョン 2.04 にアップグレードされました。
テストを並行して実行できるようになりました。
· 属性がバージョン 0.27 にアップグレードされました。
XS での「memEQ」の使用法が修正されました。 [パール #122701]
バッファの末尾を超えて読み取らないようにしてください。[perl #122629]
· B がバージョン 1.58 にアップグレードされました。
既存の「B::GV->SAFENAME」に基づいて、新しい「B::safename」関数を提供します。
「\cOPEN」を「^OPEN」に変換します。
Null 化された COP は、クラス "B::OP" ではなく、クラス "B::COP" になりました。
「B::REGEXP」オブジェクトは、暗黙のCVにアクセスするための「qr_anoncv」メソッドを提供するようになりました。
コードブロックを含む「qr//」と「compflags」メソッドに関連付けられています
「qr//blahblah」オペレーションから発生する関連フラグを返します。
「B::PMOP」は「B::REGEXP」オブジェクトを返す「pmregexp」メソッドを提供するようになりました。2つの新しい
クラス「B::PADNAME」と「B::PADNAMELIST」が導入されました。
iスレッドの作成または疑似フォーク後に、
子iスレッド/疑似プロセスは正しい「B::SPECIAL」クラスを持っていませんでした。
修正されました。「id」および「outid」PADLIST メソッドが追加されました。
· B::Concise がバージョン 0.996 にアップグレードされました。
実行チェーンの一部である null 操作にシーケンス番号が付与されるようになりました。
ヌルオペレーションのプライベートフラグは、ニーモニックとともにダンプされるようになりました。
ヌル化されていない対応物。
· B::Deparse がバージョン 1.35 にアップグレードされました。
文の先頭で「+sub : attr { ... }」を正しく解析できるようになりました。
最初の「+」、「sub」はステートメント ラベルになります。
「BEGIN」ブロックはほとんどの場合正しい場所に出力されるようになりましたが、変更点
残念ながら、BEGINブロックが直前に発生するという回帰が発生しました。
代わりに、囲んでいるブロックの終わりがその下に表示される場合があります。
「B::Deparse」は、「LIST =
tr/a//d"。[perl #119815]
隣接する「use」ステートメントが、「do」を含む場合に誤ってネストされることがなくなりました。
ブロック。[perl #115066]
「\」に渡されるリスト内の括弧付き配列は、次のように正しく逆解析されるようになりました。
括弧(例えば, "\(@a, (@b), @c)" は @b) の周りの括弧を保持するため、
参照される括弧付き配列の平坦化動作を維持します。以前は、
1 つの配列「\(@a)」に対してのみ機能します。
「local our」は「our」を含めて正しく逆解析されるようになりました。
「for($foo; !$bar; $baz) {...}」は「!」(または「not」)なしで逆解析されました。これは
修正されました。
語彙サブルーチンと競合するコアキーワードは、
「CORE::」プレフィックス。
「foreach state $x (...) {...}」は、「my」ではなく「state」で正しく解析されるようになりました。
「our @array = split(...)」は、次の場合に「our」で正しくデパースされるようになりました。
割り当ては最適化されて削除されます。
今では「our(リスト)" そして語彙(「my Dog $spot」)を正しく入力しました。
$#_ を $#{_} ではなく、それとして解析します。[perl #123947]
囲むスコープの末尾にある BEGIN ブロックが適切な場所で逆解析されるようになりました。
[perl#77452]
BEGIN ブロックは __ANON__ として逆解析されることがありましたが、現在は常に BEGIN と呼ばれます。
レキシカルサブルーチンが完全に逆解析されるようになりました。[perl #116553]
「/r」を使用した「Anything =~ y///r」では、左側のオペランドが省略されなくなりました。
正規表現コードブロックを構成するオペレーションツリーが実際に逆解析されるようになりました。以前は、
正規表現を構成する元の文字列が使用されました。それが問題を引き起こしました
「qr/(?{<
[perl #123217] [perl #115256]
文末の $; のセミコロンが失われなくなりました。[perl #123357]
サブルーチン宣言が省略形でスタッシュに保存されるケースがいくつかありました。
省略。
非ASCII文字は、文字列内で一貫してエスケープされるようになりました。
(正規表現と識別子にはまだ未解決の問題が残っている)
修正されていないもの。
プロトタイプサブ呼び出しが「&」で逆解析されると(例えば、下 -P オプション)、"スカラー"
プロトタイプによって暗示されるスカラー コンテキストを強制するために、適切な場所に が追加されるようになりました。
「require(foo())」、「do(foo())」、「goto(foo())」およびループ制御を含む類似の構造
正しく逆解析されるようになりました。外側の括弧はオプションではありません。
正規表現では空白文字はエスケープされなくなりました。
「(?x:...)」セクション内で誤ってエスケープされました。
「sub foo { foo() }」は必須の括弧付きで逆解析されるようになりました。
「/@array/」は、@array だけでなく、正規表現として解析されるようになりました。
「/@{-}/」、「/@{+}/」、および$#{1}は、中括弧を使用して逆解析されるようになりました。これは、
これらのケース。
機能バンドルを逆解析する際に、「B::Deparse」は最初に「no feature;」を出力していましたが、
「機能 ':all'; がありません。」これは修正されました。
「chdir FH」は引用符なしで逆解析されるようになりました。
"\my @a" は括弧なしで逆解析されるようになりました。(括弧は配列をフラット化します。)
「system」と「exec」の後に続くブロックが正しく解析されるようになりました。以前は
ブロックの前の「do」が間違っていました。
「use constant QR => qr/.../flags」に続いて「"" =~ QR」は、
フラグ。
「BEGIN { undef &foo }」を逆解析すると、 -w スイッチが有効になり、放出が開始されました
Perl 5.14 での「初期化されていない」警告。これは修正されました。
「(;+)」プロトタイプを持つサブルーチンの呼び出しを逆解析すると、無限ループが発生しました。
「(;$)」「(_)」および「(;_)」プロトタイプに誤った優先順位が与えられ、
「foo($a<$b)」は括弧なしで逆解析されます。
Deparse は、内部サブルーチン内に定義された状態サブルーチンを提供するようになりました。
· B::Op_private が追加されました。
B::Op_privateは「op_private」で使用されるフラグに関する詳細な情報を提供します。
Perl オペコードのフィールド。
· bigint、bignum、bigrat がバージョン 0.39 にアップグレードされました。
文字列を数値として使用しても、必ずしも大きな数値が呼び出されるわけではないことを警告に記載する
オーバーロードとその呼び出し方法。[rt.perl.org #123064]
· Carp がバージョン 1.36 にアップグレードされました。
「Carp::Heavy」は、Carpが1.12より新しい場合、Carpのバージョンの不一致を無視するようになりました。
その時点で「Carp::Heavy」の内部がCarpに統合されたためです。[perl #121574]
Carp は非 ASCII プラットフォームをより適切に処理できるようになりました。
Perl < 5.14 の Off-by-one エラーの修正。
· constant がバージョン 1.33 にアップグレードされました。
完全修飾定数名が受け入れられるようになり、定数を次のように定義できるようになりました。
呼び出し元以外のパッケージ。
· CPAN はバージョン 2.11 にアップグレードされました。
「Cwd::getdcwd()」のサポートを追加し、以下の不具合に対する回避策を導入しました。
ストロベリーPerl5.20.1。
依存関係の構築後の「chdir()」のバグを修正しました。
プラグイン/フックの実験的なサポートを導入します。
「App::Cpan」ソースを統合します。
オプションの依存関係の再帰をチェックしません。
サニティーチェック META.yml ハッシュを含む。[cpan #95271]
· CPAN::Meta::Requirements がバージョン 2.132 にアップグレードされました。
「version::vpp」のv文字列マジック検出の制限を回避し、サポートを追加します
今後のExtUtils::MakeMakerブートストラップ用 バージョン.pm 5.10.0 より前の Perl の場合。
· Data::Dumper がバージョン 2.158 にアップグレードされました。
再帰を制限する構成変数/オプションを追加することで、CVE-2014-4330 を修正します。
深いデータ構造をダンプします。
Coverityの問題を解決するための変更。XSダンプはコード名を誤って保存しました
GLOB に格納された参照。[perl #122070]
· DynaLoader がバージョン 1.32 にアップグレードされました。
Dynaloader で使用されていない場合は、グローバル「dl_nonlazy」を削除します。[perl #122926]
· Encode がバージョン 2.72 にアップグレードされました。
「piconv」は、エンコーディング名が存在しない場合にエラー処理が改善され、
perl-5.8.2 以前で Encode をアップグレードする際のビルドの破損が修正されました。
Windows 上で C++ モードでビルドできるようになりました。
· Errno がバージョン 1.23 にアップグレードされました。
GCC 5のプリプロセッサコマンドラインに「-P」を追加します。GCCは追加の行ディレクティブを追加しました。
エラーコード定義の解析が壊れています。[rt.perl.org #123784]
· experimental がバージョン 0.013 にアップグレードされました。
5.15.7 より古い Perl の機能をハードコードします。
· ExtUtils::CBuilder がバージョン 0.280221 にアップグレードされました。
Android での回帰を修正しました。[perl #122675]
· ExtUtils::Manifest がバージョン 1.70 にアップグレードされました。
「maniread()」の引用符付きファイル名の処理に関するバグを修正し、「manifind()」を改良しました
シンボリックリンクをたどります。[perl #122415]
· ExtUtils::ParseXS がバージョン 3.28 にアップグレードされました。
実際に定義する場合のみ「file」を未使用と宣言します。生成された「RETVAL」コードを改善します。
世代の繰り返しの参照を避けるために ST(0). [perl #123278] 拡張してドキュメント化する
"DESTROY" メソッドの "/OBJ$/" から "/REF$/" へのタイプマップの最適化。[perl
#123418]
· Fcntl がバージョン 1.13 にアップグレードされました。
Linux パイプ バッファ サイズ "fcntl()" コマンドのサポートを追加します。
· File::Find がバージョン 1.29 にアップグレードされました。
「find()」と「finddepth()」は、不適切またはスペルミスが渡された場合に警告するようになりました。
オプション。
· File::Glob がバージョン 1.24 にアップグレードされました。
いくつかの場所で「SvIV()」が展開して「get_sv()」を 3 回呼び出すのを避けます。[perl
#123606]
· HTTP::Tiny がバージョン 0.054 にアップグレードされました。
「keep_alive」はフォークセーフかつスレッドセーフになりました。
· IO がバージョン 1.35 にアップグレードされました。
古い Perl のために XS 実装が修正されました。
· IO::Socket がバージョン 1.38 にアップグレードされました。
「connected()」メソッドの制限事項を文書化します。[perl #123096]
· IO::Socket::IP がバージョン 0.37 にアップグレードされました。
「connect()」のサブクラス化に対するよりよい修正。[cpan #95983]
[cpan #95983]
「connect()」のタイムアウトを実装します。[cpan #92075]
· libnet モジュール コレクションがバージョン 3.05 にアップグレードされました。
「Net::FTP」、「Net::NNTP」、「Net::POP6」、および「Net::SMTP」への IPv3 および SSL のサポート。
「Net::SMTP」認証の改善。
· Locale::Codes がバージョン 3.34 にアップグレードされました。
スプレッドシートからデータを抽出するスクリプトのバグを修正しました。
SHP 通貨コードが見つからないようにします。[cpan #94229]
新しいコードが追加されました。
· Math::BigInt がバージョン 1.9997 にアップグレードされました。
CPANリリースからのPODの変更を同期します。「Math::BigFloat->blog(x)」は
精度が2桁を超える場合、「blog(70*x)」を返すことがあります。結果
リストコンテキストでの「Math::BigFloat->bdiv()」は、「x = 商 * 除数 +
「残り」。
サブクラスの処理を修正しました。[cpan #96254]
[cpan #96254]
· Module::Metadata がバージョン 1.000026 にアップグレードされました。
6.63_03 より前の ExtUtils::MakeMaker を使用した古い Perl へのインストールをサポートします。
· overload がバージョン 1.26 にアップグレードされました。
冗長な「ref $sub」チェックが削除されました。
· PathTools モジュール コレクションがバージョン 3.56 にアップグレードされました。
からの警告 gccの XS をビルドするときにコンパイラが回避されるようになりました。
Cygwin では先頭の「//」を「/」に変換しないでください。[perl #122635]
· perl5db.pl がバージョン 1.49 にアップグレードされました。
デバッガーはアサーションの失敗を引き起こします。 [perl#124127]
「tmux」のデバッガーで「fork()」を実行すると、フォークされたウィンドウが新しく作成されるようになりました。
プロセス。[perl #121333]
デバッガーは起動時に現在の作業ディレクトリを保存し、
「R」または「rerun」でプログラムを再起動します。[perl #121509]
· PerlIO::scalar がバージョン 0.22 にアップグレードされました。
スカラーの終わりをはるかに超えた位置から読み取ると、スカラーの終わりが正しく返されるようになりました。
ファイル。[perl #123443]
負の位置へのシークは依然として失敗しますが、ファイル位置が設定されたままではなくなりました。
否定の場所へ。
「PerlIO::scalar」ハンドルの「eof()」は、ファイルの位置が指定されたときに適切に true を返すようになりました。
2 ビット システムでは 32GB マークを超えています。
プラットフォームで不可能なファイル位置への書き込みを試行すると、すぐに失敗するようになりました。
4GB で折り返すのではなく。
· Pod::Perldoc がバージョン 3.25 にアップグレードされました。
読み取りまたは書き込み用に開かれたファイルハンドルに、":encoding(UTF-8)" が設定されるようになりました。[cpan
[#98019]
· POSIX がバージョン 1.53 にアップグレードされました。
C99の数学関数と定数(例えば「acosh」、「isinf」、「isnan」、「round」など)
「trunc」、「M_E」、「M_SQRT2」、「M_PI」) が追加されました。
「POSIX::tmpnam()」は非推奨の警告を生成するようになりました。[perl #122005]
· Safe がバージョン 2.39 にアップグレードされました。
「reval」は無効なコンテキストを適切に伝播していませんでした。
· Scalar-List-Utils がバージョン 1.41 にアップグレードされました。
新しいモジュールSub::Utilが追加されました。これにはCODE参照に関連する関数が含まれています。
「subname」(「Sub::Identity」に触発された)と「set_subname」(コピーされて
「Sub::Name」から名前が変更されました。「List::Util::reduce()」での「GetMagic」の使用も
修正されました。[cpan #63211]
· SDBM_File がバージョン 1.13 にアップグレードされました。
ビルド プロセスを簡素化しました。[perl #123413]
· Time::Piece がバージョン 1.29 にアップグレードされました。
負の「Time::Seconds」をきれいに印刷する場合、「マイナス」が失われなくなりました。
· Unicode::Collate がバージョン 1.12 にアップグレードされました。
バージョン0.67の改良された不連続短縮はデフォルトで無効になっており、
パラメータ「long_contraction」としてサポートされます。
· Unicode::Normalize がバージョン 1.18 にアップグレードされました。
純粋な Perl に代えて、XSUB 実装は削除されました。
· Unicode::UCD がバージョン 0.61 にアップグレードされました。
新しい機能 プロパティ値() 指定されたプロパティの可能な値を返すために追加されました
値。
新しい機能 charprop() 指定されたプロパティの値を返すために追加されました
与えられたコードポイント。
新しい機能 charprops_all() すべてのUnicodeの値を返すように追加されました
特定のコード ポイントのプロパティ。
バグが修正され、 プロパライズ() 正しい短い名前と長い名前を返します
Perl 拡張機能で誤りがあった箇所を修正しました。
バグが修正され、 prop_value_aliases() 間違った値の代わりに「undef」を返します
Perl 拡張機能であるプロパティの結果。
このモジュールは EBCDIC プラットフォームで動作するようになりました。
· utf8 がバージョン 1.17 にアップグレードされました
ドキュメントと「utf8::downgrade()」のコードとの不一致が修正されました。
ドキュメントの優先。オプションの2番目の引数は、
perl ブール値 (true/false セマンティクス) であり、整数ではありません。
· バージョンがバージョン 0.9909 にアップグレードされました。
多数の変更。 変更 詳細については、CPAN ディストリビューションのファイルを参照してください。
· Win32 がバージョン 0.51 にアップグレードされました。
「GetOSName()」が Windows 8.1 をサポートするようになり、C++ モードでのビルドが機能するようになりました。
· Win32API::File がバージョン 0.1202 にアップグレードされました
C++ モードでのビルドが機能するようになりました。
· XSLoader がバージョン 0.20 にアップグレードされました。
XSLoader が異なる名前空間からモジュールをロードできるようにします。[perl #122455]
削除済み モジュール プラグマタ
以下のモジュール(および関連モジュール)はコアperlから削除されました。
分布:
· CG
· モジュール::ビルド
ドキュメント
New ドキュメント
ペルルニクック
Tom Christiansen によるこのドキュメントでは、Perl で Unicode を処理する例を示します。
変更 〜へ 現行製品 ドキュメント
ペルレ
· ロングダブルに関する注記が追加されました。
ペルラピ
· 「SvSetSV」はセットマジックを行わないことに注意してください。
· "sv_usepvn_flags" - ドキュメントを修正し、"Newx" の代わりに "Newx" を使用するように記載しました。
「malloc」です。
[perl#121869]
· 「NUL」を埋め込むことができる場所、または文字列を終了するために必要な場所を明確にします。
· 以前はフォーマットエラーにより欠落していた一部のドキュメントが、
含まれています。
· エントリは、見つかったファイルごとではなく、グループごとに整理されるようになりました。
· エントリのアルファベット順ソートが一貫して行われるようになりました(PODによって自動的に行われます)
スキャン時にエントリを見つけやすくするために、ジェネレーターを使用します。
パールデータ
· 1文字の変数名の構文が最新のものになり、
完全に説明されています。
· 16 進浮動小数点数、無限大、NaN について説明します。
パーレブディック
· この文書は、最近の改善点を考慮して大幅に更新されました。
EBCDIC サポート。
パールフィルター
· 制限事項セクションを追加しました。
ペルファンク
・「study()」は現在ノーオペレーションであることに言及します。
· 配列の値に対して「delete」または「exists」を呼び出すことは、「強く
「非推奨」ではなく「非推奨」です。
· 「our」のドキュメントを改善します。
· 「-l」は、シンボリックリンクがファイルでサポートされていない場合に false を返すようになりました。
システム。 [パール #121523]
· 「exec LIST」と「system LIST」はWin32のシェルにフォールバックする可能性があることに注意してください。
間接オブジェクト構文「exec PROGRAM LIST」と「system PROGRAM LIST」は確実に
シェルの使用は避けてください。
これは perlport でも指摘されています。
[perl#122046]
ペルガット
・OOKの例が更新され、COWの変更と
オフセットの保存。
· C レベルのシンボルと libperl.t の詳細が追加されました。
· Unicodeの取り扱いに関する情報を追加しました
· EBCDICの取り扱いに関する情報が追加されました
パーラック
· 非ASCII文字セットのプラットフォームでの実行に関する注記が追加されました
· パフォーマンステストに関する注記が追加されました
perlhackのヒント
· 存在しないと仮定することの危険性を示す文書が追加されました。
Perlの戻り値が指す静的メモリの内容を変更する
C ライブラリ関数のラッパー。
· 「tmpfile」、「atoi」、「strtol」、「strtoul」の代替が推奨されるようになりました。
· 「test.valgrind」「make」ターゲットのドキュメントを更新しました。[perl #121431]
· 非 ASCII プラットフォームに移植可能なテスト ファイルの書き込みに関する情報が提供されます。
· C 言語のスタック バックトレースを取得する方法についての注記が追加されました。
ペルルパックス
· 「異なるストレージクラスで「sendpath」を再宣言しました」というメッセージが表示されることに注意してください。
「指定子」は無害です。
ペルロケール
· v5.22 の機能強化といくつかの説明を更新しました。
パールモッドスタイル
· モジュールリストを指す代わりに、PrePANを指すようになりました
<http://prepan.org/>.
パーロップ
· v5.22 の機能強化といくつかの説明を更新しました。
パールポッドスペック
· ポッド言語の仕様が変更され、ポッドのデフォルトのエンコーディングが変更されました。
UTF-8 ではないもの(特に指定がない限り)は ISO 1252-8859 ではなく CP1 です。
(Latin1)。
パールポリシー
· 私たちは現在、 p5p メーリングリスト、「STANDARDS OF」に記載
perlpolicy で「CONDUCT」を実行します。
· 実験的機能を非実験的としてマークするための条件が設定されました
不足しています。
· メンテナンスにおいてどのような変更が許容されるかが明確化されました
リリース。
パーポート
· 古くなった VMS 固有の情報が修正および/または簡素化されました。
· EBCDIC に関する注記が追加されました。
ペルレ
· 「/x」修飾子の説明が明確化され、コメントは
エスケープすることで次の行に継続できます。これで、すべての
この修飾子によって空白とみなされる文字。
· 新しい「/n」修飾子について説明します。
· 括弧で囲まれた文字クラスの範囲を非互換にする方法についての注記が追加されました。
ASCII マシン。
パールバックスラッシュ
· 「\b{sb}」、「\b{wb}」、「\b{gcb}」、および「\b{g}」のドキュメントを追加しました。
パールリチャークラス
· perlrecharclassの「文字範囲」に次のような説明が追加されました。
"[AZ]"、"[az]"、"[0-9]"、および括弧で囲まれた正規表現内のその部分範囲
文字クラスは、英語を母国語としない人が想定する文字クラスと完全に一致することが保証されています。
EBCDICのようなプラットフォームでも、perlが余分な処理をしなければならない場合でも、一致することを期待できます。
これを達成するために努力します。
· 括弧付き文字クラスのドキュメントが拡張され、
「qr/[\N{named sequence}]/」の改善(「選択されたバグ修正」を参照)。
パールレフ
· 参照への割り当てに関する新しいセクションが追加されました
パールセック
· アルゴリズムの複雑さと結び付けられたハッシュに関するコメントが追加されました。
ペルシン
· 「...」ステートメントのドキュメントの曖昧さが修正されました。[perl
#122661]
· 「for」および「while」内の空の条件が perlsyn で文書化されるようになりました。
ペルルニコード
· 現在のUnicodeサポートに合わせて大幅に改訂されました
より読みやすくするために。注目すべきは、Unicode 7.0で変更された点である。
Perlは、後方互換性のために古い処理方法を維持しています。
互換性。perlunicode の「非文字コードポイント」を参照してください。
perluniイントロ
· 文字列と正規表現パターンが正しいことを確認するためのアドバイス
Unicode として解釈されるものが更新されました。
パールバー
· $]は廃止予定としてリストされなくなりました。代わりに、
$^Vと比較してこれを使用することの利点と欠点。$OLD_PERL_VERSIONが再追加されました
ドキュメントには $] の長い形式として記載されています。
· 「${^ENCODING}」は非推奨としてマークされました。
· 「%^H」のエントリが明確化され、単純な値のみを処理できることが示されました。
perlvms
· 古くなった資料や間違った資料は削除されました。
· VMS の環境とシェルの相互作用に関するドキュメントを更新しました。
ペルクス
· XS コードのロケールの問題に関する説明を追加しました。
診断法
警告を含め、診断出力に次の追加または変更が加えられました。
致命的なエラーメッセージ。 診断メッセージの完全なリストについては、perldiagを参照してください。
New 診断法
New Errors
· スカラーのシンボルが正しくありません
(P)シンボルではないものにスカラーエントリを追加するように要求された内部要求
テーブルエントリ。
· ハッシュを参照として使用することはできません
(F) "%foo-> {"bar "}"のように、参照としてハッシュを使用しようとしました。
"%$ref->{"こんにちは"}"。 perl <= 5.6.1のバージョンは、この構文を許可するために使用されましたが、
そうすべきではなかった。
· 配列を参照として使用することはできません
(F)「@foo->[23]」または「@$ref-> [99]」のように、配列を参照として使用しようとしました。
perl のバージョン 5.6.1 以前ではこの構文が許可されていましたが、許可されるべきではありませんでした。
· 'defined(@array)'は使用できません(おそらく、 defined()?)
(F) 「defined()」は配列では役に立ちません。なぜなら、未定義かどうかをチェックするからです。 スカラー
値。配列が空かどうかを確認したい場合は、
たとえば、「if (@array) { # not empty }」などです。
· 'defined(%hash)'は使用できません(おそらく、 defined()?)
(F)「defined()」は通常、ハッシュでは正しくありません。
「defined%hash」は、まだ使用されていないプレーンなハッシュではfalseですが、
イテレータ、弱参照、隠し名前など、いくつかの非自明な状況
「undef%hash」の後もtrueのままです。 これらのことにより、「定義された%hash」は公平になります
実際には役に立たないため、致命的なエラーが発生するようになりました。
空でないことのチェックが必要な場合は、ブールコンテキストに配置します(参照
perldataの「スカラー値」):
if(%hash){
# 空ではない
}
「%Foo :: Bar :: QUUXを定義」して、そのようなパッケージ変数が存在するかどうかを確認した場合
それなら、それは本当に信頼できるものではなく、
パッケージの機能、またはロードされているかどうかなど。
· %f を chr できません
(F)無効な数値(無限大や非数値など)を「chr」に渡しました。
· パック内の %f を圧縮できません
(F) 無限大または非数を符号なし文字に変換しようとしました。
意味がありません。
· %f を '%c' でパックできません
(F) 無限大または非数を文字に変換しようとしましたが、
意味。
· '%c' で %f を印刷できません
(F)無限大または非数値を文字(%c)として印刷しようとしましたが、
検出。 たぶんあなたは'%s'を意味しましたか、それとも単にそれを文字列化しますか?
· charnames エイリアス定義には、複数のスペースのシーケンスを含めることはできません。
(F)複数のスペース文字が連続して含まれる文字名を定義しました。 変化する
それらを単一のスペースに。 通常、これらの名前は「:alias」インポートで定義されます
「charnamesを使用する」という引数ですが、にインストールされているトランスレータによって定義できます。
$ ^H{charnames}。 charnamesの「CUSTOMALIASES」を参照してください。
· charnames エイリアス定義には末尾の空白を含めることはできません
(F)スペース文字で終わる文字名を定義しました。 を削除します
末尾のスペース。 通常、これらの名前は「:alias」インポート引数で定義されます。
「charnamesを使用する」が、にインストールされた翻訳者によって定義される可能性があります
$ ^H{charnames}。 charnamesの「CUSTOMALIASES」を参照してください。
· :const は名前付きサブルーチンでは許可されません
(F)「const」属性により、匿名サブルーチンが実行され、その値が
クローン作成時にキャプチャされます。 名前付きサブルーチンは、このように複製されません。
したがって、属性はそれらに意味がありません。
· 16進浮動小数点数: 内部エラー
(F)XNUMX進フロート処理で問題が発生しました。
· 16進浮動小数点数: サポートされていないlong double形式
(F)long doubleを使用するようにPerlを構成しましたが、longdoubleの内部
形式が不明であるため、16 進浮動小数点出力は不可能です。
· 違法なsuidscript
(F)suidperlで実行されたスクリプトはどういうわけか違法でした。
· '(?...)' では、'(' と '?' は正規表現内で隣接している必要があります。m/%s/ では <-- HERE でマークされています。
(F)正規表現パターンのこのコンテキストでのXNUMX文字のシーケンス「(?」
「(」と「?」の間に何も介在しない、分割できないトークンである必要があります。
しかし、あなたはそれらを分離しました。
· '(*VERB...)' では、正規表現では '(' と '*' が隣接している必要があります。
MS/
(F)正規表現パターンのこのコンテキストでのXNUMX文字のシーケンス「(*」
「(」と「*」の間に何も介在しない、分割できないトークンである必要があります。
しかし、あなたはそれらを分離しました。
· 正規表現の {,} に無効な量指定子があります。m/%s/ では <-- HERE でマークされています。
(F)パターンは{min、max}数量詞のように見えますが、minまたはmaxはできませんでした
有効な数値として解析されません。先頭にゼロが付いているか、大きすぎる数値を表しています。
対処する数。 <-ここに、正規表現のどこに問題があるかを示します
発見されました。 perlreを参照してください。
· '%s' は正規表現内の不明な境界型です
(F)「\b{...}」または「\B{...}」を使用しましたが、「...」はPerlに認識されていません。 現在
有効なものは、perlrebackslashの「\ b {}、\ b、\ B {}、\B」に示されています。
· require の引数が不足しているか未定義です
(F) 引数なしで、または未定義の値を引数として「require」を呼び出そうとしました。
引数。「require」はパッケージ名またはファイル指定のいずれかを引数として受け取ります。
口論。 perlfuncの「require」を参照してください。
以前は、引数なしの「require」または「undef」は Null ファイル名について警告していました。
New 警告
· \C は正規表現では非推奨です
(D 非推奨) "/\C/" 文字クラスはバージョン5.20で非推奨となり、現在は
警告。v5.24ではエラーになる予定です。この文字クラス
マルチバイト文字内に出現する場合でも1バイトに一致し、
カプセル化され、UTF-8 文字列が破損する可能性があります。
· 「%s」は正規表現では「%s」とだけ書くほうが分かりやすいです。m/%s/ では <-- HERE でマークされています。
(W regexp)( "use re'strict'"の下または"(?[...])"内のみ)
あなたはそれを書くための与えられたより明白な方法を持っているそしてそれが
また、さまざまな文字セットで実行されているプラットフォームに移植できます。
· 引数 "%s" は増分 (++) で 0 として扱われます
(W数値)示された文字列は、引数として「++」演算子に供給されました。
「/^[a-zA-Z] * [0-9] * \z/」に一致する数値または文字列が必要です。 「自動-
詳細については、perlopの「インクリメントと自動デクリメント」を参照してください。
· 正規表現では範囲の両端またはどちらも Unicode である必要があります。m/%s/ では <-- HERE でマークされています。
(W regexp)( "use re'strict'"の下または"(?[...])"内のみ)
正規表現パターンの括弧で囲まれた文字クラスでは、次のような範囲がありました。
片方の端は「\N{}」を使用して指定され、もう一方の端はを使用して指定されます
ポータブルではないメカニズム。 Perlはその範囲をUnicode範囲、つまりすべての
その中の文字はUnicode文字と見なされ、
Perlが実行される一部のプラットフォームでは異なるコードポイント。 例:「[\ N {U +06}-\x08]」
代わりに「[\N{U + 06}-\ N {U + 08}]」と言ったかのように扱われます。つまり、
Unicodeでコードポイントが6、7、および8である文字。ただし、その「\x08」は
何か違うことを意味していることを示しているので、警告が表示されます。
· 非 UTF-8 ロケールでは %s("%s") を実行できません。"%s" に解決されます。
(Wロケール)あなたは1)「ロケールを使用」で実行しています。 2)現在のロケールは
UTF-8 3; XNUMX)指定されたケース変更操作を指定されたものに対して実行しようとしました
Unicode文字; 4)この操作の結果はUnicodeとロケールを混合します
おそらく矛盾するルール。
警告カテゴリ「ロケール」が新しく追加されました。
· :const は実験的です
(Sexperimental :: const_attr)「const」属性は実験的です。 あなたがしたい場合は
この機能を使用し、「警告なし'experimental ::const_attr'」で警告を無効にします。
ただし、そうすることで、将来コードが破損する可能性があるというリスクを冒していることを知っておいてください。
Perlバージョン。
· gmtime(%f) が失敗しました
(Wオーバーフロー)処理できない番号で「gmtime」を呼び出しました:大きすぎます、
小さすぎる、またはNaN。 戻り値は「undef」です。
· 16進浮動小数点数: 指数オーバーフロー
(W オーバーフロー) 16進浮動小数点の指数は浮動小数点数より大きい
ポイントサポート。
· 16進浮動小数点数: 指数アンダーフロー
(W オーバーフロー) 16進浮動小数点の指数は浮動小数点数よりも小さいです
ポイントサポート。
· 16進浮動小数点数: 仮数オーバーフロー
(Wオーバーフロー)XNUMX進浮動小数点リテラルには、仮数に多くのビットがありました(
「0x」と指数の間の部分(小数部または仮数部とも呼ばれる)
浮動小数点がサポートするよりも。
· 16進浮動小数点数: 精度の低下
(Wオーバーフロー)XNUMX進浮動小数点の内部桁数が、
出力。 これは、サポートされていないlongdouble形式または64ビット整数が原因である可能性があります
使用できません(一部の構成では数字を取得する必要があります)。
· ロケール '%s' は正常に動作しない可能性があります。%s
(Wロケール)名前付きロケールを使用しています。これはUTF-8以外のロケールであり、perlです。
は、処理できるものと完全には互換性がないと判断しました。 XNUMX番目の%sは
理由。
警告カテゴリ「ロケール」が新しく追加されました。
· localtime(%f) が失敗しました
(Wオーバーフロー)処理できない番号で「localtime」を呼び出しました:大きすぎます、
小さすぎる、またはNaN。 戻り値は「undef」です。
· 繰り返し回数が負の場合は何も起こりません
(W数値)「x」繰り返し演算子を0回未満実行しようとしましたが、
意味がありません。
· 文字名エイリアス定義における改行なしスペースは非推奨です
(D非推奨)ノーブレークスペースを含む文字名を定義しました
キャラクター。 通常のスペースに変更します。 通常、これらの名前はで定義されています
":alias"は "use charnames"の引数をインポートしますが、翻訳者が定義できます
$ ^H{charnames}にインストールされます。 charnamesの「CUSTOMALIASES」を参照してください。
· 非有限繰り返し回数は何も起こらない
(W 数値) "x" 繰り返し演算子 "Inf" (または "-Inf") または NaN を実行しようとしました
何回も繰り返しますが、意味がありません。
· PerlIO レイヤー ':win32' は実験的です
(S実験的:: win32_perlio)「:win32」PerlIOレイヤーは実験的です。 お望みならば
このレイヤーを使用するリスクを冒すには、次の警告を無効にするだけです。
警告なし"experimental:: win32_perlio";
· ASCII 印刷可能文字の範囲は、正規表現では「0-9」、「AZ」、または「az」のサブセットである必要があります。
<-ここにm/%s/でマーク
(W regexp)( "use re'strict'"の下または"(?[...])"内のみ)
より厳密なルールは、タイプミスやその他のエラーを見つけるのに役立ちます。 おそらくあなたは意図さえしていませんでした
ここでの範囲、「-」が他の文字を意味する場合、またはそうであるべきだった場合
エスケープしました(「\-」のように)。 範囲を意図した場合、使用されたものはポータブルではありません
ASCIIプラットフォームとEBCDICプラットフォームの間であり、カジュアルには明らかな意味がありません
リーダー。
[3-7]#OK; 自明でポータブル
[dg] #OK; 自明でポータブル
[AY] #OK; 自明でポータブル
[Az]#間違っています; ポータブルではありません。 意味がはっきりしない
[aZ]#間違っています。 ポータブルではありません。 意味がはっきりしない
[%-。] # 間違い; ポータブルではありません。 意味がはっきりしない
[\ x41-Z]#間違っています; ポータブルではありません。 非オタクには明らかではない
(Unicode範囲を指定することで、移植性を強制できます。つまり、
エンドポイントは「\N{...}」で指定されますが、その意味はまだ明らかではない可能性があります。)
より厳密なルールでは、ASCII文字で開始または終了する範囲が必要です。
コントロールではないすべてのエンドポイントはリテラル文字であり、エスケープ文字ではない
シーケンス( "\ x41"など)。範囲はすべて数字、またはすべて大文字である必要があります。
またはすべて小文字。
· 数字の範囲は正規表現内の同じグループからのものである必要があります。m/%s/ では <-- HERE でマークされています。
(W regexp)( "use re'strict'"の下または"(?[...])"内のみ)
より厳密なルールは、タイプミスやその他のエラーを見つけるのに役立ちます。 あなたは範囲を含めました、そして
エンドポイントの少なくともXNUMXつはXNUMX進数です。 より厳しい規則の下で、これが
発生した場合、両方のエンドポイントは、10桁の連続した同じグループの桁である必要があります。
· %s に冗長な引数があります
(W 冗長) 示されているように、必要以上の引数で関数を呼び出しました。
あなたが提供した他の引数内の情報によって(例えば. printf形式)。現在
printf タイプのフォーマットで指定された引数よりも少ない引数が必要になった場合にのみ出力されます。
しかし、将来的には 例えば perlfuncの「パック」。
警告カテゴリ「冗長」は新しいものです。[perl #121025]も参照してください。
。
· 置換リストは検索リストよりも長い
これは新しい診断ではありませんが、以前のリリースでは誤って表示されませんでした。
翻訳にワイド文字が含まれていた場合、この問題は修正され、
以前は表示されていなかった(表示されるはずだった)場所でこの診断が表示されます。
· 非UTF-8ロケールで\b{}を使用するのは誤りです。UTF-8ロケールを前提としています
(Wロケール)ロケールルールとUnicodeを使用して正規表現を照合しています
境界は一致していますが、ロケールはUnicodeではありません。 これはしません
検出。 Unicode(UTF-8)ロケールを想定して、Perlは続行しますが、結果は
ロケールがたまたまISO-8859-1(Latin1)である場合を除いて、これは間違いです。
メッセージは偽物であり、無視できます。
警告カテゴリ「ロケール」が新しく追加されました。
· 正規表現で /%s の代わりに '%s' に /u を使用します。m/%s/ では <-- HERE でマークされています。
(W regexp)一部でUnicode境界( "\b{...}"または"\B {...}")を使用しました
文字セット修飾子「/a」または「/aa」が有効な正規表現。
これらのXNUMXつの修飾子は、ASCII解釈を示しますが、これは意味がありません。
Unicode定義。生成された正規表現はコンパイルされ、
境界はすべてのUnicodeを使用します。 正規表現の他の部分は影響を受けません。
· ビット単位の機能は実験的です
(S実験的::ビット単位)この警告は、ビット単位の演算子( "&| ^
〜&。 |。 ^。 〜。 ")「ビット単位」機能が有効になっている場合。次の場合は警告を抑制します。
この機能を使用したいが、そうすることでリスクを冒していることを知っている
将来のPerlバージョンで変更または削除される可能性のある実験的な機能を使用する:
警告なし"experimental:: bitwise";
機能「ビット単位」を使用します。
$x|。=$y;
· 正規表現内のエスケープされていない左括弧は非推奨であり、正規表現ではそのまま渡されます。<-- でマークされます。
m/%s/のこちら
(Dは非推奨、regexp)正規表現でリテラル「{」文字を使用しました
パターン。 Perlの将来のバージョンのため、代わりに「\{」を使用するように変更する必要があります
(暫定的にv5.26)は、これを構文エラーと見なします。 パターンの場合
区切り文字も中括弧です。一致する右中括弧( "}")もエスケープする必要があります。
たとえば、パーサーを混乱させないでください。
qr {abc \ {def \} ghi}
· 変数名にリテラル非グラフィック文字を使用することは推奨されません
(Dは非推奨)ソースでリテラルの非グラフィック(コントロールを含む)文字を使用する
を参照する ^FOO $^X や "${^GLOBAL_PHASE}" などの変数は非推奨になりました。
· 属性「const」の無駄な使用
(W misc) "const"属性は、匿名のクロージャープロトタイプを除いて効果がありません。
これをattributes.pmを介してサブルーチンに適用しました。 これは、内部でのみ役立ちます
匿名サブルーチンの属性ハンドラー。
· 翻字演算子における /d 修飾子の無駄な使用
これは新しい診断ではありませんが、以前のリリースでは誤って表示されませんでした。
翻訳にワイド文字が含まれていた場合、この問題は修正され、
以前は表示されていなかった(表示されるはずだった)場所でこの診断が表示されます。
· 「use re 'strict'」は実験的なものです
(S実験:: re_strict)正規表現の場合の違い
パターンは「strict」でコンパイルされ、将来のPerlリリースで変更される可能性があります。
互換性のない方法。厳密なチェックを可能にする方法を変更する提案もある。
このサブプラグマを使用する代わりに、これは今日コンパイルされるパターンが
将来の Perl リリースではサポートされません。この警告は、そのリスクについて警告するためのものです。
· 警告: ファイルハンドルを正しく閉じることができません: %s
警告:ファイルハンドル%sを正しく閉じることができません:%s
(S io) 以前は、perlは暗黙的に閉じるときにエラーを無視していました。
ファイルハンドル、 すなわち ファイルハンドルの参照カウントがゼロになり、
ユーザーのコードがまだ「close()」を呼び出していない。 例えば
{
open my $fh, '>', $file or die "open: '$file': $!\n";
$fh、$data を印刷するか、die します。
} # ここで暗黙的に閉じる
ディスクがいっぱいなどの状況では、バッファリングによりエラーが検出されることがあります。
最終クローズ時に、クローズの結果を確認しないのは危険です。
そのため、Perl はこのような状況では警告を発するようになりました。
· %s 内のワイド文字 (U+%X)
(Wロケール)シングルバイトロケールの場合(すなわち、UTF-8以外のもの)、マルチバイト
文字に遭遇しました。 Perlは、この文字を指定されたUnicodeと見なします
コードポイント。 非UTF-8ロケールとUnicodeを組み合わせるのは危険です。 ほぼ確実に
一部の文字はXNUMXつの異なる表現を持ちます。 たとえば、ISOでは
8859-7(ギリシャ語)ロケール、コードポイント0xC3はキャピタルガンマを表します。 しかし、それも
0x393を実行します。 これにより、文字列の比較が信頼できなくなります。
このマルチバイト文字がどのように
シングルバイトロケール(または、UTF-8ロケールがあると思っていたが、Perl
同意しません)。
警告カテゴリ「ロケール」が新しく追加されました。
変更 〜へ 現行製品 診断法
· <> は引用符で囲む必要があります
この警告は、requireステートメントを引用符で囲む必要がある場合に<>に変更されました。
問題をより識別しやすくします。
· 引数「%s」は数値ではありません%s
この警告の perldiag エントリには、次のような説明が追加されています。
InfとNaN(無限大と非数)の場合、
「数値」の定義はやや変わっています。文字列自体が
(「Inf」など)は数値とみなされ、それに続くものは
数値ではないとみなされます。
· グローバル シンボル "%s" には明示的なパッケージ名が必要です
このメッセージには「(「私の%s」を宣言するのを忘れましたか?)」が追加されています。
新しい Perl プログラマーにとってより役立ちます。[perl #121638]
· 「"my" 変数 &foo::bar はパッケージ内に存在できません」は「サブルーチン」と書き換えられました。
「変数」の代わりに。
· 文字クラス内の\N{}は正規表現では1文字に制限されます。<-- HEREでマークされています。
MS/
このメッセージは 文字 class に変わった 反転 文字 class or as a 範囲
終点 is 「qr/[\N{named sequence}]/」の改良を反映するため(
「選択されたバグ修正」)。
· パニック: frexp
このメッセージには、問題となっている浮動小数点数を示すために「: %f」が追加されています。
番号はです。
· 可能 優先順位 問題 on ビット単位 %c オペレータ 可能な優先順位として言い換え
ビット単位の %s 演算子に問題があります。
· 改行を含むファイル名の %s が失敗しました
この警告は、ファイル名の末尾に改行がある場合にのみ生成されるようになりました。
· 「変数%sは共有されません」は、共有されていない場合は「サブルーチン」と表示されるように変更されました。
実際には共有されない語彙サブです。
· 可変長の後読みは正規表現 m/%s/ に実装されていません
この警告の perldiag エントリに、Unicode の動作に関する情報が追加されました。
診断的 除去
· 「-foo の曖昧な使用は -& として解決されましたfoo()"
実際にはここには曖昧さはなく、これが否定定数の使用を妨げます。
例えば、「-Inf」。
· 「定数は FOO 参照ではありません」
コンパイル時の定数参照チェック(例えば、"my_constant->()"は
オーバーロードを考慮していなかったため削除されました。[perl #69456]
[パール #69456]
ユーティリティ 変更
find2perl, s2p a2p 除去
・ x2p/ ディレクトリは Perl コアから削除されました。
これにより、find2perl、s2p、a2pが削除されます。これらはすべてCPANに別々にリリースされました。
ディストリビューション ("App::find2perl"、"App::s2p"、"App::a2p")。
時2時
· 時2時 コンパイラの事前定義されたマクロ定義でXNUMX進定数を処理するようになりました。
$Config{cppsymbols}に表示されます。 [perl#123784]
。
エンゲス
· コア以外のモジュールに依存しなくなりました。
編集
· 構成 「lrintl()」、「lroundl()」、「llrintl()」、および「llroundl()」をチェックするようになりました。
· 構成 "-Dmksymlinks" を使用すると、より高速になるはずです。[perl #122002]
。
· 「pthreads」と「cl」ライブラリは、存在する場合はデフォルトでリンクされます。これにより、
スレッド化を必要とするXSモジュールは、非スレッド化Perl上で動作します。
スレッド化された perl が必要な場合は、引き続き "-Dusethreads" を渡します。
· 浮動小数点数の精度と範囲をさらに高めるには、GCCを使用できるようになりました。
4倍精度浮動小数点数を実装するquadmathライブラリ
x86およびIA-64プラットフォーム。 INSTALL より詳細をご確認いただけます。
· MurmurHash64A と MurmurHash64B を内部ハッシュ関数として設定できるようになりました。
· 「make test.valgrind」は並列テストをサポートするようになりました。
具体的な例を挙げますと、以下の通りです。
TEST_JOBS=9 テスト.valgrind を作成する
詳細については、perlhacktips の「valgrind」を参照してください。
[perl#121431]
· MAD(Misc Attribute Decoration)ビルドオプションが削除されました
これはPerlのパースツリーをより忠実に保存するためのメンテナンスされていない試みでした。
Perl 5 から Perl 6 への自動変換はより簡単になったでしょう。
このビルド時の設定オプションは何年もメンテナンスされておらず、おそらく
Perl 5 と Perl 6 の両方の側で重大な相違がありました。
· 新しいコンパイルフラグ「-DPERL_OP_PARENT」が利用可能になりました。詳細については、
以下の「内部変更」で説明されています。
· Pathtools は miniperl に XS をロードしなくなりました。これにより、perl のビルドが高速化されます。
ちょっと。
テスト
· t / portaling / re_context.t utf8とその依存関係がのみ使用することをテストするために追加されました
「Perl_save_re_context()」がハードコードされている「$1..$n」キャプチャ変数のサブセット
その関数には実行時に何を決定する効率的な方法がないため、ローカライズします
ローカライズする変数。
· パフォーマンスの問題に対するテストがファイルに追加されました t / perf / taint.t.
· 一部の正規表現テストは、実行速度が非常に遅くなるように記述されています。
特定の最適化が機能しなくなる場合。これらのテストは新しいファイルに移動されました。
t/re/スピード.t t/re/スピード_thr.t、そして「watchdog()」で実行されます。
· "test.pl"は、"plan skip_all => $reason"が使えるようになり、互換性が向上しました。
「テスト::その他」。
· 新しいテストスクリプト、 op/infnan.t無限大とNaNが機能するかどうかをテストするために追加されました
正しく動作します。「無限大と NaN (非数) の処理が改善されました」を参照してください。
Platform サポート
取り戻した プラットフォーム
IRIX および Tru64 プラットフォームが再び動作するようになりました。
いくつかの「make test」の失敗が残っています: [perl #123977]
および [perl #123977]
IRIX 用; [perl #125298]
、[cpan #124212]
、および [cpan #99605]
Tru104836用。
EBCDIC コード ページ 1047 を実行する z/OS
コアPerlはEBCDICプラットフォームで動作するようになりました。以前のPerlも動作していましたが、
サポートは正式には撤回されていないが、最近のPerlはコンパイルも実行もできない。
まあ、Perl 5.20でも動くだろうが、多くのバグがあったが、今は修正されている。多くのCPAN
Perlに同梱されているモジュールは、"Pod::Simple"を含め、依然としてテストに失敗します。しかし、
現在CPANにある「Pod::Simple」のバージョンは動作するはずです。修正が遅すぎたため、
Perl 5.22に含まれています。まだ壊れているCPANモジュールの多くを修正する作業が進行中です。
完成すればCPANにインストールされる可能性が高いので、
動作するバージョンを入手するには、Perl 5.24 までお待ちください。
中止 プラットフォーム
NeXTSTEP / OPENSTEP
NeXTSTEPは、NeXTのワークステーションにバンドルされていた独自のオペレーティングシステムでした。
90年代前半から中頃にかけて、OPENSTEPはNeXTSTEPのようなAPI仕様を提供した。
非NeXTSTEPシステム上の環境。どちらもすでに廃止されているため、ビルドのサポートは
それらの Perl は削除されました。
プラットフォーム固有 Notes
EBCDIC
EBCDICプラットフォームでは、Perlインタープリタで特別な処理が必要になります。
"qr/[ij]/"は、コード間に7文字あるため、"i"と"j"のみに一致します。
「i」と「j」のポイント。この特別な処理は、
範囲はリテラルです。現在、"\N{...}"形式のいずれかが
リテラルの代わりに、名前または Unicode コード ポイントで文字を指定します。
perlrecharclass の「文字範囲」を参照してください。
HP-UX
archname は use64bitint と use64bitall を区別するようになりました。
Android
一般的なクロスコンパイルと Android のビルド サポートが改善されました。
特定。
VMS
· 待機せずにサブプロセスを生成する場合、戻り値が正しいものになりました。
PID。
· VMS C++ コンパイラでリンクが失敗しないようにプロトタイプを修正しました。
· 「configure.com」に「finite」、「finitel」、「isfinite」の検出機能が追加されました。
環境処理に若干の変更が加えられ、レガシー機能の修正も行われました。
ステータスを確認しています。
Win32
· ミニパール.exe 「-fno-strict-aliasing」でビルドされるようになり、64ビットビルドが可能になりました。
GCC 4.8 で完了しました。[perl #123976]
· 「nmake minitest」がWin32で動作するようになりました。依存関係の問題により、ビルドする必要があります。
最初に「nmake test-prep」を実行すると、少数のテストが失敗します。[perl #123394]
· Perlは、makefileマクロを設定することでWindows上でC++モードでビルドできるようになりました。
「USE_CPLUSPLUS」を値「define」に設定します。
· パイプオープンのリスト形式がWin32に実装されました。注:「システム」とは異なり、
LIST" の場合、シェルにフォールバックしません。[perl #121159]
· Windows に新しい「DebugSymbols」および「DebugFull」構成オプションが追加されました
makefiles。
· 以前は、Visual C++ for Win64を使用してXSモジュール(CPANのものを含む)をコンパイルしていました。
ファイルごとに約12件の警告が発生しました hv_func.hこれらの警告は
沈黙させられた。
· PerlIO なしでのビルドのサポートは Windows の makefile から削除されました。
PerlIO以外のビルドはPerl 5.18.0でほぼ廃止され、すでに
による支援 構成 POSIX システムの場合。
· 2回の試行あたり6~XNUMXミリ秒とXNUMX回のI/O呼び出しが節約されました。
@INC 内の各パスに対して perl モジュールを開きます。
· Intel C ビルドは常に C99 モードをオンにしてビルドされるようになりました。
· MinGW では %lld の代わりに %I64d が使用されるようになりました。
· 実験的な「:win32」レイヤーで、「open」のクラッシュが修正されました。
/ dev / null (Win32 Perlのデフォルトの「:unix」レイヤーで動作する)が実装されました
":win32" 用。[perl #122224]
· 新しいメイクファイルオプション「USE_LONG_DOUBLE」がWindows dmakeに追加されました。
gccビルド専用のmakefile。perlでlongを使用する場合はこれを「define」に設定してください。
浮動小数点数の精度と範囲を高めるために double を使用します。
OpenBSDの
OpenBSDでは、セキュリティ上の理由から、Perlはデフォルトでシステムの「malloc」を使用するようになりました。
Perl独自のmallocラッパーは、v5.14以降、
パフォーマンス上の理由から、OpenBSDプロジェクトはトレードオフに価値があると信じており、
速度を必要とするユーザーが具体的に要求することを希望します。
[perl #122000] 。
ソラリス
· Sun Studioコンパイラを両方で検索するようになりました /opt/solstudio*
/opt/solarisstudio*.
· Solaris 10で「-Dusedtrace」を使用したビルドは、makeがそれに従わなかったため、早期に失敗しました。
「perldtrace.h」をビルドするための暗黙の依存関係。明示的な依存関係を追加しました。
「依存」。[perl #120120]
· C99オプションが整理されました。ヒントは「solstudio」だけでなく
「SUNWspro」およびネイティブの「setenv」のサポートが追加されました。
インナー 変更
· optree内のopが親を見つけられるように実験的なサポートが追加されました。
これは、デフォルト以外のビルドオプション「-DPERL_OP_PARENT」によって有効になります。
これは最終的にはデフォルトで有効になると想定されているので、XSコードは
opsの「op_sibling」フィールドに直接アクセスする部分は、将来的に更新される必要があります。
校正済み。
「PERL_OP_PARENT」ビルドでは、「op_sibling」フィールドは「op_sibparent」に名前が変更され、
新しいフラグ「op_moresib」が追加されました。兄弟チェーンの最後のオペレーションでは、「op_moresib」は
false であり、「op_sibparent」は「NULL」ではなく親(存在する場合)を指します。
既存のコードを「PERL_OP_PARENT」の使用の有無にかかわらず透過的に動作させるには、
代わりに使用すべき新しいマクロと関数が多数追加されました。
「op_sibling」を直接操作します。
次の兄弟を決定するために「op_sibling」だけを読み込む場合、2つの新しい
マクロが追加されました。兄弟チェーンをスキャンする簡単な手順は次のようになります。
(; kid->op_sibling; kid = kid->op_sibling) { ... }
次のように記述する必要があります。
(; OpHAS_SIBLING(kid); kid = OpSIBLING(kid)) { ... }
optreeを変更するために、汎用関数「op_sibling_splice()」が追加されました。
これにより、兄弟オペレーションのチェーンを操作できるようになります。Perlの
関数「splice()」を使用すると、兄弟チェーンから0個以上のオペレーションを切り取ることができます。
0個以上の新しいオペレーションで置き換えます。すべての更新を透過的に処理します。
兄弟、親、op_last ポインタなど。
より低いレベルでオペレーションを操作する必要がある場合は、3つの新しいマクロ、
「OpMORESIB_set」、「OpLASTSIB_set」、および「OpMAYBESIB_set」は、低レベルの
「op_sibling」/「op_sibparent」を設定し、同時に「op_moresib」も更新する移植性の高い方法。
最初のものは兄弟ポインタを新しい兄弟に設定し、2番目はオペレーションを最後のものにします
兄弟は、3番目は条件付きで最初のアクションまたは2番目のアクションを実行します。
「op_sibling_splice()」とは異なり、これらのマクロは親の一貫性を維持しません。
同時に(例えば 必要に応じて「op_first」と「op_last」を更新します。
Cレベルの「Perl_op_parent()」関数とPerlレベルの「B::OP::parent()」メソッドには
追加されました。C関数は「PERL_OP_PARENT」ビルドでのみ存在します(使用すると
バニラPerlではビルド時エラーが発生します。「B::OP::parent()」は常に存在しますが、バニラでは
ビルドすると常に「NULL」を返します。「PERL_OP_PARENT」では、
現在のオペレーション(存在する場合)。変数$B::OP::does_parentは、
「B」はオペレーションの親の取得をサポートします。
「PERL_OP_PARENT」は5.21.2で導入されましたが、インターフェースは大幅に変更されました
5.21.11で変更されたコードを更新した場合は、
さらなる改訂。5.21.2 以降の主な変更点は次のとおりです。
· 「OP_SIBLING」および「OP_HAS_SIBLING」マクロは「OpSIBLING」に名前が変更されました。
他のオペレーション操作マクロとの一貫性を保つための「OpHAS_SIBLING」。
· 「op_lastsib」フィールドの名前が「op_moresib」に変更され、意味が反転しました。
· マクロ「OpSIBLING_set」は削除され、
「OpMORESIB_set」 et al.
· 「op_sibling_splice()」関数は、nullの「parent」引数を受け入れるようになりました。
スプライシングは兄弟チェーンの最初または最後のオペレーションには影響しません。
· XSコードがPOSIXロケールをより適切に操作できるようにマクロが作成されました
カテゴリ「LC_NUMERIC」。perlapi の「ロケール関連の関数とマクロ」を参照してください。
· 前回の「あとい」 et al 代替関数「grok_atou」は廃止されました
「grok_atoUV」による。詳細については perlclib を参照してください。
· 新しい関数「Perl_sv_get_backrefs()」が追加され、
SV を指す弱参照 (存在する場合)。
· 「screaminstr()」関数は削除されました。パブリックAPIとしてマークされていましたが、
文書化されておらず、CPAN モジュールでは使用されていません。5.17.0 以降、これを呼び出すと致命的になります。
· 「newDEFSVOP()」、「block_start()」、「block_end()」、および「intro_my()」関数には、
APIに追加されました。
· 内部の「変換」関数 OP.C 「op_convert_list」に名前が変更され、追加された
API に。
· 「sv_magic()」関数は、読み取り専用値に対する「ext」マジックを禁止しなくなりました。
結局のところ、perl はカスタムマジックが SV を変更するかどうかを知ることができません。[perl
[#123103] 。
· XSUB 上の perlapi の "CvPADLIST" へのアクセスは禁止されました。
「CvPADLIST」フィールドはXSUBの別の内部目的のために再利用されています。
特に、CVがNULLであるかどうかのテストとして、それがNULLであることに頼ることはできなくなりました。
XSUB。代わりに「CvISXSUB()」を使用してください。
· 「SVt_NV」タイプのSVは、ビルド構成と
プラットフォームが許可している場合:具体的には「sizeof(NV) <= sizeof(IV)」の場合。「本体なし」とは
NV値はSVの先頭に直接格納され、
割り当てるボディを別にします。このトリックは 5.9.2 以降、IV にすでに使用されています。
(ただし、IVの場合はプラットフォームやビルドに関係なく常に使用されます。
構成)。
· $DB::single、$DB::signal、$DB::trace変数にset-とget-magicが追加されました。
それらの値はIVとして保存され、それらのIVは、それらの値をテストするときに使用されます。
「pp_dbstate()」。これにより、オーバーロードされたオブジェクトが
これらの変数のいずれかに割り当てられます。[perl #122445]
。
· パブリックAPIとしてマークされているが文書化されていない「Perl_tmps_grow()」は、
パブリックAPIから削除されました。この変更は、
モータルスタックを事前に拡張するための「EXTEND_MORTAL」マクロ。
· Perlの内部では、「SVs_PADMY」フラグを設定したり使用したりしなくなりました。「SvPADMY()」は以下を返します。
「PADTMP」および「SVs_PADMY」とマークされていないものの真の値は、0 として定義されるようになりました。
· マクロ「SETsv」と「SETsvUN」は削除されました。これらは、
6 年前のコミット 1401f2dcXNUMXa 以降、コアは変更され、CPAN 上には存在しません。
· 「SvFAKE」ビット(HVでは使用されていない)は、将来のためにデイビッド・ミッチェルによって非公式に予約された。
vtables で作業します。
· 「sv_catpvn_flags()」関数は「SV_CATBYTES」および「SV_CATUTF8」フラグを受け入れます。
追加する文字列がバイトかUTF-8かを指定します。(これらのフラグには
実際には 5.16.0 から存在していましたが、以前は API の一部とは見なされていませんでした。
· 新しいオペコードクラス「METHOP」が導入されました。これは、
クラス/オブジェクト メソッド呼び出しのパフォーマンスを向上させるランタイム。
「OP_METHOD」と「OP_METHOD_NAMED」は「UNOP/SVOP」から「
「メトホップ」。
· 「cv_name()」は、CVまたはGVを渡すことができる新しいAPI関数です。SVを返します。
診断で使用するサブルーチンの名前が含まれます。
[perl #116735] [perl #116735]
· 「cv_set_call_checker_flags()」は、次のように動作する新しいAPI関数です。
「cv_set_call_checker()」とは異なり、呼び出し側が呼び出しが
チェッカーはサブルーチン名を報告するために完全なGVを必要とするか、またはそれが
代わりに CV が渡されました。渡された値は何でも "cv_name()" に受け入れられます。
「cv_set_call_checker()」はGVが存在することを保証しますが、GVを作成する必要があるかもしれません。
オンザフライで実行するのは非効率的です。[perl #116735]
· 「CvGV」(APIの一部ではない)は、より複雑なマクロになり、
関数を生成してGVを具体化します。ブール値として使用された場合、
「CvHASGV」が追加されました。これは、概念上はGVを持つCVに対してtrueを返しますが、
GV を具体化せずに、「CvGV」はレキシカルサブルーチンに対しても GV を返すようになりました。[perl
#120441]
· perlapi関数の「sync_locale」がパブリックAPIに追加されました。
プログラムのロケールはXSコードでは避けるべきです。しかし、Perl以外の言語では、
XSから呼び出されるライブラリは、"Gtk"のように、そうする必要があります。この場合、Perlは
ロケールが変更されたことを通知します。この関数を使用して、
Perl へ。
· OPの「op_private」フィールドのフラグの定義とラベルが自動的に作成されます。
データから生成された 再生成/op_privateこの顕著な効果は、
「簡潔」のフラグ出力は若干異なる可能性があり、
「perl -Dx」はかなり異なる可能性があります(どちらも同じラベルセットを使用しています)。また、
デバッグビルドでは、op_free() に新しいアサーションが追加され、op が
「op_private」に認識されないフラグが設定されています。
· 非推奨の変数「PL_sv_objcount」が削除されました。
· Perlは、ロケールカテゴリ「LC_NUMERIC」を「C」に設定したままにしようとします。
プログラムの基盤となるロケールに設定する必要がある操作。これにより、
10 進数の基数文字がドットではないことに対応できない XS モジュールが多数あります。
このリリースより前のPerlでは、このカテゴリは「C」に初期化されていましたが、
「POSIX::setlocale()」はそれを変更します。現在、このような呼び出しは基礎となる
プログラムの「LC_NUMERIC」カテゴリのロケールですが、XSコードに公開されているロケールです
は「C」のままです。LC_NUMERICロケールを操作するための新しいマクロがあります。
「STORE_LC_NUMERIC_SET_TO_NEEDED」および「STORE_LC_NUMERIC_FORCE_TO_UNDERLYING」を参照してください。
perlapi の「ロケール関連の関数とマクロ」。
· 文字列がUTF8であるかどうかを効率的に判定する新しいマクロ「isUTFXNUMX_CHAR」が記述されました。
パラメータによって指定された文字は、整形式の UTF-8 でエンコードされた文字で始まります。
· 次のプライベート API 関数のコンテキスト パラメータが削除されました。
「Perl_cast_ulong」、「Perl_cast_i32」、「Perl_cast_iv」、「Perl_cast_uv」、
「Perl_cv_const_sv」、「Perl_mg_find」、「Perl_mg_findext」、「Perl_mg_magical」、
「Perl_mini_mktime」、「Perl_my_dirfd」、「Perl_sv_backoff」、「Perl_utf8_hop」。
パブリックAPIの一部である関数のプレフィックスなしバージョンでは、
「cast_i32()」などの関数は影響を受けません。
· 「PADNAME」と「PADNAMELIST」型は別の型となり、単純に
SV および AV の別名。 [パール #123223]
。
· パッド名は常に UTF-8 になりました。「PadnameUTF8」マクロは常に true を返します。
これまでは事実上すでにそうでしたが、2つの異なる
パッド名の内部表現が削除されました。
· 新しいオペレーションクラス「UNOP_AUX」が追加されました。これは「UNOP」のサブクラスで、
「op_aux」フィールドが追加されました。これはUV、SV*などの結合配列を指します。
単純な「op_sv」などよりも多くのデータをオペレーションが保存する必要がある場合に使用します。
現在、このタイプの唯一のオペレーションは「OP_MULTIDEREF」です (次の項目を参照)。
· 新しいオペレーション「OP_MULTIDEREF」が追加されました。これは、1つ以上のネストされた配列と
キーが定数または単純な変数であるハッシュ検索。たとえば、
式$a[0]{$k}[$i]は、以前は2個の「rvXNUMXXv」、「Xelem」、「gvsv」と
「const」演算は、単一の「multideref」演算によって実行されるようになりました。また、「local」も処理できます。
「exists」と「delete」。「[$i+1]」のような単純でないインデックス式は、依然として実行される。
「aelem」/「helem」を使用し、小さな定数インデックスによる単一レベルの配列検索は
依然として「aelemfast」を使用して実行されます。
選択した バグ 解消された問題
· 「close」により $ が設定されるようになりました。
I/Oエラーが発生すると、エラーが発生したという事実が
ハンドル。このようなハンドルに対して「close」はfalseを返します。以前は、$!の値は
「close」では影響されないため、「close $fh or die $!」と書くという一般的な慣習は
確実に動作しません。ハンドルは$!の値も記録し、「close」は復元します
ボーマンは
· 「no re」は「use re」で有効になるすべての機能をオフにできるようになりました
以前は「no re」を実行すると、いくつかの項目のみがオフになりました。今ではすべてをオフにできます。
有効になっているもの。たとえば、デバッグを有効にすると、それを止める唯一の方法は
囲んでいるブロックを終了します。これは修正されました。
· "pack("D", $x)" と "pack("F", $x)" は、x86 long double ビルドでパディングをゼロにするようになりました。
GCC 4.8以降のビルドオプションでは、ゼロを上書きするか、
初期化されたパディング、または初期化されたバッファを完全にバイパスする。これにより op/pack.t
失敗します。[perl #123971]
・親スレッドから複製された配列を拡張すると、「
新しい要素を変更しようとすると、「読み取り専用の値が試行されました」というエラーが発生します。[perl
#124127]
· アサーション失敗とそれに続くクラッシュ「*x= " が修正されました。[perl
#123790]
· レキシカルサブのコンパイルに関連するクラッシュ/ループのバグが修正されました。
[perl#124099]
· UTF-8は関数名、引用符で囲まれていないHEREドキュメントのターミネータ、
配列のインデックスとして使用される変数名でも使用できます。[perl #124113]
・大きな汚染された文字列でスカラーコンテキストで繰り返されるグローバルパターンの一致は
文字列内の現在の一致位置に応じて、指数関数的に遅くなります。 [perl
#123202]
· 構文エラーによってパーサーが混乱することによるさまざまなクラッシュが修正されました。
[perl #123801] [perl #123801]
[パール #123802]
[パール #123955]
· レキシカル $_ のスコープ内の "split" がアサーションを失敗しないように修正されました。[perl
#123763]
· さまざまなリスト演算子内の「my $x : attr」構文がアサーションに失敗しなくなりました。[perl
#123817]
· 引用符で囲まれた「@」記号の後に非 ASCII 数字が続く (これは有効な識別子ではありません)
パーサーがクラッシュする原因となり、単に「@」をリテラルとして試す代わりに、
修正されました。 [perl#123963]
· 「*bar::=*foo::=*glob_with_hash」は Perl 5.14 以降クラッシュしていましたが、現在はクラッシュしなくなりました。
[perl#123847]
· スカラーコンテキストでの「foreach」はスタックにアイテムをプッシュせず、結果として
バグ。("print 4, scalar do { foreach(@x){} } + 1" は 5 を出力します。) 修正されました
「undef」を返します。[perl #124004]
・環境変数の内容をコアCコードに格納するために使用されるデータのいくつかのケース
使用される前に上書きされる可能性がある問題が修正されました。 [perl#123748]
・「」で始まるいくつかのパターン/.* ..../"長い文字列との照合が遅くなりました
v5.8以降、および一部の形式は「/.*..../i"はv5.18以降遅くなっていましたが、現在は
すべてが再び高速になりました。[perl #123743] 。
・$ /の元の表示値は、無効な値に設定された場合でも保持されるようになりました。
以前は、たとえば$ /を配列への参照に設定すると、perlは
実行時エラーが発生し、「PL_rs」は設定されませんが、$/をチェックするPerlコードは配列を参照します。
参照。[perl #123218] 。
· 正規表現パターンでは、POSIXクラス("[:ascii:]"など)は、
括弧で囲まれた文字クラス、例えば「qr/[[:ascii:]]/」など。
POSIXクラスのように見えますが、括弧で囲まれたクラス内にはありません。この警告は
POSIX クラスが否定されたときに生成される問題: "[:^ascii:]"。この問題は修正されました。
・Perl 5.14.0では、「eval {LABEL:}」がクラッシュするバグが導入されました。 これはされています
修正されました。[perl #123652] 。
· 構文エラーによってパーサーが混乱することによるさまざまなクラッシュが修正されました。
[perl #123617] . [perl #123617]
. [perl #123737]
. [perl #123753]
。
・「/ $ a [/」のようなコードは、入力の次の行を読み取り、それが来たかのように扱うために使用されます
オープニングブラケットの直後。 その結果、一部の無効なコードは解析され、
実行しますが、一部のコードがクラッシュを引き起こしたため、これは現在許可されていません。 [perl#123712]
。
· 「pack」の引数アンダーフローを修正しました。[perl #123874]
。
· 非厳密な「\x{}」の処理を修正。「\x{}」は「\x{0}」と同等になり、
断層。
· 「stat -t」は、「-t stat」と同様にスタック可能として扱われなくなりました。[perl #123816]
。
· 次のコードでは SEGV が発生しなくなりました: "qr{x+(y(?0))*}"。
· 正規表現パターン内のバックリファレンスの解析における無限ループを修正しました。
· InfinityとNaNの動作に関するいくつかの小さなバグ修正。警告を含む。
無限大やNaNのような文字列を文字列化する。例えば、「NaNcy」は数値化されない。
もうNaNです。
· セグメンテーション違反やその他のクラッシュを引き起こす可能性のある正規表現パターンのバグ
修正されました。これは、"/i" でコンパイルされたパターンでのみ発生しました。
現在のPOSIXロケールを考慮する(通常は、
"use locale" のスコープ)、少なくとも 128 個の連続する文字列が必要です
一致するバイト数。[perl #123539] 。
· 「s///g」は、非常に長い文字列(2億文字以上)でも機能するようになりました。
'Substitution loop' で終了するのではなく、反復回数を増やします。[perl #103260]
. [perl #103260]
。
· 「gmtime」は非数値でもクラッシュしなくなりました。 [パール #123495]
。
· 「\()」(空のリストへの参照)と、スコープ内のレキシカル$_を持つ「y///」は、
スタックの終端を超えて不正な書き込みを行う。これらは両方とも修正され、
最初にスタックします。
· 引数なしの「prototype()」はスタック上の前の項目を読み込むために使用されるので、
「print "foo", prototype()」はfooのプロトタイプを出力します。$_を推測するように修正されました。
代わりに。[perl #123514] 。
· 事前宣言されたサブルーチン内で宣言されたレキシカル状態サブルーチンの一部のケースではクラッシュする可能性があります。
外部変数の名前を含む文字列を評価する例ですが、もはや
行う。
· 匿名サブルーチン内のネストされたレキシカル状態サブルーチンの一部のケースでは、「奇妙な」
'コピー' エラーが発生したり、クラッシュしたりする可能性があります。
· 警告を発しようとすると、perlのデフォルトのデバッガ(perl5db.pl)は時々
代わりに「未定義のサブルーチン&DB::db_warnが呼び出されました」というメッセージが表示される。このバグは、
Perl 5.18 で発生する問題が修正されました。[perl #123553]
。
· "s/${<>{})//" などの置換における特定の構文エラーがクラッシュする可能性がありました。
Perl 5.10 以降ではそうなっています。(場合によっては、クラッシュは 5.16 まで発生しませんでした。)
もちろん、クラッシュは修正されました。[perl #123542]
。
· 文字列サイズ計算オーバーフローのいくつかの修正。特に繰り返し
「33 x ~3」のような式は、新しい出力がバッファオーバーフローを引き起こす可能性がある。
バッファサイズは「SvGROW()」によって正しく処理されませんでした。このような式は
メモリラップパニックを適切に生成します。[perl #123554]
。
· "formline("@...", "a");" はクラッシュします。"pp_formline()" の "FF_CHECKNL" ケースはクラッシュしません。
チョップ位置をマークするために使用されるポインターを設定します。これにより、「FF_MORE」ケースが発生しました。
セグメンテーション違反でクラッシュします。 これは修正されました。 [パール #123538]
。
· 通常の実行中にリテラル パターンを解析すると、バッファ オーバーランとクラッシュが発生する可能性があります。
式のコンパイルが修正されました。 [パール #123604]
。
· "fchmod()" と "futimes()" は、閉じたファイルが渡されたために失敗した場合に $! を設定するようになりました。
ハンドル。[perl #122703] 。
· 「op_free()」と「scalarvoid()」は、解放時にスタックオーバーフローによりクラッシュしなくなりました。
深く再帰的な op ツリー。[perl #108276]
。
· Perl 5.20.0では、$^Nにアクセスすると内部UTF-8フラグが誤ってオフになっていました。
正規表現内のコード ブロックから、値を UTF-8 でエンコードします。
これは修正されました。 [perl#123135]
。
· 失敗した「semctl」呼び出しはスタック上の既存の項目を上書きしなくなりました。
「(semctl(-1,0,0,0))[0]」はもはや「初期化されていません」という警告を発しません。
· 「foo」の前にスペースのない「else{foo()}」は、正しい行を割り当てるのに適切になりました。
そのステートメントに番号を追加します。[perl #122695]
。
· 時々、「@array = split」の割り当てが最適化され、「split」自体が
配列に直接書き込みます。これによりバグが発生し、この割り当てが
左辺値のコンテキストで使用されていました。したがって、「(@a=split//,"foo")=bar()」はエラーでした。(このバグ
おそらく、最適化が追加された Perl 3 にまで遡ります。) 現在は修正されています。
[perl #123057] 。
· 引数リストがサブルーチンシグネチャ(
まだ実験的な機能ですが、結果として生じるエラーメッセージには、ファイルと
呼び出されたサブルーチンの行番号ではなく、呼び出し元の行番号です。[perl #121374]
。
· フリップフロップ演算子(スカラーコンテキストでは「..」と「...」)は、別の
各再帰レベルの状態(囲んでいるサブルーチンが呼び出された回数)
ドキュメントに反して、各クロージャは1つの内部状態を持つようになりました。
各フリップフロップに対して。[perl #122829]
。
· フリップフロップ演算子(スカラーコンテキストでは「..」)は、それぞれ同じスカラーを返します。
サブルーチンが再帰的に呼び出されない限り、常に
新しいスカラー。[perl #122829] 。
· 「use」、「no」、ステートメントラベル、特殊ブロック(「BEGIN」)、ポッドが次のように許可されるようになりました。
「map」または「grep」ブロックの最初の部分、「print」または「say」(またはその他の
関数) 内でハンドルを返し、"${...}"、"@{...}" など内で使用されます [perl #122782]
。
· 繰り返し演算子「x」は、左辺の引数に左辺値のコンテキストを伝播するようになりました。
「foreach」のような文脈で使われる場合、「for(($#that_array)x2) { ... }」は
ループが $_ を変更する場合は期待どおりに動作します。
· スカラーコンテキストの「(...) x ...」は、オペランドの 1 つがオブジェクトの場合にスタックを破損していました。
「x」のオーバーロードにより、不安定な動作が発生します。[perl #121827]
。
· レキシカルスカラーへの代入は、多くの場合最適化によって除去されます。たとえば、「my $x; $x = $y」
+ $z"では、代入演算子は最適化されて削除され、加算演算子はその結果を書き込む。
直接$xに渡されます。この最適化に関連するさまざまなバグが修正されました。
右側の演算子は、値をまったく割り当てることができなかったり、
間違った値を割り当てたり、結び付けられた変数に対して STORE を 2 回呼び出したりまったく呼び出したりしないことがあります。
影響を受ける演算子は、「use integer」の下の「$foo++」、「$foo--」、および「-$foo」です。
「chomp」、「chr」、および「setpgrp」。
· リストの割り当ては、同じスカラーがリストの両側にある場合にバグが発生することがありました。
「tied」、「values」または「each」の使用による割り当て。結果は間違ったものになります。
値が割り当てられます。
· 「setpgrp($nonzero)」(引数5.16つ)は、XNUMXで誤って次のように変更されました。
setpgrp(0)。 これは修正されました。
· 「__SUB__」はデバッガで間違った値を返したり、メモリを破損したりする可能性がある(
「-d」スイッチ)および「eval $string」を含むサブルーチンで使用できます。
· 「sub () { $var }」がインライン化可能になると、毎回異なるスカラーを返すようになりました。
インライン化できないサブルーチンの場合と同様ですが、Perlはそれでもコピーを最適化して取り除きます。
目に見える違いは生じない。
· 「my sub f() { $var }」と「sub(): attr { $var }」は、
インライン化。前者はクラッシュし、後者は属性を破棄するだけです。
あまり知られていない「:method」属性については例外があり、何もしない。
多く。
· 空のプロトタイプを持つサブルーチンのインライン化が、以前よりも一貫性が増しました。
以前は、最後のものを除くすべてのステートメントが最適化された複数のステートメントを持つサブルーチン
離れて、文字列「eval」を含む匿名サブである場合にのみインライン化可能になります。
または「状態」宣言または外側の字句変数(または任意の匿名サブ)の閉じ
デバッガの下で)。これで、
最適化によって削除されたステートメントはインライン化の対象となります。これは次のようなものに適用されます。
「sub () { jabber() if DEBUG; 42 }」のように。
明示的な「戻り」を持ついくつかのサブルーチンは、
ドキュメントでは、「return」は常にインライン化を防止します。
· VMSなどの一部のシステムでは、「crypt」は非ASCII文字列を返すことがあります。スカラーの場合
割り当てられた文字列に以前にUTF-8文字列が含まれていた場合、「crypt」はオフになりません
UTF-8フラグが無効になり、戻り値が壊れます。これは、
「$lexical = crypt ...」。
· 「crypt」は、最初の引数が結び付けられている場合に「FETCH」を 2 回呼び出さなくなりました。
· 引用符のような演算子の最後の行にある終了していないヒアドキュメント("qq[${ <
"/(?{<
· "index()" と "rindex()" は、2GB を超えるサイズの文字列で使用してもクラッシュしなくなりました。[perl
[#121562] 。
· 「PERL_SYS_INIT」/「PERL_SYS_INIT3」における、以前は意図的だった小さなメモリリーク
Win32ビルドが修正されました。これは、繰り返し作成と破棄を行う埋め込み者に影響する可能性があります。
同じプロセス内の perl エンジン。
· 「POSIX::localeconv()」は、プログラムの基礎となるロケールのデータを返すようになりました。
「use locale」のスコープ外から呼び出された場合。
· 「POSIX::localeconv()」は、「LC_NUMERIC」を持たないプラットフォームでも正常に動作するようになりました。
および/または「LC_MONETARY」、またはPerlがどちらかまたは両方を無視するようにコンパイルされている場合
これらのロケールカテゴリのエントリはありません。
「localeconv()」によって返されるハッシュ内の対応する値。
· 「POSIX::localeconv()」は、返される値を UTF-8 かどうか適切にマークするようになりました。
以前は、常にバイトとして返されていました。
UTF-8 としてエンコードされます。
· Microsoft Windowsでは、「use locale」の範囲内で、次のPOSIX文字
クラスは、POSIX 標準に準拠していない多くのロケールに対して結果を返しました。
"[[:alnum:]]", "[[:alpha:]]", "[[:blank:]]", "[[:digit:]]", "[[:graph:]]",
"[[:lower:]]"、"[[:print:]]"、"[[:punct:]]"、"[[:upper:]]"、"[[:word:]]"、および
"[[:xdigit:]]" これは、基盤となるMicrosoftの実装が
標準に従ってください。Perl はこれを修正するために特別な予防措置を講じるようになりました。
· Coverity によって多くの問題が検出されましたhttp://www.coverity.com/> そして修正されました。
· 「system()」および関連機能が、より多くの Android ビルドで適切に動作するようになりました。
見落としにより、「-Dtargetsh」で指定された値が 構成 終了します
ビルドプロセスの一部で無視されていました。これにより、Perlがクロスコンパイルされました。
Androidは「system()」、「exec()」、バッククォートの欠陥バージョンを抱えることになる。
コマンドは最終的に「/bin/sh「/system/bin/sh」の代わりに「/system/bin/sh」とします。
ほとんどのデバイスでは失敗し、$! は「ENOENT」のままになります。
· 「qr(...\(...\)...)」、「qr[...\[...\]...]」、および「qr{...\{...\}...}」が機能するようになりました。
以前は、これらの左3文字をバックスラッシュでエスケープすることは不可能でした。
正規表現パターン内では、
メタ文字、パターンの開始区切り文字は文字、終了区切り文字は
区切り文字はそのミラー文字でした。
· 汚染されたUTF-8文字列の「s///e」は「pos()」を破壊しました。このバグは5.20で導入されましたが、
修正されました。[perl #122148] 。
· 正規表現内の非単語境界("\B")が、必ずしも正規表現の末尾と一致しない。
文字列; 特に「q{} =~ /\B/」は一致しませんでした。このバグは、perl 5.14で導入されました。
修正されました。[perl #122090] 。
· "" P" =~ /(?=.*P)P/" は一致するはずでしたが、一致しませんでした。これは修正されました。[perl #122171]
。
· 「eval」で「use Foo」をコンパイルしないと、誤った「BEGIN」サブルーチンが残る可能性がある
定義により、次回の使用時に「サブルーチンBEGINが再定義されました」という警告が発生します。
「use」、またはその他の「BEGIN」ブロック。[perl #122107]
。
· 「method { BLOCK } ARGS」構文は、引数が以下の文字で始まっている場合に正しく解析されるようになりました。
開き括弧。[perl #46947] 。
· 外部ライブラリとPerlはロケールの考え方が異なる可能性があります。これは
ロケールの数値区切り文字が使用されている場合、バージョン文字列を解析するときに問題が発生します。
かわった。 バージョン解析にパッチが適用され、ロケールが正しく処理されるようになりました。
[perl #121930] 。
· 正規表現内の長さゼロのアサーションとコード ブロックが存在するバグが修正されました。
「pos」に不正な値が表示される可能性があります。 [パール #122460]
。
· 定数の逆参照は、型グロブ定数に対して正しく動作するようになりました。以前は、
glob が文字列化され、その名前が検索されました。これで glob 自体が使用されます。[perl
#69456]
· 括弧が続くシギル(「$」「@」「%」「&」)を解析する場合、パーサーは
ブロックコンストラクタかハッシュコンストラクタかを推測する(
後者を推測します)。ブロックにしかならないためです。
· 「undef $reference」は参照先を保持するのではなく、参照先を直ちに解放するようになりました。
次の文まで。[perl #122556]
· サブルーチンの名前が使用されるさまざまなケース (オートロード、オーバーロード、エラー メッセージ)
以前は字句サブでクラッシュしていましたが、修正されました。
· ベアワード検索では、ベアワードが
サブルーチン名にはなりません。
· 匿名定数のコンパイル(例えば、"sub() { 3 }")は、もはや何も削除しません
現在のパッケージには「__ANON__」という名前のサブルーチンがあります。「*__ANON__{CODE}」だけでなく、
問題は解決しましたが、メモリリークも発生しました。このバグは Perl 5.8.0 に遡ります。
· 「sub f;」や「sub f();」のようなスタブ宣言は、
「use constant」によって宣言された同じ名前。このバグは Perl 5.10.0 で導入されました。
· 「qr/[\N{named sequence}]/」は、多くのインスタンスで正常に動作するようになりました。
「\N{...}」で知られているいくつかの名前は、複数の文字のシーケンスを参照しますが、
通常の1文字にのみ一致します。括弧で囲まれた文字クラスは通常、1文字のみに一致します。
文字でしたが、特別な処理が追加され、名前付き文字と一致するようになりました。
シーケンスは、クラスが反転されている場合やシーケンスが次のように指定されている場合は適用されません。
範囲の始まりまたは終わり。これらの場合、以前との動作の違いは
このクラスが
「?[...])」構造。「[...]」が単独で存在する場合、
before が呼び出され、シーケンスの最初の文字だけが使用される。
前に。
· コンパイル時に評価される汚染された定数によって、無関係なステートメントが発生することがなくなりました。
汚れる。 [パール #122669]
· 「main::_GEN_0」のような名前のハンドルを活性化する「open $$fh, ...」は、
ハンドルに正しい参照カウントを与えると、二重解放が発生する可能性があります。
· ベアワードがメソッド名であると判断する場合、パーサーは
同じ名前の「our」サブが存在し、そのパッケージ内のメソッドを検索します。
呼び出し元のパッケージの代わりに、「our」サブを使用します。
· パーサーは、二重引用符で囲まれた文字列内の「\U=」によって混乱しなくなりました。以前は、
構文エラーが発生していましたが、現在は正しくコンパイルされます。[perl #80368]
· 「-B」および「-T」ファイルテスト演算子は、常に
UTF-8でエンコードされたファイルをテキストとして保存します。(perlfuncはこれに対応するように更新されました。)以前は、
実際には有効な UTF-8 ではない一部のファイルが UTF-8 であるとみなされる可能性がありました。
これは修正されました。演算子は EBCDIC プラットフォームでも動作するようになりました。
· 特定の条件下では、正規表現パターン中に警告メッセージが表示される
コンパイルが複数回出力されていました。この問題は修正されました。
· Perl 5.20.0では、UTF-8でエンコードされた正規表現が
ASCII小文字1文字を含むパターンは大文字と一致しませんでした
対応するもの。これは 5.20.1 と 5.22.0 の両方で修正されました。[perl #122655]
· 定数畳み込みは、字句警告(「use
警告(「警告なし」または「警告なし」)は有効ではなく、$^Wはコンパイル時に偽であり、
実行時には true になります。
· 正規表現のマッチング中にUnicodeテーブルをロードするとアサーションが発生する可能性がある
前回の試合で同じ正規表現が使われていた場合、デバッグビルドで失敗する
式。[perl #122747]
· スレッドのクローン作成は、レキシカルサブルーチンでは正しく動作せず、クラッシュや
終了時にダブル解放します。
· Perl 5.14.0以降、$SomePackage::{__ANON__}を削除して匿名の
サブルーチンは内部的に破損する可能性があり、その結果Devel::Peekがクラッシュしたり、B.pmがクラッシュしたりする可能性があります。
意味不明なデータが表示されていました。この問題は修正されました。
· 「(caller $n)[3]」は、レキシカルサブルーチンの名前を報告するようになりました。
"(未知)"。
· 「sort subname LIST」は、比較ルーチンとして字句サブの使用をサポートするようになりました。
· エイリアシング(例えば(「*x = *y」経由)は、2つのリストの割り当てを混乱させる可能性がある。
どちらの側でも同じ変数の名前が付けられ、間違った値が割り当てられる原因になります。
[perl#15667]
· 長いヒアドキュメントターミネータは、短い入力行の読み取りに問題を引き起こす可能性があります。これは
修正されました。クラッシュが発生する可能性は低いと思われます。このバグは
3.000 年前、ヒアドキュメントが Perl XNUMX で導入されました。
· 「split」で「split /^/」を「split /^/m」のように扱う最適化を行ったところ、残念なことに
「split /\A/」を「split /^/m」のように扱うことによる副作用ですが、これはそうすべきではありません。
これは修正されました。(ただし、「split /^x/」は次のように動作しないことに注意してください。
「split /^x/m」もバグと考えられており、将来修正される予定です。
バージョン。) [perl #122761]
· あまり知られていない「my Class $var」構文(フィールドと属性を参照)は混乱を招く可能性がある
「use utf8」のスコープ内で、「Class」が値にLatin-1を含む定数である場合
文字。
· Hash::Utilまたは「Internals::SvREADONLY」による値のロックとロック解除は、
元々読み取り専用だった値には影響しません。以前は、このような
値が大きすぎると、クラッシュ、ハング、その他の異常な動作が発生する可能性があります。
· 正規表現内の一部の未終了の「(?(...)...)」構造はクラッシュするか、
または誤ったエラーメッセージを表示します。「/(?(1)/」はその一例です。
· 「pack "w", $tied」はFETCHを2回呼び出さなくなりました。
· 「($x, $z) = (1, $y)」のようなリスト割り当ては、$xと$yが
「foreach」によってエイリアスされます。
· 「/ (?{(^{})/」のような構文エラーのあるコードブロックを含むパターンは、
デバッグ ビルドでアサーションがハングしたり失敗したりします。現在はエラーが発生します。
· デバッグを有効にして「sort」を解析するときのアサーション エラーが修正されました。 [パール
[#122771] 。
· "*a = *b; @a = split //, $b[1]" は不正な読み取りを行い、ジャンクな結果を生成する可能性があります。
· "() = @array = split" の先頭の "() =" がオプティマイザを混乱させなくなりました
限界が 1 であると仮定します。
· 致命的な警告によって構文エラーの出力が妨げられることはなくなりました。[perl #122966]
。
· VMSでのNaN doubleからlong-doubleへの変換エラーを修正しました。quiet NaN(および
(Alpha ではなく Itanium の場合) NaN ではなく負の無限大が生成されました。
· 「make distclean」が誤って一部のファイルを残す問題を修正しました。
[perl #122820] 。
· AIX は、「getsockopt」の長さを正しく設定するようになりました。 [パール #120835]
. [cpan #120835]
. [cpan #91183]
。
· 正規表現コンパイルの最適化フェーズは「永遠に」実行され、すべての
特定の状況下でのメモリ不足を修正しました。[perl #122283]
。
· テストスクリプト t/op/crypt.t デフォルトのアルゴリズムがSHA-256アルゴリズムの場合、
失敗を返すのではなく、無効にします。[perl #121591]
。
· 共有配列のサイズを設定するときに発生する off-by-one エラーを修正しました。[perl #122950]
。
· コンパイル中にPerlが無限ループに入る可能性があるバグを修正しました。
特に、 while(1)サブリスト内では、 例えば
sub foo { () = ($a, my $b, ($c, do { while(1) {} })) }
このバグは5.20.0で導入されました[perl #122995]
。
· Win32では、変数が擬似プロセス内で「ローカル」化され、その後フォークされた場合、
子擬似プロセスで元の値を復元するとメモリ破損が発生し、
子疑似プロセス (および OS プロセス) がクラッシュします。[perl #40565]
。
· "^**"フィールドを持つフォーマットで"write"を呼び出すと、"sv_chop()"でパニックが発生する可能性がある。
引数が不十分であったか、フィールドを埋めるために使用された変数が空であった場合。
[perl #123245] 。
· 非ASCII字句サブ名がエラーで表示される場合、末尾にジャンク文字が付かないようにしました。
メッセージ。
· "\@"サブルーチンプロトタイプは括弧で囲まれた配列をフラット化しません(
各要素への参照ではなく、配列自体への参照を受け取ります。[perl #47363]
。
· Cスタイルの「for」ループ以外の何も含まれていないブロックはスタックを破損する可能性があります。
ブロック外のリストの要素が失われたり、要素が上書きされたりする。
「map { for(...){...} } ...」や「do {
for(...){...} }"。[perl #123286] 。
· 「scalar()」は左辺値のコンテキストを伝播するようになったため、「for(scalar($#foo)) { ... }」は
$_ を通じて $#foo を変更します。
· 「qr/@array(?{block})/」は「ARRAY の奇妙なコピー」で終了しなくなりました。 [パール #123344]
。
· ネストされた名前付きサブルーチン内の「eval '$variable'」は、グローバル変数を参照することがありました。
スコープ内に字句変数がある場合でも変数になります。
· perl 5.20.0では、「sort CORE::fake」で、「fake」はキーワード以外のものになります。
最後の 6 文字を切り捨て、その結果をソート サブ名として処理し始めました。
「CORE::fake」をソートサブ名として扱う以前の動作が復元されました。
[perl #123410] 。
· 「use utf8」以外では、1文字のLatin-XNUMX字句変数は許可されません。
エラーメッセージ「グローバル$fooは使用できません...」は、
変数名。
· 存在しないハンドルに対する「readline」により、「${^LAST_FH}」が参照を生成する原因となっていた。
未定義のスカラー (またはアサーションに失敗します)。これで "${^LAST_FH}" は未定義になります。
· void コンテキストの "(...) x ..." は、左側の引数にスカラーコンテキストを適用するようになりました。
現在のサブルーチンが呼び出されたコンテキストの代わりに。[perl #123020]
。
知られている 問題
· Visual C 6でコンパイルされたPerlでNaNを「パック」すると、正しく動作せず、
テストの失敗 t/op/infnan.t. [perl 125203]
· PerlがどのUnicodeでも適切に動作するように再コンパイルできるようにすることを目標とする。
バージョン。ただし、Perl 5.22では、最も古いバージョンはUnicode 5.1(現在は
7.0)。
· EBCDIC プラットフォーム
· 「cmp」(および「sort」)演算子は必ずしも正しい結果を返すわけではない
両方のオペランドがUTF-EBCDICでエンコードされた文字列で、ASCIIとUTF-EBCDICが混在している場合
および/または制御文字、および他の文字。
· 「tr///」(および「y///」)の文字変換演算子に「\N{...}」が含まれる範囲
正規表現パターン内の同等の範囲とは異なる方法で扱われます。
範囲内の値はすべて次のように扱われるべきであるが、実際にはそうではない。
ネイティブコードポイントではなく、Unicodeコードポイントです。(「バージョン8正規表現」
perlre では、どのように動作するかの詳細が説明されています。
· エンコードとエンコーディングはほとんど壊れています。
· コアに同梱されている多くの CPAN モジュールでは、テストに失敗します。
· 「U0」形式の「pack」/「unpack」は正常に動作しない可能性があります。
· 以下のモジュールは、このバージョンのPerlではテストに失敗することが判明しています。
多くの場合、パッチが提出されているので、近いうちに新しいリリースがリリースされる予定です。
· B::Generate バージョン 1.50
· B::Utils バージョン 0.25
· Coro バージョン 6.42
· ダンサーバージョン 1.3130
· Data::Alias バージョン 1.18
· Data::Dump::Streamer バージョン 2.38
· Data::Util バージョン 0.63
· Devel::Spy バージョン 0.07
· インボーカー バージョン 0.34
· Lexical::Var バージョン 0.009
· LWP::ConsoleLogger バージョン 0.000018
· メイソン バージョン 2.22
· NgxQueue バージョン 0.02
· パドレ バージョン 1.00
· パース::キーワード 0.08
死亡記事
ブライアン・マッコーリーは8年2015月XNUMX日に亡くなりました。彼はUsenet、Perl Monks、そして
他のPerlフォーラムにも参加し、ニックネームNOBULLでCPANにいくつか貢献しました。
Perl FAQ。彼はほぼ毎回YAPC::Europeに参加し、実際に
YAPC::Europe 2006とQAハッカソン2009。彼の機知と複雑なシステムへの情熱
彼のボードゲームへの愛情は特に顕著で、多くのPerlファンは
ブライアンと一緒に Fluxx やその他のゲームをプレイした思い出。彼がいなくなると寂しくなります。
謝辞
Perl 5.22.0は、Perl12および
590,000人の著者からの2,400のファイルにわたる約94行の変更が含まれています。
自動生成されたファイル、ドキュメント、リリースツールを除いて、およそ
370,000の.pm、.t、.c、および.hファイルへの1,500行の変更。
Perlは、活気に満ちたユーザーコミュニティのおかげで、XNUMX年もの間繁栄し続けています。
と開発者。 以下の人々が改善に貢献したことが知られています
Perl 5.22.0になりました:
アーロン・クレイン、アビジット・メノン・セン、アビゲイル、アルベルト・シモエス、アレックス・ソロヴェイ、アレックス・ヴァンディバー、
アレクサンドル チョルニー、アレクサンドル (ミッドナイト) ジュセ、アンドレアス ケーニッヒ、アンドレアス フォーゲレ、アンドリュー
フレッシュ、アンディ・ドハティ、アンソニー・ヘディング、アリストテレス・パガルツィス、ブライアン・D・フォイ、ブライアン・フレイザー、
チャド・グラナム、クリス・'ビンゴズ'・ウィリアムズ、クレイグ・A・ベリー、ダグフィン・イルマリ・マンサカー、ダニエル
ドラガン、ダリン・マクブライド、デイブ・ロルスキー、デヴィッド・ゴールデン、デヴィッド・ミッチェル、デヴィッド・ウィーラー、ドミトリ
チホノフ、ダグ・ベル、E.チョロバ、エド・J、エリック・ハーマン、クリュソストモス神父、ジョージ・グリア、
グレン・D・ゴールデン、グラハム・ノップ、H.メリジン・ブランド、ヘルベルト・ブルーヌング、ヒューゴ・ファン・デル・サンデン、ジェームズ
E キーナン、ジェームズ マッコイ、ジェームズ ラパス、ジャン デュボア、ヤルコ ヒエタニエミ、ジャスミン ガン、ジェリー
D. ヘデン、ジム クロミー、ジョン グッドイヤー、カフカ、カレン エスリッジ、カール ウィリアムソン、ケント
フレドリック、kmx、ラホス・ベレス、レオン・ティマーマンス、ルーカス・マイ、マチュー・アーノルド、マシュー・ホースフォール、
マックス・メシェイン、マイケル・バンク、ニコラス・クラーク、ニールス・ティキエ、ニコ・ティニ、ノーマン・コッホ、
オリヴィエ・メンゲ、ピーター・ジョン・アクラム、ピーター・マルティーニ、ペトル・ピサックス、フィリップ・ブリュア(書籍)、
ピエール・ボゴシアン、ラファエル・ガルシア=スアレス、ランディ・スタウナー、レイニ・アーバン、リカルド・シグネス、ロブ
ヘルツ、ロスティスラフ・スクドノフ、ソーヤーX、白方健太郎、シュロミ・フィッシュ、シーシュポス、スレイヴン
レジック、スマイラーズ、ステフェン・ミューラー、スティーブ・ヘイ、サリバン・ベック、サイバー、タデウシュ・ソックスニエルツ、トーマス
シブリー、トッド・リナルド、トニー・クック、ヴィンセント・ピット、ウラジミール・マレック、ヤロスラフ・クズミン、イブ・オートン、
AEvar Arnfjoer` Bjarmason。
上記のリストは、から自動的に生成されるため、ほぼ確実に不完全です。
バージョン管理履歴。 特に、(非常に)の名前は含まれていません
感謝)Perlバグトラッカーに問題を報告した寄稿者。
このバージョンに含まれる変更の多くは、に含まれるCPANモジュールに起因します。
Perlのコア。 Perlの繁栄を支援してくれたCPANコミュニティ全体に感謝します。
Perlのすべての歴史的貢献者のより完全なリストについては、以下を参照してください。 作者
Perlソースディストリビューションのファイル。
レポート作成 バグ
バグだと思うものを見つけた場合は、最近投稿された記事を確認してください。
comp.lang.perl.miscニュースグループとperlバグデータベース。 そこには
情報は次の場所でもご覧いただけますhttp://www.perl.org/>、Perl ホームページ。
報告されていないバグがあると思われる場合は、に含まれているperlbugプログラムを実行してください。
あなたのリリース。 バグを小さいながらも十分なテストケースに切り詰めてください。 あなたのバグ
レポートは、「perl-V」の出力とともに、に送信されます [メール保護] ようにするには
Perl移植チームによって分析されました。
報告しているバグにセキュリティ上の影響がある場合は、
公にアーカイブされたメーリングリストに送信してから、に送信してください
[メール保護]。 これは、閉じられたサブスクリプションのアーカイブされていないメーリングを指します
影響の評価を支援できるすべてのコアコミッターを含むリスト
問題の解決策を見つけ、パッチのリリースを調整するのに役立ちます
Perlがサポートされているすべてのプラットフォームで問題を軽減または修正します。 だけお願いします
モジュールを個別に使用するのではなく、Perlコアのセキュリティ問題にこのアドレスを使用します
CPANで配布されます。
onworks.netサービスを使用してオンラインでperl5220deltaを使用する