Perlでよくある質問に答えるPerlでよく訪ねられる(であろう)質問について書いてみたいとおもいます。引数のないshift関数はどういう意味ですかPerlのソースコードでは、引数のないshift関数をよく見かけると思います。引数のないshift関数の意味は次のようになります。shift;Perlで日本語を扱うことは可能ですかPerlはほぼ完全にUnicodeに対応している言語です。たくさんのエンコーディングをサポートしているので、さまざまな環境で文字を扱うことができます。Perlで日本語を扱う参考として以下の記事を参考にしてみてください。Encodeモジュールの解説jcode.plやJCode.pmは現在では推奨される手法ではなくなっているので、Encode.pmを利用する現代の標準的な手法を学んでみてください。Perlに例外処理はありますかはい。Perlではevalブロックという構文を使います。例外が発生した場合は$@という変数に例外の内容が代入されるのでチェックします。...}特別なモジュールを利用する必要はなく、デフォルトの機能として例外処理は用意されています。文字列を関数を使って操作したいですPerlにはいろいろな文字列関数が用意されています。使用する関数・モジュール一覧の「文字列操作」という項目を読んでみてください。Perlでは変数のスコープはどのようになっていますかPerlのスコープを理解するという記事でPerlのスコープについて解説しています。日付を扱う標準的な方法はありますかPerl5.10以降であれば、Time::Pieceというモジュールが標準で添付されています。Time::Pieceモジュールの解説を読んでみてください。Perlで自動試験を行うことはできますかはい。自動試験を行うことができます。自動試験については自動試験(Perl逆引き事典)を参考にしてみてください。PerlでWebアプリケーションを作成するにはCGIを利用するしか方法はありませんか現在ではさまざまな方法が可能です。CGIを使うほかに、Apache上のmod_perlで実行する方法、FastCGIプロトコルを使って実行する方法、PSGIと呼ばれるプロトコルを利用して実行する方法などです。簡単にWebアプリケーションを記述したいのであれば、CGIモジュールを使うよりも、Mojoliciousというフレームワークの中のMojolicious::Liteというモジュールを利用するのがよいでしょう。MojoliciousPerlはCGIを実現するためのプログラミング言語ですかいいえ、Perlは汎用的なプログラミング言語です。多くのことがPerlで行うことができます。CGIというのはプログラムをWebサーバー上で実行するためのプロトコルのことで、Perlとは直接的には関係はありません。Webアプリケーションの開発はPHPのほうがPerlよりも簡単ですかPerlのCGI.pmを使った開発に比べるとPHPによるWebアプリケーションの開発は断然簡単でしょう。このため多くの人はPHPのほうが簡単にWebアプリケーションを開発できると感じているようです。MojoliciousなどのWebフレームワークを利用した場合は素のPHPによるWebアプリケーション開発よりもさらに高い開発効率を得ることができます。記述がきわめて簡潔になる、試験環境の構築がいらない、自動試験による信頼性の高いアプリケーション開発、インストールの容易さ、さまざまな環境で実行できる汎用的なアプリケーション開発などさまざまな利点を得ることができます。Perl+Webフレームワーク」であるということを認識しておくことは大切です。PHPはPerlよりも高速ですかこれもよく書籍などで書かれていることが多いですが、完全な誤解です。PHPという言語とPerlという言語を比べた場合、処理速度はそれほど変わりません。PHPはCGIより速いと書かれていますが、CGIについて誤解した上での記述です。CGIとはプロトコルのことでPerlとは何の関係もありません。CGIを利用するPHPやCGIを利用するC言語やCGIを利用するPerlがあります。CGIで書かれたPHPは、CGIで書かれたPerlと同じくらい低速な速度です。Apache上のmod_phpで動くPHPは、Apache上のmod_perlで動くPerlと同じくらい高速です。PSGIというプロトコル上で動くPerlは、Apache上のmod_phpで動くPHPと同じくらい高速です。速度比較というのは、PHPとPerlのどちらを選ぶかという言語選択においてはほとんど意味を持っていません。Perl6とPerl5の関係について教えてください。Perl6は過去にPerl5の後継として開発されていましたが、現在は、Perl6はPerl5とは別のプログラミング言語です。Perl6は、2016年12月に正式にリリースされました。現行のPerlであるPerl5は、将来にわたって開発が続き、サポートされることが約束されています。詳しくは以下の説明をご覧ください。Perl6がリリースされてもPerl5は衰退していかないということを伝えたいネットを見ているとPerlが否定的に評価されがちなのはなぜですか。いろいろな原因が考えられますが、ほとんどの人が言語の有用性ではなく、言語のイメージで語っているからです。「新しい」「古い」といった漠然としたイメージです。新しい言語が好きな人はPerlに対して古いというイメージを持ちがちになるのだと思います。Perl4の時代に保守性の悪いPerlスクリプトを保守させられたという苦い経験が悪いイメージにつながっているのかもしれません。Perl6の誕生がいわれてから10年もたっているので、Perl5に対して廃れたイメージを持っている人も多いでしょう。世の中の流れはPerlに対して古典的なイメージを抱かせがちな雰囲気になっていますが、Perlのコミュニティにも原因がありますし、Perlではない言語のコミュニティにも原因があるのでしょう。他のスクリプト言語と比較したPerlの良い特徴はなんですかひとつはたくさんのプラットフォームで利用することができ、デフォルトでインストールされていることが多いということです。プログラミング言語をインストールする権限がもしなかったとしても、Perlを利用することができる可能性が高いということです。後方互換性が非常に高いレベルで維持されるので、作成したスクリプトは、何の変更もなしに、他の環境で実行することができます。どのバージョンを意識して書かなければならないという悩みはPerlにはあまりありません。Perlのバージョンの5.8を意識して記述すれば、ほとんどの環境で実行することができるでしょう。この点についはPerlは他のスクリプト言語と比べてかなりの配慮が払われておりユーザーに優しいです。あなたがインフラエンジニアであれば、Perlは知っておくべき言語の一番目に入るといっても過言ではないと思います。将来にわたってスクリプトを安心して動かし続けることができます。Webエンジニアであれば、PHP,Ruby,Perlのうちのどれか一つを勉強することになると思います。テキスト処理の処理速度は速いです。テキスト処理を一般的に行う環境であれば、おそらくRubyの2倍以上の速度でテキスト処理が行えるでしょう。これは1時間かかる処理を30分で終えることができるということです。テキスト処理におけるプログラミングの記述性とパフォーマンスを考えるとPerlは最善の言語であるといえるでしょう。他のスクリプト言語と比較すれば省メモリですし、コンパイル速度も高速です。Perlは他の人がイメージしているのとは異なり、スクリプトをきれいに書くことができる言語のひとつだということも押さえておくべきポイントです。記述性においてRubyやPythonがベストと呼ばれるならば、Perlは少しだけ及ばないですが、かなりベターと呼べるくらいきれいにかけます。CPANと呼ばれる無料で利用できるモジュールが豊富にあるというのも大きな魅力の一つです。Perl本体でできないことがあった場合には、CPANにあるモジュールを調べるとほとんどの場合に解決することができるでしょう。Webアプリケーションをとても作成しやすい環境があるというのも、利用するポイントになるでしょう。Mojoliciousというとても使いやすいWebフレームワークがあります。いうわけで、Perlはビジネス用途にも適した言語であるということがいえると思います。Perl4(Perlのバージョン4)を学ぶ必要性はありませんかインターネットにはPerl4でも動かせるスクリプトは多いですが、現在ではPerl4を意識してPerlを書く必要はないといってもよいでしょう。Perl5の普及率はほぼ100%ですので、保守性や可読性や柔軟性に優れたPerl5の記法で書くのが良い方法です。Perl5は、可読性や保守性において、改善されて新しくなっています。シジル「$@%」がなじめないのですが。Perlを利用していると慣れてくると思われます。シジルの利点を書いておくと、それが変数だということが視覚的にわかるということです。他の言語と比較するとPerlに慣れていないので読みにくく感じると思いますが、慣れてくるとそれが変数だということが視覚的にわかるのでかえって読みやすくなります。関数名と変数名が衝突するということは絶対に起こらないので、プログラミングをするときに、予約語はなんだったかなぁということを考えてプログラムする必要がないので、ストレスなくプログラミングができます。Perlのソースコードは1週間たつと自分でも読めなくなるといううわさは本当ですかいいえ。他の言語と同じように、わかりやすく記述すれば読めますし、わかりにくく記述すれば読みにくくなります。現代のPerlはPerl5と呼ばれ、一昔前のPerlではなく、読みやすさや保守性が大幅に改善されています。他のスクリプト言語に劣らずわかりやすく処理を記述することができます。一昔前に書かれたソースコードを読もうとすると、読むのが難しいというのは事実だと思いますが、Perl言語そのものが原因ではありません。良いソースコードを記述するための知識が蓄えられる前にたくさんのコードが書かれたということです。Railsのソースコードを比較してみましょう。どちらが読みやすいと感じますか?Perlは古いというのは本当ですか起源が古いという意味であれば本当です。Perlは1987年生まれの言語です。古いというのは使えないとか不便だという意味ではありません。Perlは現代的なプログラミング言語として多くの分野で利用されていますし、コミュニティは活発で、定期的に言語のバージョンアップがなされています。最新の技術に対応したモジュールはコミュニティによって活発にCPANにリリースされています。大量のアクセスを処理する必要のあるWebの分野でPerlを利用している企業は多くあります。PythonやRubyはPerlを進化させた言語ですか進化させたというよりは参考にしたというほうが正確でしょう。3つの言語はよくにていて、みっつの言語が行うことができるプログラミングの分野はよく似ています。それぞれにプログラミング言語として個性的な一面があるといったほうがよいでしょう。情報を鵜呑みにするのではなくて、実際に確かめてみるというのは大切なことです。Perlに対して否定的でPythonやRubyを薦められるときはその理由を聞いてみましょう。「新しくてきれいにかける。」ということしか教えてくれないければ、その人は言語についてあまり知らない可能性が高いです。CやJavaのように型がないので自由すぎて馴染めませんPerl、Ruby、Pythonなどのスクリプト言語では、変数(Perlではスカラ変数)にどのような型のオブジェクトでも代入することができます。URL();静的な言語を学んできた人にとってみれば、この部分だけを見ると扱いにくい言語と見えるかもしれません。型がないということは、静的言語に比べて明らかに大きすぎる利点があります。ひとつめはメソッドのオーバーロードについて何も考える必要がないということです。C++やJavaにはメソッドのオーバーロードという機能があります。これはメソッドの引数の型が異なった場合に、同じ名前のメソッドを定義できる機能です。浮動小数点型を引数にとるメソッドと整数を引数にとるメソッドは別に記述しなければなりません。}一方動的に型を持つ言語ではひとつだけですみます。これは重複をなくすという意味で保守性は大幅に高まります。}第二にC++のようなテンプレートクラスを考える必要はないということです。どのような型でも受け取ることができるので、メソッドやクラス定義において型に応じて何かをするという記述を行う必要がありません。第三に(Javaにおける)インターフェースを考える必要がないということです。Javaのクラスの設計は共通のインターフェースを考えるというとても難しい作業が伴います。汎用性を高めようとするとインターフェースの設計はかかせないものになるでしょう。動的言語の場合はどのような型をもつオブジェクトであっても、変数に代入することができ、メソッドを実行時に呼び出すのでこのような心配をすることがありません。型がないということをマイナスに見るのではなくて、保守性の高い重複のない簡潔なプログラミングを記述することができるという動的言語のプラスの面に目を向けてみるのはどうでしょう。実際にプログラミングを簡単に記述できるということがわかってくるかと思います。大規模なプログラムをPerlで作成することができますかはい。Perlは小さなプログラムを作成するのに向いていると考えられることがありますがそんなことはありません。大きなプログラムはJavaで、小さなプログラムはPerlで作ろうといういったようなイメージを持っているとしてら、Perlという言語を誤解していることになります。Perlで書けば静的な言語で記述するよりもかなり少ないコード量で大規模なアプリケーションが作成できることに気づくと思います。大規模なアプリケーションを作成するのに困難と思える部分はないということにも気づくと思います。ひとつの例としてAmazonというサイトはPerlで記述されているということを考えれば、Perlは大規模なプログラミングに向いてはいないのではないかという誤解は解けるのではないかと思います。Perlでオブジェクト指向プログラミングを行うことができますかPerlでオブジェクト指向プログラミングを行うことは可能ですし、オブジェクト指向プログラミングを行うための十分な機能を備えています。他のオブジェクト指向言語とは、クラスの作成を行う手順が少し異なります。このために、初めてオブジェクト指向プログラミングをする場合は、いくらか学習コストが他の言語より高く感じてしまうでしょう。Perlのオブジェクト指向の記述は、他のスクリプト言語よりも手間がかかるというのは本当です。モジュールを使えば他言語と同じ程度に記述を軽減できますが、Perlのコアには標準的なオブジェクト指向モジュールが含まれていないので、CPANからなんらかのモジュールを利用することになるでしょう。Object::Simpleを使うと以下のように記述できます。0;1;基底クラスの継承。0;1;他の言語に劣らずシンプルなクラスの記述が可能です。5.10.1は、正規のPerlではない感じです。Mojoliciousアプリケーションを動かそうとして気づいたことですが、標準モジュールの一部が足りていません。以下のパッケージをインストールすることで、コアモジュール(標準モジュール)が利用可能になります。perl-coreCetnOS7以降も同じ方法をお試しください。業務に役立つPerlログ解析など日本語を含むテキスト処理の実践!案内YouTubeでもっと簡単にプログラミングを学ぶならPerlゼミちゃんねるLinuxコマンドを学ぶならLinuxサーバー管理入門Webデザインを学ぶならWebデザイン入門Web開発を始めるななMojoliciousスタートアップブログを作るならGiblogプログラミングの勉強会ならPerl入学式お問合せはこちらPerlは、テキスト処理の記述性とパフォーマンスに優れ、正規表現が言語に組み込まれているプログラミング言語です。Linuxサーバー管理でのフィルタリングプログラム、複数行の文字列を処理、ファイル内容の検索・置換などが得意。Mojoliciousを使ったWebスタートアップも。Perlは、gitやopensslなどUnix/Linuxミドルウェアの支援ツールとして採用されています。このサイトはGiblogで製作されています。