• 締切済み

Perlの超初心者です。

Perlの超初心者です。 mac osXを使っています。テキストエディットで、#! /usr/bin/perl print "hello world!\n";と書いてperl-test.plと保存しました。そしてターミナルを起動してperl-test.plとタイプしたのですが、-bash: perl-test.pl: No such file or directoryとなってしまいます。 試しにターミナルでperl -le "print 'hello world';"とタイプするとhello worldとかえってきました。 perl-test.plはfinderのデスクトップに保存してあります。いったいどうすればperl-test.plのファイルを実行できるのですか? 教えて下さい。よろしくお願いします。

みんなの回答

  • nora1962
  • ベストアンサー率60% (431/717)
回答No.5

「#! /usr/bin/perl print "hello world!\n";」は一行に書いてあるのですか? でしたら #!/usr/bin/perl print "hello world!\n"; と2行にしてみて、「./perl-test.pl」を実行してみたらどうなりますか? (該当ファイルに実行モードが付与されているのが前提ですが)

bou-2212
質問者

お礼

ご回答誠にありがとうございます。また、お礼を申し上げるのが遅れてしまい申し訳ありません。#! /usr/bin/perl print "hello world!\n"は一行にあった訳ではごさいません。一応改行してあります。すいません、ややこしい書き方で。 当時は超超初心者であったため、別のディレクトリにファイルを置きながら、./perl-test.plを実行していました。実行できなかったのはそのためです。 unix/linuxの本を読んだり教えてもらったりしてなんとか解決できました。 どうもご回答ありがとうございました。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.4

「うまくいかない」ときに, 単に「うまくいかない」というのはダメな表現です. これでは相手に「何が起きているのか」が伝わりませんよね. 単に「うまくいかない」とするのではなく, ・どのような操作をしたのか ・それによってどのようなことが起きると期待したのか ・実際にはどのような結果が得られたのか をきちんと書くようにしましょう. もとの質問文では (完全ではないが) ちゃんとできてるのになぁ.

  • Suzi
  • ベストアンサー率38% (130/334)
回答No.3

 取り急ぎ、ご回答しますと、MacOS XにはあらかじめApacheとPHPがインストールされています。  その方法は、 1) システム環境設定 → 共有 → Web 共有 にチェックを入れます。 2) それによってそのMac本体内での簡易サーバーが構築されました。 3) それらのサーバー、つまり、htmlやPHP、Perl(cgi)が稼働するフォルダは、↓ 4) HDD → ユーザー → ホーム(家のアイコンで任意のフォルダ名) → サイト 5) そのフォルダ「サイト」がサーバーになりその中に入れたhtml等を見ることができます。 6) デフォルトで、index.htmlがあると思います。 7) このサーバにアクセス、つまり表示させるのは、ブラウザー(Safariとか)を立ち上げ、urlは共通的に「http://127.0.0.1/」、またはhttp://127.0.0.1/index.html」です。 8) Perl(cgi)は残念ながら、そのままでは稼働しないです。  その設定は、↓以下のURL などを参照しながら自力設置するのがベターと思います。  情報が古いですが、基本は同じだと思います。 9) PHPはそのまま動きますので、perl-test.pl を perl-test.php にして、そのフォルダに入れて、内容を <?php print 'hello world'; ?> にして、safariとかで、http://127.0.0.1/perl-test.php にアクセスすれば表示されると思います。  因に、その「サイト」へのターミナルのパスは、ターミナルを立ち上げたら Desktop Downloads Movies Pictures Sites Documents Library Music Public と表示されていたら、 cd ./Sites 改行 次にそのフォルダ内を表示させる ls 改行 Perlを稼働するように設定していなければ、仮にそこに perl-test.pl があっても稼働しませんです。 設定してあれば、そのまま、./perl-test.pl 改行 とすれば、hello world とターミナルに表示されます。 上手く行くことを願っています。

参考URL:
http://homepage1.nifty.com/glass/tom_neko/web/web_cgi_osx.html
bou-2212
質問者

お礼

こんにちは。ご回答誠にありがとうございます。URLも教えて頂いてありがとうございました。 教えて頂いた事と、URLを参考にして試してみます。上手く行きましたら再度お礼申し上げますので、暫しお待ちくださいませ。

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.2

(Finderの)デスクトップ: → $HOME/Desktop で、何も設定してなければ、bashのPATHには含まれていません。 実行属性: → ls -l とすると、 -rw-r--r-- とか頭についてるけど、その中に x という文字があるか、あるならどこか。 前から4文字目にxが無いなら、自分についての実行権限がない。 実行方法: ・perlの引数にスクリプトを指定する。 絶対パスで指定 perl $HOME/Desktop/perl-test.pl 相対パスで指定(カレントディレクトリが$HOME) perl Desktop/perl-test.pl 相対パスで指定(カレントディレクトリがデスクトップ) perl perl-test.pl perl ./perl-test.pl ・実行属性を付けて、コマンドとして実行する 絶対パスで指定 $HOME/Desktop/perl-test.pl 相対パスで指定(カレントディレクトリが$HOME) Desktop/perl-test.pl 相対パスで指定(カレントディレクトリがデスクトップ) ./perl-test.pl (何も設定してなければ perl-test.pl だけではだめ。カレントディレクトリは探索外) PATHにデスクトップを追加した上で perl-test.pl デスクトップをPATHに追加するのは、お勧めできない。 Perlの練習するなら、ホームの下に練習用のディレクトリを作ってそこでやった方がいいと思う。 あと、ここら辺の実行方法については、UnixやLinuxの本や解説サイトが参考になる。 Windowsで解説しているものは使わないように。

bou-2212
質問者

お礼

こんにちは。ご親切に解答して頂いて誠にありがとうございます。私のやり方がまずかったと思うのですが、教えて頂いたとおりにやってみてもどうも上手く行きません。なのでもう少しwebや書籍を調べてみようとおもいます。上手くいきましたら再度お礼申し上げますので暫しお待ちくださいませ。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

これは Perl とは全然関係なく, MacOS X (あるいは Unix) のスキルの問題なんだろうなぁ. というわけで MacOS X は触ってませんが Unix 全般の話で: Unix では, ターミナルから「perl-test.pl」と入力すると環境変数 $PATH に指定されたディレクトリ (そのようなディレクトリは「パスが通っている」といいます) から perl-test.pl というファイルを捜し, 「実行属性がついていれば」実行します. ということで, とりあえず以下の点に気を付けてください: ・「finder のデスクトップ」にパスが通っていますか? → Yes: 次に進む, No: 「PATH=$PATH:『finder のデスクトップ』」と入力してパスを通す (「finder のデスクトップ」がなんであるかは知りません) ・その perl-test.pl に実行属性はついていますか? → Yes: さらに次に進む, No: chmod を使って実行属性をつける ・Perl は /usr/bin にありますか? → Yes: 動くはずなんだけどなぁ, No: 先頭行の /usr/bin/perl を「Perl の場所」にあわせて適宜修正する 念のため注意しておくと, MS-DOS (や Windows) などとは違い, 通常 Unix ではカレントディレクトリにパスは通っていません (もちろん設定すれば通すことはできるが, そうしないことが推奨されている). なので, カレントディレクトリに perl-test.pl というファイルがあったとしても (そして実行属性がついていたとしても) 単に「perl-test.pl」と入力するだけでは実行できません. そのような状況のときには, 「./perl-test.pl」と先頭に「./」をつけて明示的に「カレントディレクトリにあるファイルを実行する」ことが必要になります.

bou-2212
質問者

お礼

こんにちは。ご回答どうもありがとうございます。ご丁寧に教えて頂いて感謝しておりますが、私のunixに関する知識不足のため、まだ上手く行きません。なのでもうちょっと調べてみます。 上手くいきましたら再度お礼申し上げますので、暫しお待ち下さいませ。