初めてCPANを使い、perl -MCPAN -e shellとしたのですが、国やCPAN サーバを聞いてこず、どうもうまくいっていないみたいです。もう一度perl -MCPAN -e shellとやるのですが設定をきいてきません。
もう一度やり直すにはどうすればいいでしょうか?

[root@localhost ~]# perl -MCPAN -e shell
Terminal does not support AddHistory.

cpan shell -- CPAN exploration and modules installation (v1.7601)
ReadLine support available (try 'install Bundle::CPAN')

このQ&Aに関連する最新のQ&A

A 回答 (8件)

-eは判りますよね? コマンドラインでperlを1行のコマンドで動かすオプションで


 詳しくは"perl ワンライナー" で検索してください
 
-MCPANについては
http://homepage3.nifty.com/hippo2000/perltips/CP …
MCPANというコマンドとかじゃなくて -MのオプションがCPAN
つまりCPANモジュールをワンライナーで使うときの記述って事です。

File::Findモジュールをワンライナーで使うなら
perl -MFile::Find -e 以下略
LWPなら
perl -MLWP::Simple -e 以下略
http://digit.que.ne.jp/work/index.cgi?Perl%E3%83 …
http://homepage3.nifty.com/hippo2000/perltips/lw …
    • good
    • 0
この回答へのお礼

ありがとうございます。CPANのモジュールを使うということだったんですね。
[root@localhost ~]# perldoc CPANとしたところ
CPANモジュールの使い方が分かりました。^^
perlをコマンドラインで使うときのオプションはどこのマニュアルを
みればよいでしょうか?探したのですが見つからなくて。
-pオプションなどあると思うのですが。

お礼日時:2006/10/14 14:17

http://www-06.ibm.com/jp/developerworks/linux/01 …
http://www-06.ibm.com/jp/developerworks/linux/03 …
や、それらのリンクページですかねえ?
 その辺りはあんまり詳しくないので、、、
    • good
    • 0
この回答へのお礼

ありがとうございます。^^
難しそうですね。

お礼日時:2006/10/14 22:10

1.# cp -rf /usr/lib/perl5/5.8.5/ /usr/lib/perl5/BK-5.8.5/  <=万一のためバックアップする



2. ブラウザなどで http://ftp.riken.jp/Linux/centos/4.4/os/i386/Cen … などから
perl-5.8.5-36.RHEL4.i386.rpm を /usr/local/src/ などにダウンロードする

3. (上記の状態だと)コマンドラインで/usr/local/src/ に移動してから
# rpm2cpio perl*.rpm | cpio -id
これで123456 blocks などと表示されたら
/usr/local/src/usr/lib/perl5/5.8.5以下に展開されているので CPAN.pmなどを元の場所にコピーしなおす
##以上で削除前の状態に戻るはずです。
http://www.atmarkit.co.jp/flinux/rensai/linuxtip …

それから本題のCPANですが、私は使ったことないですが cpan2rpm というものが有るそうです
http://centossrv.com/cpan2rpm.shtml
    • good
    • 0
この回答へのお礼

ありがとうございます。
上記の方法で試してみたところうまくいきました。^^
初期設定をきいてきたのですが、再試行ばかりで
国やサーバーリストを選ぶところへはいけませんでしたが、
手動でkddilabsを設定してダウンロードできるようになりました。

このMCPANというのはソフトか何かでしょうか?
man perlとしたところオプションになかったのですが。

お礼日時:2006/10/12 23:43

あ、う、、、


今度からはrmでなくmvコマンドでfile名を変えるようにしてください
失敗しても元に戻せますので、、、、、

そうですね~~ perl自体をインストールしなおしたほうがいいかなあ?
とりあえず以下を補足要求します
1、ディストリビューションとバージョン(例:Fedora Core5など)
2、Perlをどうやって入れたか?(OSインストール時のまま? yum? apt? それとも自分でコンパイル?)
    • good
    • 0
この回答へのお礼

ありがとうございます。
CentOS4.4を使っています。
Perlは何で入れたか自信がないです。^^;;
[root@localhost yum.repos.d]# rpm -qa perl
perl-5.8.5-36.RHEL4

yum remove perl-5.8.5-36.RHEL
としたところ相当な数のパッケージが依存関係で削除されてしまうので
perl-5.8.5-36.RHEL4のみアンインストールしてインストールしなおしたらいいのかと考えていますがどうでしょうか?

お礼日時:2006/10/12 03:27

#3で煮え切らない書き方してましたが、


こちらで試して確認しました。

#3のConfig.Pmと
/root/.cpan/ ディレクトリ
 の2つを、削除または移動してから
# perl -MCPAN -e shell
 してください。 これで最初からやり直しになります。
    • good
    • 0
この回答へのお礼

わざわざためしていただいたんですね。
ありがとうございます。^^

さっそくためそうとしたのですが、
あやまって rm /usr/lib/perl5/5.8.5/CPAN.pm
を削除してしまい、困ったことになってしまいました。rm /usr/lib/perl5/5.8.5/CPAN/*としたのですが同様のエラーがでます。perlそのものをアンインストールしたほうがいいでしょうか?

rm /usr/lib/perl5/5.8.5/CPAN.pm
rm: remove 通常ファイル `/usr/lib/perl5/5.8.5/CPAN.pm'? y
[root@localhost ~]# perl -MCPAN -e shell
Can't locate CPAN.pm in @INC (@INC contains: /usr/lib/perl5/5.8.5/i386-linux-thread-multi /usr/lib/perl5/5.8.5 /usr/lib/perl5/site_perl/5.8.5/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.4/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.3/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.2/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.1/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.0/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.5 /usr/lib/perl5/site_perl/5.8.4 /usr/lib/perl5/site_perl/5.8.3 /usr/lib/perl5/site_perl/5.8.2 /usr/lib/perl5/site_perl/5.8.1 /usr/lib/perl5/site_perl/5.8.0 /usr/lib/perl5/site_perl /usr/lib/perl5/vendor_perl/5.8.5/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.4/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.3/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.2/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.1/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.0/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.5 /usr/lib/perl5/vendor_perl/5.8.4 /usr/lib/perl5/vendor_perl/5.8.3 /usr/lib/perl5/vendor_perl/5.8.2 /usr/lib/perl5/vendor_perl/5.8.1 /usr/lib/perl5/vendor_perl/5.8.0 /usr/lib/perl5/vendor_perl .).
BEGIN failed--compilation aborted.

お礼日時:2006/10/11 03:30

cpan>o conf


で打つと1行目に
CPAN::Config options from /usr/lib/perl5/5.8.8/CPAN/Config.pm:

と出てくるはずですが、その
/usr/lib/perl5/5.8.8/CPAN/Config.pmを消すなり、
/usr/lib/perl5/5.8.8/CPAN/BK-Config.pmにmvしちゃうなりすれば出来るようですが、、、
    • good
    • 0

>変更してみたのですが、どうもうまくいかないみたいです。


URL的には ftp://ftp.kddilabs.jp/CPAN/ で間違っていませんので
・原因1.ネットワークの問題
・原因2.たまたまサーバーが死んでいた。or混み合っていた

うちでもftp://ftp.kddilabs.jp/CPAN/を指定していますが
install途中で何度も再試行がかかりますよ
試しにftp://ftp.kddilabs.jp/CPAN/を削除してから
存在しないURLを指定してinstall Bundle::SSHしてみたら
質問者さんのと同じようなメッセージになりました

ブラウザで ftp://ftp.kddilabs.jp/CPAN/ ちゃんとアクセスできることを確認してからやり直すか
また別のサーバーを選びなおしてみてはどうでしょうか?
    • good
    • 0
この回答へのお礼

ありがとうございます。
ブラウザでアクセスできるところは確かめました。
cpan> install Bundle::SSH
CPAN: Storable loaded ok
Going to read /root/.cpan/Metadata
Warning: Found only 0 objects in /root/.cpan/Metadata
となっているのが少し気になるのと、
初期設定で国やサーバーリストを聞かれなかったのが
気になるのですが、もう一度始めて接続したときのように初期設定をやり直すことはできないでしょうか?

お礼日時:2006/10/10 00:39

root@localhost ~]# perl -MCPAN -e shell



cpan>o conf オプション
で設定変更です
http://www.drk7.jp/MT/archives/000885.html
http://www.kozupon.com/perl/cpan.html <=の 2.
    • good
    • 0
この回答へのお礼

ありがとうございます。
変更してみたのですが、どうもうまくいかないみたいです。
urllist
ftp://ftp.kddilabs.jp/CPAN

途中までですがこういう感じになります。
cpan> install Bundle::Test
CPAN: Storable loaded ok
Going to read /root/.cpan/Metadata
Warning: Found only 0 objects in /root/.cpan/Metadata
CPAN: LWP::UserAgent loaded ok
Fetching with LWP:
ftp://ftp.kddilabs.jp/CPAN/authors/01mailrc.txt.gz
LWP failed with code[500] message[LWP::Protocol::MyFTP: Bad hostname 'ftp.kddilabs.jp']
Fetching with Net::FTP:
ftp://ftp.kddilabs.jp/CPAN/authors/01mailrc.txt.gz

Trying with "/usr/bin/links -source" to get
ftp://ftp.kddilabs.jp/CPAN/authors/01mailrc.txt.gz
ERROR at dump.c:188: Host not found

System call "/usr/bin/links -source "ftp://ftp.kddilabs.jp/CPAN/authors/01mailrc.txt. … > /root/.cpan/sources/authors/01mailrc.txt"
returned status 1 (wstat 256)
Warning: expected file [/root/.cpan/sources/authors/01mailrc.txt.gz] doesn't exist

Trying with "/usr/bin/wget -O -" to get
ftp://ftp.kddilabs.jp/CPAN/authors/01mailrc.txt.gz
--20:09:25-- ftp://ftp.kddilabs.jp/CPAN/authors/01mailrc.txt.gz
=> `-'
ftp.kddilabs.jp をDNSに問いあわせています... 失敗しました: 名前解決時の一時的な失敗.

お礼日時:2006/10/09 20:10

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qperl -MCPAN -e shellの意味は?

皆さんCPANをインストールする際

perl -MCPAN -e shell

とコマンドラインで入力されていると思いますが、
perl 以降の引数の中で 「shell」 について正確な意味を教えていただけませんでしょうか。

現在下記のものは理解しております。

■「-MCPAN」について
http://homepage3.nifty.com/hippo2000/perltips/CPAN.htm
※こちらの質問でも言及あり
http://oshiete.goo.ne.jp/qa/2460025.html

■「-e」について
http://www.rfs.jp/sb/perl/02/12.html

-eオプション以降にshellと入力するとどんな意味があるのでしょうか。
ご教授お願いいたします。

Aベストアンサー

perl -e "print 'Hello world!!';"
の例とまったく同じですが。
どの辺りがわからないのでしょう?あなたの考える「正確な意味」にたりないものを補足してもらえるとありがたいです。

・"とかが付いていない
→例では、空白などが混じっているので''でかこって一つの文字列にしていますが、「shell」だけなら一つの文字列になっているのでくくる必要はありません
・;とか付いてない。文法的に違うのでは?
→ブロック等の最後の;は省略できることになっています。
・shell って関数がマニュアルに載ってない。
→Perlはモジュールを使用することで、標準では無い関数を定義できます。

いろいろ省略しないで書けば
perl -MCPAN -e '&CPAN::shell();'
になります(まだ足りないかも)

Qperlc -MCPAN -e shellの設定を初期化する方法

Perlモジュールのインストールに perl -MCPAN -e shellで、 モジュールのインストールができませんでした。not connectのメッセージがたくさん表示されます。
このマシンは問題なくテストサーバーとして動いています。(インターネットにつながり、一応独自ドメインのサーバーとしても動作しております。)

perlc -MCPAN -e shellの設定を初期化する方法が知りたいです。(初期化すれば直るかどうかわかりませんが)

Aベストアンサー

同じ質問を探してあげました。

CPANについて
http://okweb.jp/kotaeru.php3?q=913408

QHTML(AJAX)-perl -DB(MySQL)-perl -HTML(AJAX)のデータの流れについて。

こんにちわ。
早速ですがよろしくお願いします。

タイトルの通り、画面入力のデータAをperlに投げてAを元にperl側でDBデータ取得(A')、A'を元の入力画面で処理結果として出力する事を考えています。
HTML(AJAX)-perl -DB(MySQL)-perl
↑ここまではできたのですが、最後の
perl -HTML(AJAX)
が出来ず、A'を入力画面に返す方法が分かりません。

ちなみに処理結果(A')をHTML側でYahoo! User Interfaceを使用してテーブル処理する予定です。

お恥ずかしながらプログラミングに関しての知識が乏しくて恐縮なのですが、どうぞよろしくお願い致します。

Aベストアンサー

Yahoo! User Interfaceで何をされるのかわかりませんが,
入力されたものを自動で処理し入力画面に出力させるだけでしたら,

use strict;
use CGI;
use CGI::Ajax;

my $cgi = new CGI;
my $pjx = new CGI::Ajax( 'exported_func' => \&perl_func );

print $pjx->build_html( $cgi, \&Show_HTML);

sub perl_func {
my $input = shift;
# DBに接続して,何か処理をする
my $output = "処理結果を代入";
return( $output );
}

sub Show_HTML {
my $html = <<EOHTML;
<HTML>
<BODY>
Enter something:
<input type="text" name="val1" id="val1"
onkeyup="exported_func( ['val1'], ['resultdiv'] );">
<br>
<div id="resultdiv"></div>
</BODY>
</HTML>
EOHTML
return $html;
}

で出てきます。
JavaScriptを自分で一行も書かないけど,Ajaxができてしまうという優れものです。

Yahoo! User Interfaceで何をされるのかわかりませんが,
入力されたものを自動で処理し入力画面に出力させるだけでしたら,

use strict;
use CGI;
use CGI::Ajax;

my $cgi = new CGI;
my $pjx = new CGI::Ajax( 'exported_func' => \&perl_func );

print $pjx->build_html( $cgi, \&Show_HTML);

sub perl_func {
my $input = shift;
# DBに接続して,何か処理をする
my $output = "処理結果を代入";
return( $output );
}

sub Show_HTML {
my $h...続きを読む

Qperl -p -i.bak -e "!a!A!g" *

をコマンドラインで実行すると
ファイルをオープンできないとのエラーが出ます。
ちなみに
perl -p -i.bak -e "!a!A!g" x.txt
ならばOKです。
ディレクトリ内のすべてのフィルに適用したいのですがどうしたらいいでしょうか?

WindowsXP に最新版のPerlを入れて実行しています。

Aベストアンサー

perl -i.bak -p -e "BEGIN{@ARGV=split('\0',`perlglob @ARGV`)}s/a/A/g" *
のようにしてみて下さい。
たびたびこういうことが必要なら、バッチとPerl を使って簡略化すればいいと思います。

Q(Perl CPAN) DBDがはいらない

「windows7 64bit に ActivePerl をいれています」

以下のプログラムを書いて実行したところ、エラーメッセージがでてきました。


Software error:

DBD::MySQL initialisation failed: Can't locate object method "driver" via package "DBD::MySQL" at C:/usr/local/lib/DBI.pm line 808.

Perhaps the capitalisation of DBD 'MySQL' isn't right. at C:/Apache2.2/htdocs/00001/shinki_data_sakusei.pl line 33.


これはつまり、DBD::MySQL がないよ!という意味であると思うのですが、ppmを起動してDBDにあたるモジュールをインストールして再実行してもまだ同じエラーがでます。どうしてもwindows7上で作らなければならないので、困っています。どこか参考になるサイトはないでしょうか?

=========================================
use strict;
use warnings;

# エラーをブラウザに表示
use CGI::Carp qw(fatalsToBrowser);

use utf8;
binmode STDIN, ':encoding(UTF-8)';
binmode STDOUT, ':encoding(UTF-8)';
binmode STDERR, ':encoding(UTF-8)';
use Encode;
use DBI;


# プログラム開始

# ユーザ名とパスワード
my $user = 'root';
my $pass = 'root';

#データベースへ接続
my $db = DBI->connect('DBI:MySQL:localhost', $user, $pass,);
if ( ! $db ){
print "エラー: $db->err $db->errstr\n";
}

# 命令
my $sth = $db->prepare( "SELECT * FROM login" );

# 実行
$sth->execute;

# 出力
while( my @row = $sth->fetchrow_array ){
print "@row\n";
}

#データベースから切断
$db->disconnect;


__END__

「windows7 64bit に ActivePerl をいれています」

以下のプログラムを書いて実行したところ、エラーメッセージがでてきました。


Software error:

DBD::MySQL initialisation failed: Can't locate object method "driver" via package "DBD::MySQL" at C:/usr/local/lib/DBI.pm line 808.

Perhaps the capitalisation of DBD 'MySQL' isn't right. at C:/Apache2.2/htdocs/00001/shinki_data_sakusei.pl line 33.


これはつまり、DBD::MySQL がないよ!という意味であると思うのですが、ppmを起動してDB...続きを読む

Aベストアンサー

ppmで DBD::mysql(DBD-mysql)はインストール済なんですね。
そうなのでしたら、おそらく

> my $db = DBI->connect('DBI:mysql:localhost', $user, $pass,);

のように、mysqlを小文字で指定していないのが原因でしょう。

Windowsではファイル名の大文字小文字は区別されませんが、
Perlとしてはモジュール名は大文字小文字が区別されます。


おすすめ情報