PERLのインストールの際、インストール先をOSの入っているドライブにしなければ正常に機能しないのでしょうか?WIN98でPERLをインストールすると自動的にDドライブにインストールされてしまいます。そしてごく簡単なスクリプトを実行してみてもcan't find [ファイル名」,no such file ~としか表示されません。
またファイルを保存する場所はどこでもいいのでしょうか? ちなみにperl -vでは正常にバージョン情報など見ることはできます。
なにぶん初心者なもので、うまく説明できているかどうか解りませんが、よろしくお願いします。

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

A 回答 (2件)

Perlを実行しているディレクトリと、スクリプトファイルの場所が子となっていて、かつパスを指定していないスクリプトを指定したのではないかとおもいます。


「perl 」と打ち込んで、実行しようとしているスクリプトファイルをDOS窓にドラッグしても動きませんか?
    • good
    • 0
この回答へのお礼

ありがとうございました。おかげさまで動きました。

お礼日時:2001/04/05 10:43

スクリプトのパスに長い名前や、日本語のフォルダ名


が含まれていたりしませんか? 
    • good
    • 0

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

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

Qpp (Perl Packager) 実行時のCan't find par loader

Windows-XP + ActivePerl v5.8.8 の環境です。
PARを見よう見まねでインストールしてから、ppを実行しようとすると、
--------------------------
D:\Develop\Perl>pp ppp.pl
Can't find par loader at C:/Perl/site/lib/PAR/Packer.pm line 101.
--------------------------
のようなエラーが出ます。
インストール方法等、何か抜けたものがあるでしょうか。
対処方法等、ご存知の方、よろしくお願いいたします。

ppp.pl内は次のような単純な内容です。
D:\Develop\Perl>type ppp.pl
#!perl
print "Hello, world!n";
------------------------------
C:/Perl/site/lib/PAR/Packer.pm のline 101行目は次のような内容★でした。
sub set_options {

$self->{parl} ||= $self->_can_run("parl$Config{_exe}")
or die("Can't find par loader"); ←★


-----------------------------------------
<↓ppが使えるようになると思って、やった手順>
1)ActivePerlは、サイト(http://www.activestate.com/store/activeperl/download)から直接インストール。
2)PARをCPAN(http://search.cpan.org/dist/PAR/lib/PAR.pm)からDLしたtar.gzファイルを使ってインストール
2-1)PAR-0.956.tar.gz をtar解凍
2-2)C:\Perl\dl\PAR-0.956>perl Makefile.PL 実行でMakefile作成
2-3)できたMakefileを使って、C:\Perl\dl\PAR-0.956>nmake 実行
2-4)続いて、C:\Perl\dl\PAR-0.956>nmake install 実行
2-5)C:\Perl\bin 内に、pp.batが出来たことを確認

以上です。よろしくお願いします。

Windows-XP + ActivePerl v5.8.8 の環境です。
PARを見よう見まねでインストールしてから、ppを実行しようとすると、
--------------------------
D:\Develop\Perl>pp ppp.pl
Can't find par loader at C:/Perl/site/lib/PAR/Packer.pm line 101.
--------------------------
のようなエラーが出ます。
インストール方法等、何か抜けたものがあるでしょうか。
対処方法等、ご存知の方、よろしくお願いいたします。

ppp.pl内は次のような単純な内容です。
D:\Develop\Perl>type ppp.pl
#!perl
print...続きを読む

Aベストアンサー

私の環境で試してみたところ
ppmで3つのモジュールがインストールされ、
pp.batがd:\usr\local\site\bin\pp.batに生成されました。

ふつうはsite\binにpathは通ってないかと思いますので、もしかしたらuninstallされなかったc:\perl\binのpp.batを実行しているということはないでしょうか?

ちなみにインストールされたモジュール
・PAR 0.90
・PAR-Dist 0.21
・Module-ScanDeps 0.66

Qperl上からfindを使い検索した結果を、変数に挿入したい

perl上からfindを使い検索した結果を、変数に挿入したい

perlからsystemを使い、Linuxのfindコマンドでファイルを検索した際に、

system 'find / abcde-*.tar.gz';

で検索はできるのですが、
結果の値(検索した後最後に出るファイル名の事です)を変数に入れたいのです。

どなたか教えていただけないでしょうか?

尚、検索範囲(全体)の中に該当のファイルは1つしか常に存在しないようになっています

Aベストアンサー

> find / abcde-*.tar.gz

おかしくないですか?
これって、/(ルート)以下の全てと、カレントディレクトリにある"abcde-*.tar.gz"が対象になります。
/以下の "abcde-*.tar.gz"という名前を探すなら
find / -name "abcde-*.tar.gz"
だと思うんですが。
それとも、私の知らない独自のfindなのでしょうか。

> ・・・・・ってfind: /lost+found: Permission denied
> と出てしまいますな・・・・・・・

特権ユーザーで実行していなければ、実行時のユーザーの権限ではアクセスできないファイルやディレクトリがあります。
そういったものに当っただけです。/から全検索すれば、当り前に発生します。
そういうファイルやディレクトリが対象外になるだけで、そのまま検索は続きます。
このメッセージは標準エラー出力に出力されるので、qxや`やパイプラインからの入力には入ってきません。(明示的に取り込まないかぎり)


別解として、findコマンドを使わずに、File::Findモジュールを使う、というのがあります

> find / abcde-*.tar.gz

おかしくないですか?
これって、/(ルート)以下の全てと、カレントディレクトリにある"abcde-*.tar.gz"が対象になります。
/以下の "abcde-*.tar.gz"という名前を探すなら
find / -name "abcde-*.tar.gz"
だと思うんですが。
それとも、私の知らない独自のfindなのでしょうか。

> ・・・・・ってfind: /lost+found: Permission denied
> と出てしまいますな・・・・・・・

特権ユーザーで実行していなければ、実行時のユーザーの権限ではアクセスできないファイルやディレクトリがあり...続きを読む

QPerlファイルテスト演算子が正常に動作しません。

ファイルが存在すれば(処理1)、存在しなければ(処理2)を行うような以下のプログラムを書きました。
しかし、ファイルが存在しているにもかかわらず、(処理2)を行ってしまいます。
何か他に注意する点や、ここが問題では?と言うようなことがあれば教えてください。
ちなみにif (-f $file)とも書いてみましたが、同じ結果となりました。

if(-e $file){
(処理1)
}else{
(処理2)
}

Aベストアンサー

>なぜ上の階層で実行しているのでしょうか??
実行の仕方で異なるのかもしれませんね。
私も#4の方の言われるようにカレントディレクトリが想定しているものと違っているのだと思います。

use Cwd;
print getcwd;

というようなコードを実行することで
現在のカレントディレクトリを知ることができます。

ワークディレクトリで作業しなければならないということがあらかじめ決まっているなら
また、起動する時に
-x オプションでパスを指定することで、
指定したパスに移動してから、スクリプトを実行することができます。

また、プログラムが起動してからは、
chdir "パス";
で指定したディレクトリに移動します。
こういうことをしてから実行するのが良いかも知れませんね

QPerlスクリプトでメールを作成して送信

できるでしょうか?
ニフティプロバイダを使ってますがCGI制限があり
SMTPはできないそうです

Aベストアンサー

Perlスクリプトでも不可能ではないでしょうが、
メールの仕組みを理解していなければ無理でしょう。
(それ以外の問題もあります)

この場合、sendmailというのを利用するのが簡単なのですが、
niftyではsendmailが利用出来ません。
CGI制限の関係で無理かも知れないですね。

Qperlスクリプト $1 qq などについて。

以下のスクリプトについて質問があります。


$_ = $mail;
m/(^[a-zA-Z0-9\.\_\-]+\@[a-zA-Z0-9\.\_\-]+)/g;
$mail = $1;
if($in{mail} ne $mail){ &PrintError('メールアドレスは、半角文字で書いてください。'); }


このスクリプトなのですが、$mailの値を$_に代入し、$_の値をm/・・・ の部分で半角チェックしているのは分かるのですが、半角チェックされた後どうなっているのかがわかりません。また、$1 とはどうゆう意味なのでしょうか??ifより後の部分は分かっています。

また、

open(IN, "<database.dat");
while (<IN>) {
print;
}
close(IN);

の全体的な説明をお願いしたいです。ファイルハンドルという概念とopen,close両関数は分かっています。


最後に

print qq(Content-type: text/html; charset=Shift_JIS\n\n);

とあった場合の qq の意味が分かりません。

分かる方いらっしゃいましたらご教授くださると幸いです。よろしくお願いします。

以下のスクリプトについて質問があります。


$_ = $mail;
m/(^[a-zA-Z0-9\.\_\-]+\@[a-zA-Z0-9\.\_\-]+)/g;
$mail = $1;
if($in{mail} ne $mail){ &PrintError('メールアドレスは、半角文字で書いてください。'); }


このスクリプトなのですが、$mailの値を$_に代入し、$_の値をm/・・・ の部分で半角チェックしているのは分かるのですが、半角チェックされた後どうなっているのかがわかりません。また、$1 とはどうゆう意味なのでしょうか??ifより後の部分は分かっています。

また、

open(IN,...続きを読む

Aベストアンサー

>$1 とはどうゆう意味なのでしょうか?
その前のマッチングで( )でマッチした部分

>全体的な説明
"database.dat"
を一行毎読み出し、標準出力に表示します。
print;
は、
print $_;
と同じで、この場合の$_ は、<IN> で読み込まれた一行

>qq
qq( 中身 ) は、関数呼出(形?)による
"中身" とほぼ同じ


このカテゴリの人気Q&Aランキング

おすすめ情報