use VERSION
で明示的にオンにできるすべてのものを提供し、use feature
現在のバージョンが必要なものよりも低い場合は文句を言います。このドキュメントを参照してください: http://perldoc.perl.org/functions/use.html
VERSION が現在の Perl インタープリターのバージョンより大きい場合、例外が発生します。Perl はファイルの残りを解析しようとはしません。
[..]
use VERSION
また、プラグマで定義されているように、要求されたバージョンで使用可能なすべての機能を有効にし、要求されたfeature
バージョンの機能バンドルに含まれていない機能を無効にします。機能を参照してください。同様に、指定された Perl のバージョンが 5.11.0 以上の場合、 use strict と同様に、制限が字句的に有効になります。use strict
またはの明示的な使用 (それno strict
がuse VERSION
前にある場合でも)。どちらの場合も、feature.pm ファイルと strict.pm ファイルは実際には読み込まれません。
特定の関数の動作、正規表現修飾子、およびperldeltaで説明されているその他のもののように、変更されるだけのものは、これとは何の関係もありません。perl インタープリターにはないため、強制的に以前のバージョンの動作に戻すことはできません。
本番環境でこの問題が発生した例として、/r
正規表現の修飾子があります。これはPerl 5.14.0で導入されました。5.12 で使用すると、構文エラーが発生します。5.14 で実行するとすぐに、次のようなプログラムでも動作します。
#!/usr/bin/perl
use strict; use warnings;
my $foo = 'foobar';
print $foo =~ s/foo/oof/r;