モジュールが標準モジュールか CPAN からインストールしたものかどうかわからなくなった時に調べる方法です。

Module::CoreList を使う

Module::CoreList というモジュールがあります。このモジュール自体は v5.8.9 から標準モジュール入りしています。以下のように使います。

$ perl -MModule::CoreList -e 'print Module::CoreList::first_release("Encode")'
5.007003

存在しないモジュールを指定した場合は undef が返されます。

$ perl -MModule::CoreList -e 'print "will not be printed." if (Module::CoreList::first_release("NoModule"))'

corelist コマンドを使う

Module::CoreList と基本的に同じことをやってくれますが、こっちの方がコマンドが短いので簡単です。

$ corelist Encode
Encode was first released with perl v5.7.3

-a オプションでバージョンの履歴を出せます。

$ corelist -a Encode
Encode was first released with perl v5.7.3
  v5.7.3     0.40
  v5.8.0     1.75
  v5.8.1     1.9801
  v5.8.2     1.9801
  v5.8.3     1.99
  v5.8.4     1.99_01
  v5.8.5     2.01
  v5.8.6     2.08
  v5.8.7     2.10
  v5.8.8     2.12
  v5.8.9     2.26
  v5.9.0     1.9801
  v5.9.1     1.99_01
  v5.9.2     2.09
  v5.9.3     2.14
  v5.9.4     2.18_01
  v5.9.5     2.23
  v5.10.0    2.23
  v5.10.1    2.35
  v5.11.0    2.37
  v5.11.1    2.37
  v5.11.2    2.38
  v5.11.3    2.39
  v5.11.4    2.39
  v5.11.5    2.39
  v5.12.0    2.39
  v5.12.1    2.39
  v5.12.2    2.39
  v5.12.3    2.39
  v5.13.0    2.39
  v5.13.1    2.39
  v5.13.2    2.39
  v5.13.3    2.39
  v5.13.4    2.39
  v5.13.5    2.40
  v5.13.6    2.40
  v5.13.7    2.40
  v5.13.8    2.40
  v5.13.9    2.42
  v5.13.10   2.42
  v5.13.11   2.42
  v5.14.0    2.42
  v5.14.1    2.42
  v5.14.2    2.42_01

こちらは存在しないモジュールを指定した場合は以下のような出力が得られます。

$ corelist -a NoModule
NoModule was not in CORE (or so I think)