Perlで「Can't locate parent.pm」が発生する場合の対処
Perlのプログラムを実行したところ、
Can't locate parent.pm in @INC (@INC contains: ~
というエラーが発生しました。
具体的には、とあるMovable Typeのプラグインをインストールして使っていたのですが、正常に動作していないようなのでシステムログを確認したところ、冒頭のエラーが残っていました。
ということで、原因と対処方法について紹介します。
1.parent.pmとは
parent.pmは、
use base 'XXX';
というクラス継承のシンタックスを
use parent 'XXX';
と、モダンに書けるようにするためのモジュールです。
調べたところ、Perl5.8系の場合、parent.pmは標準モジュールではないため、このモジュールがない状態で、
use parent 'XXX';
の行を実行すると、冒頭のエラーが発生したようです。
私が使っているさくらインターネットでPerlのバージョンを調べたところ、v5.8.9でした。
2.対処方法
5.8系の場合、CPANからparent.pmをインストールする必要があります。
サーバのroot権限があれば次のコマンドでインストールできると思います。
sudo perl -MCPAN -e 'install parent'
共有サーバなど、root権限がない場合でも「Authen::Captcha をインストールして Captcha Plugin を利用する(CPAN による perl モジュールのインストール)」で示す手順でインストールして、プログラムを書き換えれば動作するはずです。
もしやり方が分からない場合は、ちょっと乱暴ですが以下の手順で大丈夫だと思います。
CPANのページに移動し、「parent」を入力して「CPAN Search」をクリック。
「parent」をクリック。
「Source」を右クリックして、FIrefoxであれば「名前をつけてリンク先を保存」を選択。あるいはクリックした次のページのソースをparent.pmというファイル名で保存してください。
作成またはダウンロードしたparent.pmを、Perlプログラムが参照するパスにアップロードすればOKです。
- Perlでansibleライブラリを作成する方法
- perlのCPANモジュールからRPMを作成する方法
- Perlで「Subroutine permission redefined at~」を抑止する方法
- XML::Simpleのインストールでエラーになる場合の対処
- YAML::Tinyで「YAML::Tiny found bad indenting in line~」というエラーになる場合の対処
- Perlの正規表現を使って文字列をまとめて取得する方法
- Perlのハッシュでキーの有無を調べる方法
- perlで配列の途中の要素を削除する方法
- YAML::Tinyでコロンを利用する方法
- Perlで改行コードがCRのファイルを読み込む方法
- Perlで「Possible precedence issue with control flow operator」という警告の対処
- PerlのLWPで「Can't verify SSL peers without knowing which Certificate Authorities to trust」というエラーになったときの対処
- Perl+Windowsでファイルを再帰的にリネームする方法
- Perlプログラムの中でファイルの一部を書き換える方法
- Perlの「Bareword "%s" not allowed while "strict subs" in use~」というエラーについて