ベストアンサー ※ ChatGPTを利用し、要約された質問です(原文:perlのcdについて) perlのcdについて 2011/05/18 23:24 このQ&Aのポイント perlのcdについての質問です。terapadでプログラムを呼び出せません。ホームディレクトリにファイルを置く必要があるのか調べましたが、分かりません。terapadのプログラムに#!/usr/bin/perlと入力しているのですが、これは何の意味なのでしょうか? perlのcdについて こんばんは。 最近perl言語を授業で習い始めたので、家でも出来るようにとcygwinをダウンロードして使い始めたのですが、terapadに入力したプログラムを呼び出すことができません。 学校でやったときは、ホームディレクトリにcheminfというファイルを作り、その中にterapadで入力したファイルを入れていました。 おそらくファイルを置く場所に関係があると思うのですが、調べはしたもののさっぱり分からず…^^; また、terapadのプログラムには#!/usr/bin/perlって打ち込んでいるのですが、いったいこれがなんなのかも気になります。 相当初歩的な質問だとは思いますが、どうぞよろしくお願いします。 質問の原文を閉じる 質問の原文を表示する みんなの回答 (3) 専門家の回答 質問者が選んだベストアンサー ベストアンサー kmee ベストアンサー率55% (1857/3366) 2011/05/19 23:36 回答No.3 ですから、Cygwin動作中は ホームディレクトリ(bashを起動してログインしたディレクトリ)は、 Cygwin表記で /home/ユーザー名, Windows表記で Cygwinのインストールしたディレクトリ\home\ユーザー名です。 「デスクトップとか、マイドキュメントとかではありません」 > **@room ~ > $ ls > これがホームディレクトリ(~)でlsを実行した結果です。何もありません。 (正確には、.で始まるファイルやディレクトリがあるかもしれませんが) > $ cd cheminf ホームディレクトリの下になにも無いのですから、移動などできません。よって > bash: cd: cheminf: No such file or directory というエラーになります。 簡単な対処は、デスクトップにあるcheminfディレクトリをホームディレクトリの下に移動してくることです。 質問者 お礼 2011/05/23 00:44 正直分からないことだらけなので、基礎から本でも探して勉強してみます。どうもありがとうございました。 広告を見て全文表示する ログインすると、全ての回答が全文表示されます。 通報する ありがとう 0 その他の回答 (2) kuroizell ベストアンサー率55% (95/170) 2011/05/19 10:54 回答No.2 WindowsでPerlやるなら、 ActivePerlかStrawbery Perlをインストールした方が 簡単で分かりやすいですよ。 一行目はshebangといって、 「このコードを/usr/binディレクトリにあるperlコマンドで実行します」という宣言です。 以下余談。 perlコマンドの場所が/usr/local/binディレクトリの場合もありますので、 差異を吸収するために #!/usr/bin/env perl としている人も多いのですが、 稀に「envコマンドが入っていない」という落とし穴も… ちなみにWindowsでは拡張子で関連付けられるので、私はシバンを省略してます。 質問者 補足 2011/05/19 21:49 Active perlはインストールしています。 そのコードはシェバングっていうんですね!詳しい説明ありがとうございます! 広告を見て全文表示する ログインすると、全ての回答が全文表示されます。 通報する ありがとう 0 kmee ベストアンサー率55% (1857/3366) 2011/05/19 07:10 回答No.1 ・ファイルをどこに置いて ・どんなコマンドラインで実行したか ・そうしたら、どんな結果になったか。エラーなら具体的にどんなメッセージが表示されたのか というあたりが無いと判断できません。 置く場所は、大抵は関係ありません。(外部のファイルを参照するなどで、制限があるケースもありますが) 置いた場所にあるスクリプトにアクセスできればいいはずです。 CygwinとWIndowsとではディレクトリ構造が違います。 Cygwinの / (ルート) はWindowsでのインストールディレクトリ(標準では C:\cygwin )になります。 ホームディレクトリは /home/ユーザー名 (Windowsの C:\cygwin\home\ユーザー名 )になります。 TerapadはWindowsのアプリなので、Windowsのディレクトリ名を使います。それをCygwinから呼びだすにはCygwin のパスで指定する必要があります。 #!については「シェバング」で検索してみてください。 質問者 補足 2011/05/19 21:52 入力は **@room ~ $ ls **@room ~ $ cd cheminf bash: cd: cheminf: No such file or directory と入力しました。 cheminfのファイルはデスクトップに置いています。perlの動作のファイルはCドライブの中に全部あるみたいです。 lsの時点でファイルが認識されていないみたいなのですが、学校でやったときはそのままやっても適応されていたので、何が違うのかさっぱりです…。 広告を見て全文表示する ログインすると、全ての回答が全文表示されます。 通報する ありがとう 0 カテゴリ [技術者向] コンピュータープログラミング・開発Perl 関連するQ&A #!/usr/local/bin/perlで命令が出せません。 プログラミングのド素人で、独学でwindows上でcygwinを使っている者から質問させていただきます。「#!/usr/local/bin/perl」というコマンドをプログラムの先頭に書いて、[ファイル名]を入力してcygwinで命令をしたところ、命令が実行できず、「commond not found」と出てしまいました。そこで、ネット上で、いろいろ調べて、試してみたのですが、どうしても、解決できません。 どなたか、アドバイスをいただけないでしょうか? ちなみに、perl [ファイル名]では、命令を実行することができます。「type -a perl」というコマンドを入力すると、「/cygdrive/c/Perl/bin/perl」というのがでてきたので、「#!/cygdrive/c/Perl/bin/perl」というコマンドを書いても上手くいきませんでした。 ちなみに、私が書いたプログラムは、以下のようなものです。 #!/cygdrive/c/Perl/bin/perl (あるいは#!/usr/local/bin/perl) # hello -- 挨拶のプログラム print ("hello"); 「#!/usr/bin/perl --」でなければ動作しないのはなぜ? 新しい職場に来て、あるCGIの設定を依頼されたのですが、どのような設定になっているのか、どのプログラムをアップしても「Internal Server Error」になってしまいました。 人に聞いて、「#!/usr/bin/perl」を「#!/usr/bin/perl --」としなければ動かないことまでは分かりました。 確かに、先に他の方が作成されたらしいCGIプログラム(単純な構成のものばかりです)ではすべて「#!/usr/bin/perl --」となってました。 こうしなければ、どんな簡単なプログラムでも絶対に動かないようです。 「*.cgi」というファイルが1つのみ(他の構成ファイルは他の形式)というプログラムならその方法で動いたのですが、複数の「*.cgi」ファイルで構成されているものはどうしても動きませんでした。 構成するファイルの中に、先頭に「#!/usr/bin/perl」の行がないファイルもあるのですが、もしかしてそのせいでしょうか? その場合、どうしたら解決できますか? そもそも何が原因なのでしょう? 今まで、色々な会社でCGIをいじってきましたが、初めての経験で戸惑っています。 FFFTPの設定(開業など)の問題ではないように思えるのですが、サーバーの設定がおかしいのでしょうか? 「#!/usr/bin/perl --」としなければ絶対に動かないというのは、どういう場合に起こる現象なのですか? perlのcgiが動かない・・・ cgiを組もうと思い、まずは簡単なもので試そうと思ったのですが、 うまくいかず困っています。 ↓プログラムは、こんな感じです。 ファイル名:index.cgi #!/usr/bin/perl print "<html>"; print "<body>"; print "abc"; print "</body>"; print "</html>"; <やってみたこと> ・Perlのパス「#!/usr/bin/perl」 が間違っていないか? which perl で /usr/bin/perl とでます。 ・Apache の設定が正しく行なわれているか? http://localhost でindex.htmlがきちんと表示できています。 ・「hello.cgi」 の設置場所を間違っていないか? プログラムソースが出るということは、 間違っていないのではないでしょうか? ・ためしに実行してみた TELNETで ./index.cgi <html><body>abc</body></html> とでてきました。 これはちゃんと動いているのでは?? 何か勘違いしていますか? お気づきの点を教えてください。よろしくお願いいたします。 ネットワークエンジニアとは?技術職の未来を考える OKWAVE コラム Perlでのファイル入出力、処理方法 メモ帳で以下のようなプログラムを書きました。(file_1.plで保存しました) #!/usr/bin/perl $file="data.csv"; $cityfile="name.txt"; $outfile="data_out.csv"; open (IN, $file) or die "$!"; open (FILE, $file) or die "$!"; open (OUT, ">$outfile") or die "$!"; @city = <FILE>; ・ ・ ・ これをCygwinコマンド上で、 perl file_1.pl と入力し、Enterを押すと「No such file or directory at file_1.pl line 9.」と表示されます。 line9はopen (FILE, $file) or die "$!";という文です。 どこが間違えで、どのように修正すればよいのでしょうか。 よろしくお願いします。 実行ファイルのパスを取得したい C言語で自分自身がどのディレクトリに存在しているか 知りたいのです。 簡単に例を挙げて説明します。 UNIX C言語で cmd1 という実行ファイルを作成しました。 環境変数は以下のように定義されていたとします。 PATH=/bin:/usr/bin /binにcmd1を配置してカレントディレクトリ/homeにおいて cmd1を実行、cmd1プログラム内で"/bin/cmd1" を取得したいのです。 続けて、/bin/cmd1を/usr/bin/cmd1移動して、cmd1を実行すれば、 プログラム内で"/usr/bin/cmd1"を取得できるコーディングをしたいのです。 typeコマンドのような事をC言語で行いたいのですが。 お分かりの方いらっしゃいましたら教えてください。 よろしくお願いします。 Perlのパス レンタルサーバーのCGIの説明で、「1.perl のパスは、/usr/bin/perl です。2.プログラムの先頭の記述は必ず、#!/usr/bin/perl となります。」って書いてあるんですけど、これを使用する場合、 http://www.kent-web.com/data/cart.html たぶん、admin.cgi , cart.cgi , order.cgi を エディタ で開いて以下の箇所をあたまの部分、#!/usr/bin/perl を変えればいいんですかね?それで1.の/usr/bin/perl は何処に書くのかな?それとも説明 の前置きですかね?「1.perl のパスは、」という意味はリンクがこうなるよ!って意味ですかね? ただま、KENT WEBみながら苦戦してます。 シロウトですいません。 perl初心者です。検索パスについて プログラム経験0の素人初心者ですが技術者向けの方が詳しい方がいらっしゃるかとこちらに書き込みしました。 perlを覚えようと本を買ってきましたが初めからつまづいてしまいました。 環境 winXP HomeEdition sp1 使用ソフト cygwin Poderosa(ターミナルエミュレーター) ホームディレクトリの設定と位置 設定「/cygdrive/c/myfolder」 位置「C:\myfolder」 本に書いてあったとおりに、以下のようにファイルを作り、myfolderに保存しました。 ファイル名:calc 中身:以下の通り #!usr/local/bin/perl print("2*3="); print(2*3); print("\n"); Poderosaでcygwinを起動し、 perl calcと打つと 2*3=6と返してくれるのですが、 chmod a+x calc calc と打つとウィンドウズ付属の電卓が起動してしまいます。 ファイル名をtest、中身をprint("test"); 等にした場合には、command not found となってしまいます。 検索パスの設定をしてない為かもしれませんが、検索パスの指定の仕方がわからず困っています。 システムの環境変数のPathの所でどう指定すればいいのでしょう。 どうぞアドバイス宜しくお願いします。 パールスクリプトを呼び出すときのパスの指定について わたしはあるインターネットのスクールに通っていたのですが パスについて頭が混乱しています。 CGIのコースのアクセスカウンターの授業で ディレクトリ構造が /usr/home/www/s1000000/cgi-bin/counter.pl となっているパールスクリプトをhtmlファイルのimgタグで呼び出すとき <img src="/usr/home/www/s1000000/cgi-bin/counter.pl?NAME=username&KETA=4">(その1) と記述したらうまく動作せず、 <img src="/~s1000000/cgi-bin/counter.pl?NAME=username&KETA=4">(その2) と訂正され、解決しました。 サーバのローカルルールでホームディレクトリのファイルは/~で呼びだせるように なっているようなのですが、それならば(その1)と(その2)は 同じことだと思うのです。 パスの相対指定はわかるのですが、絶対指定やurl指定がわかりません。 (その1)は絶対指定で(その2)はurl指定ということなのですか? (その1)と(その2)の違いは何ですか? なぜ(その1)では動作しないのですか? パスの根本的なところを知りたいです。 どなたか教えていただければ幸いです。 サーバを移行したのですが、プログラムが動きません。 はじめまして。 Perl超初心者です。 先日、あるサイトのリニューアルをし、PHPでシステムを組んだのですが、一部のコンテンツに関しては、前の業者がPerlで組んでいたシステムをそのまま転用することになりました。 そこで、以前のデータを貰って、サーバのcgi-binのフォルダにそれらのデータをコピーし、関係すると思われるファイルのパーミッションを、755にし、 また、以前は、ファイルの一行目が、#!usr/local/bin/perl だったのですが、 これを、#!usr/bin/perl に修正しましたが、動いてくれません。 Internal Server Error と出てしまいます。 試しに、単純な text.cgi #!/usr/bin/perl print "Content-Type: text/html\n\n"; print "OK"; というファイルを置いてみたのですが、これは動いています。 ちなみに、移行しなければならないcgiファイルは、プログラムの中で、.pl ファイルを複数読み込んでいるのですが、このファイルのパーミッションは、755で良いのでしょうか? また、このプログラムでは、 cgi-bin のディレクトリから、 data というディレクトリの中にある.datファイルを読み込むはずなのですが、このdataというディレクトリは、cgi-binと同階層に置けばよいでしょうか? Internal Server Errorというエラーは、どういうときに出るエラーなのでしょうか? 色々ファイルを操作しても、このエラーしか出ないので、どう対処してよいかよく分かりません。 不勉強で大変心苦しいのですが、 ご回答よろしくお願いいたします。 CygwinでPerlのCSV_XSを実行する Cygwin TerminalをWin7x64にインストールしました。 インストール完了後、Perlプログラムでuse Text::CSV_XSを実行すると Can't locate Text/CSV_XS.pm in @INC エラーが出てしまいます。 ・エラー Can't locate Text/CSV_XS.pm in @INC (@INC contains: /usr/lib/perl5/site_perl/5.14/i686-cygwin-threads-64int /usr/lib/perl5/site_perl/5.14 /usr/lib/perl5/vendor_perl/5.14/i686-cygwin-threads-64int /usr/lib/perl5/vendor_perl/5.14 /usr/lib/perl5/5.14/i686-cygwin-threads-64int /usr/lib/perl5/5.14 /usr/lib/perl5/site_perl/5.10 /usr/lib/perl5/vendor_perl/5.10 /usr/lib/perl5/site_perl/5.8 .) at mysql.pl line 11. ・やってみたこと perl -MCPAN -e shell install Text::CSV_XS を実行してみたのですがダメでした。 どのように対応すれば解決できますでしょうか? ご教授お願いします。 /usr/local/bin/perl の発音 あまりにも初歩の質問かもしれませんが、 /usr/local/bin/perl ・・・を、声に出すとすると、 /ユーザー/ローカル/ビン/パール ・・・で、良いのでしょうか? #!/usr/bin/perl --でも不安定です #!/usr/bin/perl ですと全く表示されず、Internal Server Error. #!/usr/bin/perl -- でも30%ぐらいしか画面表示されません。 サーバのファイルをTeraTermで見てもおかしなファイルが見当たりません。 問題のファイルを調べる方法はありますでしょうか? Carpモジュールをuseしても相変わらずInternal ServerError.でさっぱり見当がつきません。 AIは使う人の年齢や市場にも影響する?人工知能の可能性 OKWAVE コラム www5a.biglobe.ne.jpのPerl www5a.biglobe.ne.jpディレクトリのPerlを教えてください。biglobenの「主要コマンド・パス一覧」を見ても多すぎて何をえらべばよいかわかりません。これ!というのを教えてください。設定しようとしているCGIデフォルトは[#!usr/bin/perl]となっています。 それと、CGI呼び出しのパスの項目にACTION=というのは必要なのでしょうか? 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のファイルを実行できるのですか? 教えて下さい。よろしくお願いします。 PERL 宣言文 -wについて Perl初心者のWEBサーバエンジニアです。 サーバの移行に伴ってCGIファイルが動作していないため、ご相談になります。 【サーバ環境】 perl実行パス /usr/local/bin/perl シンボリックリンク /usr/bin/perl => /usr/local/bin/perl ソース記述 #!/usr/bin/perl ヴァージョン 5.8.5 perl実行環境 http://△△△.jp/cgi-bin/ ※apacheのスクリプトエイリアス指定 options +ExecCGI -Include SetHandler cgi-script 上記の環境で、cgiファイルが500internalサーバエラーになる現象が発生しています。 ファイルは以前動作したサーバから引っ張ってきました。 原因を探っていたのですが、cgiファイルのソース記述を #!/usr/bin/perl -w と記述を変更すると正常に動作しました。 -w について 【1度しか出現しない識別子や、初期化されずに参照される変数など、危険、無駄と思われる処理の警告を出力します。実際にはもっとたくさんの種類のチェックをするようです。】 と言う事はわかりましたが、いままで、-wなしで動作していたので、-wなしで動くよう、perlの設定を変更したいとかんがえております。 なにぶんPERL初心者ですので、同様の事象で知見がある方、ご教授を宜しくお願いいたします。 #!/usr/local/bin/perlとしたい WindowsXP上でCGIを動作させる環境を構築しています。 しかし、サーバにアップロードする際にいちいちPerlパスを変更するのが 面倒なので、「#!/usr/local/bin/perl」と、基本的なディレクトリ指定にしたいです。 (サーバそうでなければ結局指定し直しですが) 現在、「#!c:/perl/bin/Perl」で動かしています。 どうすれば出来るでしょうか?ご教示願います。 ちなみにApacheは2.0.55です。 プログラム名でプログラムが実行できない #!/usr/bin/perl # calc --計算式 print ("3 * 3 = "); print (3 * 2 ); print ("\n"); #改行 上記のような簡単なプログラムを作ってみました。 ところが、2段目にある「calc」と入力しても 「can not found」と出て実行してくれません。 保存したファイル名で「perl ファイル名」だときちんと実行してくれます。 どこがおかしいのでしょうか? やってみた事は ・which perl →/usr/bin/perl ・「chmod 775 ファイル名」 です。以上、よろしくお願いします。 Perlを使った単語出現カウント コマンドライン引数で 入力ファイルからデータ受け取って結果を出力ファイルに書き込みたいのですが、プログラムは #!/usr/bin/perl while ( <> ) { @words = split(" "); $wc{@words[0]} += 1; } foreach $key (keys %wc) { print "$wc{$key} $key\n"; } で今のコードでは、コンソールに出力されるだけとなってしまいます。 ファイル入出力を行うにはどうすればいいですか? FreeBSDのperl 自分のPCでCGIが動かずに苦戦しているのですが 環境はpc9821にFTPでインストールしてUSER環境を 選択しています。この環境でperlへのパスをCGIを使うためのファイルを/usr/bin/perlに指定していたとおもうのですがperlはきちんとうごいているのでしょうか? USER環境にはperlははいっていないということはありませんでしょうか?よろしくおねがいします。 WindowsでPerlをする際,1行目の"#! ~"はどのように? Perlの参考書・本等ではプログラムファイルの第1行目は #! /usr/local/bin/perl という1行がよく有りますが,WindowsXPを用いている場合では,この1行をどう直せばよいのでしょうか? #! (perl.exeが存在するフォルダのパス) でよいのでしょうか? 私はWindowsXPを使っていて,この1行を使わずにプログラムを書いておりましたので,この1行の意味がよく分かりません。 ある参考書には,"#!はその行に書いたコマンドに,ファイルの残りの部分を渡して実行すると言う性質を持っている"と有りました。だから,試しにfile1.plとfile2.txtを準備し, file1.plの中身 #! (perlの存在するフォルダのパス)\perl.exe while(<STDIN>){ print; } file2.txtの中身 hello world として,コマンドプロンプトで file1.pl < file2.txt としたのですが正しく動作しませんでした.(perl file1.pl < file2.txt と入力した場合は正しく"hello world"となりました) 注目のQ&A 「You」や「I」が入った曲といえば? Part2 結婚について考えていない大学生の彼氏について 関東の方に聞きたいです 大阪万博について 駅の清涼飲料水自販機 不倫の慰謝料の請求について 新型コロナウイルスがもたらした功績について教えて 旧姓を使う理由。 回復メディアの保存方法 好きな人を諦める方法 小諸市(長野県)在住でスキーやスノボをする方の用具 カテゴリ [技術者向] コンピューター プログラミング・開発 Microsoft ASPC・C++・C#CGIJavaJavaScriptPerlPHPVisual BasicHTMLXMLCSSFlashAJAXRubySwiftPythonパフォーマンス・チューニングオープンソース開発SEOスマートフォンアプリ開発その他(プログラミング・開発) カテゴリ一覧を見る OKWAVE コラム 突然のトラブル?プリンター・メール・LINE編 携帯料金を賢く見直す!格安SIMと端末選びのポイントは? 友達って必要?友情って何だろう 大震災時の現実とは?私たちができる備え 「結婚相談所は恥ずかしい」は時代遅れ!負け組の誤解と出会いの掴み方 あなたにピッタリな商品が見つかる! OKWAVE セレクト コスメ化粧品 化粧水・クレンジングなど 健康食品・サプリ コンブチャなど バス用品 入浴剤・アミノ酸シャンプーなど スマホアプリ マッチングアプリなど ヘアケア 白髪染めヘアカラーなど インターネット回線 プロバイダ、光回線など
お礼
正直分からないことだらけなので、基礎から本でも探して勉強してみます。どうもありがとうございました。