• ベストアンサー

Perlを端末で使う

以前よりCGIでPerlをよく利用していたのですが、現在サーバーの保守や管理で簡単なシェルを使う機会が多くなりました。しかし、シェルスクリプトになるとちょっと難しくて勉強する時間がなくできるだけPerlでいろいろな処理をしたと思っています。  質問は、PerlをGnome端末などから操作するにはどうしたらよいのでしょうか?いくつかの処理をPerlで書いて $ perl -w /home/tinte/test_perl.pl みたいな感じで処理はできますが、シェルのように絶対パスではなくコマンドをそのまま記述することは可能でしょうか?例えば上記の処理を $ perl -w test_perl.pl のような感じで短縮できればよいなと思っています。どこかにリンクを貼ったり設定を変えればできそうな気がしていますが、もしわかる方がいましたらおしえてください。 またPerlのコマンドをそのまま端末で使うことはできないのでしょうか? 周囲にわかる人間が全くいないのでいろいろヒントをもらえるとうれしいです。よろしくお願いします。

  • Tinte
  • お礼率40% (40/98)
  • Perl
  • 回答数4
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
  • zxcv0000
  • ベストアンサー率56% (111/196)
回答No.2

test_perl.pl が PATH 上にあるなら、Perlの種類によっては perl -S test_perl.pl で起動できると思います。 同じくPATH上にあって、実行パーミッションがあって、test_perl.pl の 1行目に以下が書いてあれば、 シェルスクリプトと同様に test_perl.pl をコマンド名として使用できると思います。 #! /usr/bin/perl (/usr/bin/perl は環境依存です)

Tinte
質問者

お礼

ありがとうございます!

その他の回答 (3)

  • zxcv0000
  • ベストアンサー率56% (111/196)
回答No.4

やりたい事が良くわからないのですが、ひとつの事をする為のファイルが Shellスクリプト と Perlスクリプトの 2本になるのがヤな訳ですか? > 複雑なことをすると-eオプションでは動いてくれないみたいなのです。 複雑な事って、 「'」を含んだり改行を入れたいって事ですか? Shellの種類にもよりますが、POSIX Shell なら以下でどうですか? #! /usr/bin/sh echo This is Shell output. perl <<EOF print "This is Perl output.\n"; print "I can use ' and \".\n"; print "I can use multi line.\n"; EOF echo This is Shell output 2.

  • ralf124c
  • ベストアンサー率52% (232/446)
回答No.3

man perlで確認してください perl -e ' command' ただし、ActivePerl(Windows)の場合 perl -e " command" でないとだめみたいです。

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

しょせんは「そのファイルが読めればいい」ので, /home/tinte がカレントディレクトリなら perl -w test_perl.pl で OK. 後半は「Perl のコマンドをそのまま端末で使う」の意味が不明. 「Perl そのものをシェルにする」Perlsh か「Perl の対話的デバッグ環境」perl -de 0 あたり?

Tinte
質問者

補足

説明が足らなくてすみません。 Perlのコマンドをそのまま使う…というのは、例えばですが、 $ perl -e 'print "hogehoge\n";' みたいな感じでPerlのコマンドのprintをそのまま使う方法はないのかな…と思いまして。上記の例は実際に使えているんですが、複雑なことをすると-eオプションでは動いてくれないみたいなのです。

関連するQ&A

  • UNIXっぽくCUIでPerlをWindowsで

    ちょっとすごいタイトルになってしまいましたが、 今読んでいる書籍が、UNIXのコマンドラインを使用してのPerlの解説がされている本なので、 それをWindowsでも同じようにコマンドを打っていくだけで体感できないかと思っているのですが、 無理でしょうか? コマンドプロンプトを使って、perlの処理をあれこれと試すことはできますでしょうか? Win32 GNUというシェルがウィンドウズにも存在するとのことですが、これをいれればperlをコマンドラインで実現できるのでしょうか? そもそもCUIじゃないと、 #!/usr/local/bin/perl -w というエラーチェックのwを記述しても意味がない気がするのですが、どうなのでしょう。 アドバイスお願いします。

    • ベストアンサー
    • CGI
  • Linux上でtcpdumpの出力をperlで処理したいと考えています

    Linux上でtcpdumpの出力をperlで処理したいと考えています。 下記のようにtcpdumpの標準出力をperlの標準入力で受け取ろうとしても tcpdumpの処理が終わらないためパイプ(|)経由でperlにデータが渡ってきません。 [test.pl] $|=1; foreach(<>){ print "--- $_"; } exit; Linux上のコマンド tcpdump -l | ./test.pl これをteeに置き換えるとtcpdumpの出力はリアルタイムに表示されます。 tcpdump -l | tee a.log 質問:perlでteeを作ることはできますか?

    • ベストアンサー
    • Perl
  • PERLからcshellを実行したいのですが

    PERLからcshellを実行したいのですが、UNIXのコマンドラインから直接実行すると上手く行くのですが、ブラウザからでは欲しい結果が表示されず、ログにも何も残りません。 $ret = system ("/bin/csh /home/my47143/.www/test.csh $argv1"); #$ret = 265/ 265 = 1 戻り値は1、いろいろ調べてみてLANG をCに指定して、パーミションも全て777にしてあります。 シェルの内容は、SQLをしてその結果をtest.logに書き込み、後に同じCGIの中で読み込み標準出力をしています。 open( TEXTFILE, "<test.log" ); $line = <TEXTFILE>; print $line; @lines = <TEXTFILE>; foreach ( @lines ) { print $_; } close( TEXTFILE ); コマンドラインから実行すれば、ちゃんとtest.logに結果が書き込まれています。 この書き込まれた結果をそのままにしておけば、ブラウザにその結果も表示されます。 ですが、シェルで引数で渡す度に結果は上書きするはずなのですが、シェルが実行されている気配がありません。 なんででしょうか?教えてください。

  • biglobeでperl利用

    biglobeのホームページにcgiを置きたいです。 GsMonというフリーのスケジューラーを設置したいのですが、 既にローカルサーバーでのテストはできています。 GsMon http://www17.ocn.ne.jp/~seiko/ Biglobeサポート http://homepage.biglobe.ne.jp/manual/shiyou/index.html より CGIの呼び出し方 http://www**.biglobe.ne.jp/~ホームページアカウント/xxxxx.pl 利用可能なコマンド 実行パス perl /usr/local/bin/perl とありますが インストール、初期設定時の画面で データディレクトリ (/user など) CGIの実行ディレクトリ (/Gsmon や CGIの呼び出し方[.pl]など実行ファイルは設定してない) ドキュメントルートからのパス の書き方がわかりません。 相対パスやHttpを含むパスを入れてみたのですが500エラーが出てしまいます。 biglobe側もCGIはサポート対象外ですし困ってます。

  • PERLスクリプトのコマンドライン実行

    お世話になります。 Perlスクリプトをコマンドライン実行するとき、 perl スクリプト名.pl とすると思いますが、その際、コマンドライン引数を渡してスクリプト内で、その引数を見て処理したいと思うのですが、そういうことできますか?引数の渡し方、受け取り方を教えてください。

    • ベストアンサー
    • Perl
  • Perl/CGIを学んでいるのですが

    Perl/CGIを独学で学んでいます。 掲示板やチャットが作成できる程度です。 私はPerl=CGIと考えていたのですが(HTMLがサイト作成に使うことのように専用の言語とでもいいましょうか)、ぜんぜん違うようです。 PerlはCGI以外に Perlではどのようなことができるのでしょうか? 大まかな認識だと ビィジュアルを持たない、(VBでいうフォームパーツですかね)バッチファイルなど? で、コマンドプロンプトで動作するようなイメージがありますが(.batを起動するとメモ帳みたいなアプリではなく、特定の処理して終了みたいな) 無知な私にPerlで出来ることをお教えください。 せっかくPerl/CGIが少しは理解できているのでPerlをもっと勉強しようかとあぐねいているとこらです。 混乱しているため変な質問でしたらすいません

  • htmlからテキストを返すperlを実行する方法

    アクセスカウンターの数字画像を出力するperlのcgiを、<img>タグで、 <img src="./counter.cgi"> と、呼び出す方法があると思いますが、これと同じように、画像ではなくテキストを出力するperlのcgiをhtml中に呼び出して、ブラウザに表示する方法はないでしょうか? 以下のような感じかと漠然と思ったのですが、やはり上手くいくはずはありませんでした。 ■cgiプログラム(test.cgi) #!/usr/bin/perl print "Content-type: text/plain\n\n"; print "TEST TEXT"; exit 0; ■htmlファイル <html><head></head> <body> <br> <hr> <object data="./test.cgi" type="text/plain"></object> <hr> </body> </html> perlもhtmlも独学で学んだ基礎レベルだと自分で思っています。 どなたか突破口となるヒントをお願いします。

    • ベストアンサー
    • Perl
  • perlスクリプトをコマンドラインから実行する際、ファイル名だけで動かしたい

    はじめまして。どうぞ宜しくお願いします。 コマンドラインでperlを実行する際、 $ perl test.pl と先頭に「perl」をつけると正しく動作しますが、 $ test.pl と「perl」を外すと以下のようなエラーが出ます。 $ -bash: test.pl: command not found もう一台あるLinux機では、プログラム名だけでも動作しているので 何らかの方法があるのだと思います。 たとえば、Windowsで言う拡張子の関連付けなどのような事ができるのでしょうか。 ご存じの方がおられましたら、よろしくお願いします。 OS:RedHat9

    • ベストアンサー
    • Perl
  • dosでPerl実行時にPOSTデータを持たせて実行したい

    DOSでPerlを実行するときに、フォームのデータ(POST)をコマンドプロンプトからCGIに渡したいのですが、どうすればいいでしょうか?UNIX系OSならシェルでセットしますよね?DOSではどうすればいいでしょうか?

  • ApacheがPerlを作動してくれないのです。。。

    CGIテストのためにローカルにサーバーマシンを立てました。サーバーはApacheを使用しPHPとPerlをそれぞれインストールしました。 PHPは正常に動いてくれますがPerlだけが何回やってもyou dont have a permission ~~~と表示されます。 ためしにコマンドでperl -v と打ったら正常にPerlは作動していました。ちなみにPerlは C:Perl\bin\perlになっておりCGIスクリプトにも #!C:Perl\bin\perlと表示しています。又、confも各サイトを見てCGIが動くようにしっかり編集しました。 どうすれば動くようになるのでしょうか?