• 締切済み

Perl/CGIを学んでいるのですが

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

みんなの回答

  • TYWalker
  • ベストアンサー率42% (281/661)
回答No.6

連投でスミマセン。 >Perlをもっと勉強しようかとあぐねいているとこらです。 よくこういう掲示板に、勉強するかどうか迷っています、という質問があるんですけど、逆にあんまり気持ちがわからないですね~ 勉強してみて、自分に合わないと思ったら「自分に合わない」という知見が得られるし、Perlがダメなところが分かってもっといい言語を学ぼうとか、場合によっては自分で言語を作ってやろうとかそういうことになるでしょう。 別にPerlを勉強したから脳に損傷を受けるとかそういうことはないですよね。 むしろ、使わない言語であっても頭はよくなるから特になるんですよ。 売っている入門書の中には場合によっては3~4日で読み終わるものもありますよね。。 ここで素人の意見をあーでもない、こーでもないと聞く時間がむしろ惜しいと思うんですけど、そのへんどうなんでしょう~? もし、コンピューターを本職にするなら、仮に C や Java が「本業」になったとしても、Perl は技術者にとって「ハサミとノリ」みたいなもんだし、簡単だからすぐわかるので(他の言語で挫折して Perl に入る人も多い)勉強して損にはならないと思います。

  • TYWalker
  • ベストアンサー率42% (281/661)
回答No.5

Perl 単体ではコマンドプロンプトから動く簡単なコマンドが作れます。 ファイルの検索置換や、コピーなど、エディタを使ってやるといちいち手作業が発生したりしますが、Perlを使ってプログラミングするとごくわずかな行数ですごく高度なことができます。 これは UNIX 生まれであるということと、文字列処理が強力であるということから来ています。 ぼくは CGI の環境を持っていませんが、Perl は手放せません。 もちろん CGI の環境があれば、掲示板やブログなどを作るプログラムを作れます。 これは配布されているプログラムを改造することができます。 これも文字列処理が得意であること、UNIX サーバーであればたいてい Perl は動くことが原因です。 ビジュアルなインターフェイスを作ろうとするんだったら Tk という仕組みを組み合わせたりします。 あるいは、ぼくがよくやっているのは、Visual Basic でユーザーインターフェイスだけ作って、複雑な文字列処理や計算は Perl で作ったプログラムを呼び出しています。 あと、「ワンライナー」といって、1行だけのプログラムを書くことができます。 その場でプログラムを考えて打ち込んで実行するので、初心者からみると曲芸みたいです。 こうなるとプログラミング言語というよりは「コンピューターをパワーアップする環境」という感じです。 これができるとカッコいい。 文字列処理の中心は「正規表現」ですが、Perlは正規表現が驚くほど強力です。 初心者のうちは暗号みたいに見えるんですが、数行でめちゃくちゃ強力な処理ができます。 少し使い込んでくると、他の人が作ったプログラムの一部分をネットからもらってきます。 他の言語も同じだと思いますが、Perlは進化し続けていますし、やる気があれば何でもできます。

  • mtaka2
  • ベストアンサー率73% (867/1179)
回答No.4

Perl 自体は、元々「CGI」よりはるかに古い言語です。 主にテキスト処理に特化したスクリプト言語で、 テキストデータを処理することにかけては、 同種の他の言語(sed や awk など)と比べると、はるかに高機能でした。 (今では python や ruby など、機能的に匹敵する言語はありますが…) 一方 CGI とは「Common Gateway Interface」という名前が示す通り「インターフェース」です。Webサーバー上でプログラムを実行するときは、Webサーバーとプログラムの間では、「CGI」というインターフェースに従ってデータをやりとりできます。 (今では、CGIというと、「CGIという規格に沿ったプログラム」の意味で使われることが多いですが) ですから、CGI の規格に従ったプログラムであれば、どんな言語で開発しても CGIのプログラムとして使うことができます。 CGIは「フォームデータや引数などをテキストデータとして受け取って」「HTMLデータをテキストデータとして出力する」という規格ですから、まさにテキスト処理です。CGI が出てきた当時、テキスト処理に強い言語はPerl以外にありませんでした。そのため、CGI プログラムを作る場合には、言語として Perl を選ぶことが非常に多かったのです。 結果として CGI = Perl という風潮ができちゃいましたけど、「CGIはPerl専用」ではないし「PerlはCGI専用」でもありません。

  • lv4u
  • ベストアンサー率27% (1862/6715)
回答No.3

ANo.2さんが回答されていますように、ほぼ何でもできますよ。(もちろんアセンブラのような高速性が要求されたら無理ですが・・・) 「PerlでCGI」というフレーズがタイトルの書籍もあったりして、「PerlはCGIしかできない」と勘違いされる方もいらっしゃいますが、そんなことはありません。CGIはPerlが出来ることの、ほんの一部分でしかありません。 わたしの場合は、バグの解析をするため膨大なテスト結果をPerlに読ませたり(処理終わるまでに、まる1日かかった!)、Cソースプログラムを解析させ、仕様変更に影響されるソース部分を抽出&修正させるために使ったりしています。つまり、仕事で必要になるツール・プログラムの多くをPerlで作成しています。もちろん、C、C++とかRubyを使ってもいいわけですが、有用なライブラリが大量にCPANにありますので、自分で作る手間が大幅に削減できます。 あと、Unixマシン上のプログラムテストで、「telnetで3台のUnixにログイン、3台でテスト実行、膨大なテスト結果をftpでWindowsに転送、Windows上のPerlで結果解析し、Excelファイルに結果を書き込む」っていう処理をPerlで実行させたりします。 例えば簡易なCコンパイラさえも、Perlで作成することができますよ。

noname#208124
noname#208124
回答No.2

はっきり言って何でも出来ますよ TkやWin32::GUIと言ったGUI用モジュールもあります もしActivePerlを使っているなら tkx-ed を実行してみてください どうです?不具合はありますがマルチプラットフォームなテキストエディタですよ

  • ESE_SE
  • ベストアンサー率34% (157/458)
回答No.1

Perlはスクリプト言語/インタプリタの名前ですね。 (スクリプト言語とプログラム言語の1つであるインタプリタ言語の違いはいまいち曖昧なようです) 現状ではPerlはCGI以外で使われるケースは稀なようです。 一方CGIはCommon Gateway Interface、ウェブサーバの入り口でデータ交換などを行うしくみのことで、 使用する言語は決まっていませんがかつてはPerlがほぼ独占状態でした。 現在はPython・Rubyなどもこれに食い込んでいるようですね。 あと近い立場でASP.NETやJavaなどがシェアを切り崩している感じでしょうか。 参考URLにはCGIの解説を入れておきます。 結論としてはPerlで出来るのは現在CGIだけ・・・というのが正解に近いと思います。

参考URL:
http://ja.wikipedia.org/wiki/Common_Gateway_Interface

関連するQ&A