【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?

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のファイルを実行できるのですか?
教えて下さい。よろしくお願いします。

A 回答 (5件)

「#! /usr/bin/perl print "hello world!\n";」は一行に書いてあるのですか?


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

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

お礼日時:2011/02/07 15:36

「うまくいかない」ときに, 単に「うまくいかない」というのはダメな表現です. これでは相手に「何が起きているのか」が伝わりませんよね.


単に「うまくいかない」とするのではなく,
・どのような操作をしたのか
・それによってどのようなことが起きると期待したのか
・実際にはどのような結果が得られたのか
をきちんと書くようにしましょう.
もとの質問文では (完全ではないが) ちゃんとできてるのになぁ.
    • good
    • 0

 取り急ぎ、ご回答しますと、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 にアクセスすれば表示されると思います。

 因に、その「サイト」へのターミナルのパスは、ターミナルを立ち上げたら

DesktopDownloadsMoviesPicturesSites
DocumentsLibraryMusicPublic

と表示されていたら、
cd ./Sites 改行
次にそのフォルダ内を表示させる ls 改行
Perlを稼働するように設定していなければ、仮にそこに perl-test.pl があっても稼働しませんです。
設定してあれば、そのまま、./perl-test.pl 改行 とすれば、hello world とターミナルに表示されます。

上手く行くことを願っています。

参考URL:http://homepage1.nifty.com/glass/tom_neko/web/we …
    • good
    • 0
この回答へのお礼

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

お礼日時:2010/09/22 09:30

(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で解説しているものは使わないように。
    • good
    • 0
この回答へのお礼

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

お礼日時:2010/09/22 09:21

これは 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」と先頭に「./」をつけて明示的に「カレントディレクトリにあるファイルを実行する」ことが必要になります.
    • good
    • 0
この回答へのお礼

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

お礼日時:2010/09/22 09:12

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