Perlには長い歴史の中で様々なPerl本体の機能追加や標準モジュールの追加、アップデートが行われてきました。
新しい機能を使うためには当然新しいバージョンのPerlが必要になりますが、世の中の全ての環境に常に最新バージョンのPerlがインストールされているわけでは有りません。
また、スクリプトを実行する前に、"perl -v"とコマンドをたたいて人間が事前にバージョンをチェックしたとしても、完全な保証にはなりません。
=======================================
しかし、心配することはありません。Perlにはスクリプト側で実行するPerlのバージョンをチェックする仕組みがちゃんと用意されています。
スクリプトの中で、以下の様にバージョンを指定するとPerl自身のバージョンチェックが行われます。
use VERSION;
例えば、"use 5.014;"と書けば、Perl 5.14.0以上でないと、そのスクリプトは実行できません。"use 5.014;"と記述されたスクリプトをPerl 5.12.3上で実行すると、下記の様なエラーメッセージが出力されて、スクリプトの実行は停止します。
Perl v5.14.0 required--this is only v5.12.3, stopped at version.pl line xxx.
BEGIN failed--compilation aborted at version.pl line xxx.
エラーメッセージに書かれている通り、このチェックはコンパイル時に実行されるので、スクリプトは一切実行されない状態で終了します。
気をつけないといけないのは、バージョンの記述方法がちょっと分かりづらいところがあるので、ハマリやすいポイントが有ります。
Perl 5.14.0を指定する時は、上記の様に"use 5.014;"と記述しますが、間違って、"use 5.14;"と記述すると、Perl 5.140.0以上を指定した事になってしまいます...が、当分そんなバージョンのPerlがリリースされる事も無いので、親切に下記の様にエラーメッセージに"v5.14.0の事じゃない?"と出力されますので、すぐに気がつくでしょう。
Perl v5.140.0 required (did you mean v5.14.0?)--this is only v5.14.1, stopped at version.pl line xxx.
BEGIN failed--compilation aborted at version.pl line xxx.
=============================================
さて、ここで一度話題を変えます。
Perlはアップデートの際には、後方互換性を非常に重要視します。
そのため、新しいキーワードを導入する際には、安易に新しいキーワードが導入される事で過去に作られたスクリプトが誤動作する事を防止する仕組みが用意されています。
それがfeatureプラグマです。
例えば、Perl 5.10.0以降で導入されたsay関数を使うためには、以下の様に指定します。
use feature 'say';
ほかにもPerl 5.10.0で導入されたgiven - when機能を有効にする「switch」、state変数を有効にする「state」が有ります。
これらの三つの機能をまとめて、「use feature ':5.10';」と指定することで有効にする事もできます。
また、Perl 5.14.0からはあらかじめ全ての文字列をUnicodeの文字列として取り扱うための「unicode_strings」も導入されました。
=============================================
また、話をuse VERSIONに戻します。
先ほど説明した、featureプラグマですが、use VERSIONとした時にも同じ効果が得られます。
つまり、「use 5.010;」と指定すれば、「use feature ':5.10';」としたのと同じ効果が得られますし、「use 5.014;」と指定すれば、「use feature qw(switch say state unicode_strings)」としたのと同じ効果が得られます。
また、更にuse関数で、Perl 5.12.0以降を指定すると、「use strict;」としたのと同じ効果を得ることができます。
便利ですが、ちょっと分かりづらいですね。
この様に、Perl 5.14までは、バージョン番号を指定しおけば、指定した以降のバージョンで動作する事を期待する、という意味でしたが、将来的にはこの意味付けが変わるとの事です。
詳しくは以下のサイトにレポートを読んで下さい。