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件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
「#! /usr/bin/perl print "hello world!\n";」は一行に書いてあるのですか?
でしたら
#!/usr/bin/perl
print "hello world!\n";
と2行にしてみて、「./perl-test.pl」を実行してみたらどうなりますか?
(該当ファイルに実行モードが付与されているのが前提ですが)
ご回答誠にありがとうございます。また、お礼を申し上げるのが遅れてしまい申し訳ありません。#! /usr/bin/perl print "hello world!\n"は一行にあった訳ではごさいません。一応改行してあります。すいません、ややこしい書き方で。
当時は超超初心者であったため、別のディレクトリにファイルを置きながら、./perl-test.plを実行していました。実行できなかったのはそのためです。
unix/linuxの本を読んだり教えてもらったりしてなんとか解決できました。
どうもご回答ありがとうございました。
No.4
- 回答日時:
「うまくいかない」ときに, 単に「うまくいかない」というのはダメな表現です. これでは相手に「何が起きているのか」が伝わりませんよね.
単に「うまくいかない」とするのではなく,
・どのような操作をしたのか
・それによってどのようなことが起きると期待したのか
・実際にはどのような結果が得られたのか
をきちんと書くようにしましょう.
もとの質問文では (完全ではないが) ちゃんとできてるのになぁ.
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 にアクセスすれば表示されると思います。
因に、その「サイト」へのターミナルのパスは、ターミナルを立ち上げたら
DesktopDownloadsMoviesPicturesSites
DocumentsLibraryMusicPublic
と表示されていたら、
cd ./Sites 改行
次にそのフォルダ内を表示させる ls 改行
Perlを稼働するように設定していなければ、仮にそこに perl-test.pl があっても稼働しませんです。
設定してあれば、そのまま、./perl-test.pl 改行 とすれば、hello world とターミナルに表示されます。
上手く行くことを願っています。
参考URL:http://homepage1.nifty.com/glass/tom_neko/web/we …
こんにちは。ご回答誠にありがとうございます。URLも教えて頂いてありがとうございました。
教えて頂いた事と、URLを参考にして試してみます。上手く行きましたら再度お礼申し上げますので、暫しお待ちくださいませ。
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で解説しているものは使わないように。
こんにちは。ご親切に解答して頂いて誠にありがとうございます。私のやり方がまずかったと思うのですが、教えて頂いたとおりにやってみてもどうも上手く行きません。なのでもう少しwebや書籍を調べてみようとおもいます。上手くいきましたら再度お礼申し上げますので暫しお待ちくださいませ。
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」と先頭に「./」をつけて明示的に「カレントディレクトリにあるファイルを実行する」ことが必要になります.
こんにちは。ご回答どうもありがとうございます。ご丁寧に教えて頂いて感謝しておりますが、私のunixに関する知識不足のため、まだ上手く行きません。なのでもうちょっと調べてみます。
上手くいきましたら再度お礼申し上げますので、暫しお待ち下さいませ。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
プロシージャの戻り値を取得す...
-
perlからcを呼び出す
-
Perlソースコードをコンパイル...
-
例外処理のフローチャートの記...
-
Excel VBAでリンク切れをチェッ...
-
Excel VBAで、ユーザーフォーム...
-
erf(x)とerfc(x)のカタカナ読み...
-
これはパワハラになりますか?
-
vba 標準モジュールインポート...
-
シャープ製品JH-WB1821 と BCG...
-
Excel VBA 『Call』で呼び出す...
-
パワーポイントでマクロ(Auto_C...
-
ユーザー定義関数に#NAME?が返...
-
Access VBA標準モジュールにつ...
-
エクセルVBA クラスモジュール...
-
Excel VBA 定義されたプロージ...
-
PPMが起動しない
-
グラフのX,Y座標を取得したい
-
VBSがコンパイルエラーになりま...
-
Form間の値の渡し方
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Perlソースコードをコンパイル...
-
プロシージャの戻り値を取得す...
-
Perlで環境変数を設定するには
-
system関数でCシェルコマンドを...
-
cgiを実行可能にするには
-
外部CGIの実行結果を変数内に取...
-
UNIX SUN Solarisで時間の演算
-
VB.NETからPerlを呼び出す
-
Cygwin上でperlスクリプトの実行
-
system関数を使用してJava実行...
-
これをビジュアルスタジオで実...
-
Perlスクリプトが実行できない...
-
-i -e "s|^.|ok|" ./text どこ...
-
perlで 引数1を別リストの複数...
-
Apacheのログからアクセス履歴...
-
Perl リスト内指定回数繰り返し
-
DBIのupdateのプレースフォルダ
-
Windows版Perlの標準入力&標準...
-
コードを一行ずつ実行したい。
-
例外処理のフローチャートの記...
おすすめ情報