パスワードを忘れた? アカウント作成
106325 story
Perl

現代的な Perl を再習得する方法は? 90

ストーリー by reo
モダン Perl 入門 部門より

ある Anonymous Coward 曰く、

久しぶりに Perl で本格的な Web アプリを書こうと思い始めたが、その間に Perl の世界は大きく変わってしまったようで、include jcode.pl が当然だった時代からすると、現代的に書かれたソースはまるで別言語のようだ。

モジュール等を活用した現代的な Perl を再習得したいが、書籍を買おうにも現代的な手法を知らない人間にとっては、どの本が現代的なのかの区別が出版日ぐらいでしかつけられない。

現代的な Perl を習得するためには、どのようなステップを踏むのが良いだろうか ? またお勧めの書籍などあったら教えて欲しい。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • Japan Perl Association (スコア:5, 参考になる)

    by lestrrat (38416) on 2009年06月10日 10時55分 (#1583725)

    Japan Perl Association [perlassociation.org] (JPA) 代表の牧です。

    JPAはまさにそういった方を支援していきたいと考えています。企業等でそういったニーズがある場合はJPAで研修等を行っています [perlassociation.org]。カリキュラムはまだまだ調整中ではありますが、希望さえあればそのあたりは細かい調整は可能ですので興味がある方は是非ご一報ください。

    また手前味噌で恐縮ですが、今年の初めに「モダンPerl入門 [amazon.co.jp]」という本を書かせていただいております。モダンPerlを網羅しているとは言いませんが、私がここ1,2年で使ってきた技術等に関してはおおよそカバーしていますので、そちらも参考にしていただければ幸いです。

    他にも要望等ありましたら是非ご意見をお聞かせください!

  • by mhexanon (16193) on 2009年06月10日 12時31分 (#1583821) 日記

    さいきん、友人から「CGI 勉強したいんだけどどうすればいい?」と聞かれて
    どんなスキル・知識が必要か考えてみました。

    (1) HTML(XHTML) のコーディングスキル
    (2) JavaScript でのプログラミングスキル
    (3) Perl や PHP などでのプログラミングスキル
    (4) HTTP プロトコルについての理解
    (5) Apache や IIS の動作理解および設定
    (6) 文字コードに関する諸問題の知識
    (7) データベースについての知識

    私は C言語から今のキャリアをスタートしたんですが、
    こうやって挙げてみると覚えることいっぱいあるな…
    Perl の知識だけ更新しても足らないかも。

  • by YellowTurtle (16315) on 2009年06月10日 11時55分 (#1583778) ホームページ 日記

    Perlプログラミング救命病棟 [amazon.co.jp]→Perl Hacks [amazon.co.jp]→モダンPerl入門 [amazon.co.jp]の順に読みましたが、従来の"require 'jcode.pl';"なスタイルからは完全に脱却し、自分なりのモジュールを作成出来るところまで至ることができました。

    特に「Perlプログラミング救命病棟」は、「モダンPerl入門」への架け橋としてオススメできます。

    --
    @ytnobody
  • Per… (オフトピック) (スコア:3, おもしろおかしい)

    by mhexanon (16193) on 2009年06月10日 12時46分 (#1583847) 日記

    この件について検索しようとして、無意識に
    「Perfume あ~ちゃん」とか打っててがく然とした orz

    # ウェブ履歴はそればっか

  • 現代的なPerl ? (スコア:2, すばらしい洞察)

    by shiroiwanisan (12855) on 2009年06月10日 10時41分 (#1583716) 日記
    プログラミング言語 Ruby
    • by nagika (30998) on 2009年06月10日 10時48分 (#1583719)

      2000年前半までは「Effective Perl」を読んでおけばperl初心者からは脱出、という時代でしたね。
      現代では、そのレベルより先に進むなら、RubyかPythonを学んだ後にperlで同様なことを実現する手法を探したほうがよさげです。

      まぁすると、perlをやりたいのか、「モジュール等を活用した現代的プログラミング」をやりたいのかどっちなんだ、という話になってきますが…。

      親コメント
    • Re:現代的なPerl ? (スコア:2, 参考になる)

      by t-nissie (8647) on 2009年06月10日 12時34分 (#1583825) ホームページ 日記
      > 現代的なPerl?
      > プログラミング言語 Ruby

      オフトピになっちゃっていますが、Perlはmyなんて書いてられないし、
      生まれたときからのオブジェクト指向言語じゃないから書く量が多く
      なっちゃうし、ソースの見た目が変だし… 特にこれを使いたい/使
      わなければならないっていうPerlモジュールがなければRubyかPython
      かもっと新しい言語のほうが幸せになれるのでは。

      PerlのCPANはたしかにすごいけど、
      Rubyのgemはもっと宣伝されてよいと思う。
      Pythonは何だっけ???

      さあ宗教戦争だ!
      --
      love && peace && free_software
      t-nissie
      親コメント
    • by Anonymous Coward
      Pythonじゃね?
  • 知人に勧められ、自分も3年前から再学習し始めました。それまではCGIでちょこっと(もちろんjcode.plも)やってたくらいなので、元記事の人の気持ちは良くわかります。

    ただ、引数の参照やら何やらで、いまだに書いて実行の繰り返しになっているのが、いただけないです(新旧関係なく、本人の学習能力の問題かもしれない)。いまいち馴染めない構成があります。

    ひとついえるのは、CPANがとってもすばらしい。あんなのが味方につけられるなんて、それだけでも学習する価値あり、だと思います。ただ、実現するのに「数通りの文法がある」というのは、少々気持ちが悪い。
    #or die;とか見たときの衝撃は忘れられない。

    rubyもいいんですが、「デフォルトで入っている」という面で一歩出遅れでしょうか?自分はDebianで、Perlはデフォルトではない(と思った)のですが、よく使うパッケージの依存関係で勝手に入ります。FreeBSDもそうだったような。本来であればPythonのほうがいいのかもしれません。パッケージのインストール権限が無いマシンで、サクッと書けて動かせるのは、重要な利点だと思います。

    --
    -- gonta --
    "May Macintosh be with you"
  • 現代的な Perl を習得するためには、どのようなステップを踏むのが良いだろうか ?

    とりあえず、ラクダ本2分冊を読む事から始めるべきではないかと。
    「現代的な」とかそういうのは、その後で十分だと思うし、どうも話を見ている限りでは「忘れてしまって判らなくなっている穴の方が大きい」ようだぞ。

    # 数年前に同じような事をやったので、間違いない。

    --
    fjの教祖様
  • by yxt (38418) on 2009年06月10日 12時58分 (#1583864)
    Perlの新旧だけでなく、Web関連の開発を久々に行おうとすると「フレームワーク」という考え方に馴染めずに苦労することになります。なぜこんな難解なものが必要なのか? 効用よりも習得のオーバーヘッドのほうが大きいのではないか? と。
  • by Anonymous Coward on 2009年06月10日 10時50分 (#1583720)

    404 Not Found [livedoor.jp] 」にはモダン Perl の書き方やモダン Perl の良書紹介エントリがたくさんあるので、まずはここを見るのが筋だと思う。

    # dankogai の Perl 至上主義は老害と言ってもいいと思うので AC

  • by tietew (6130) on 2009年06月10日 11時19分 (#1583735) ホームページ
    includeじゃなくてrequireだ、って突っ込みはした方がいいのでしょうか。

    # 未だにcgi-libとか使ってくる奴を見ると蹴り飛ばしたくなる
    • Re:とりあえず (スコア:1, すばらしい洞察)

      by Anonymous Coward on 2009年06月10日 11時53分 (#1583773)

      includeじゃなくてrequireだ、って突っ込みはした方がいいのでしょうか。

      タレこみした AC さんが、その辺もごっちゃになってしまうくらいに「久しぶり」なのだな、と理解しました。

      親コメント
  • まずは基礎固め (スコア:1, 参考になる)

    by Anonymous Coward on 2009年06月10日 11時43分 (#1583755)

    「モダンPerl入門」は私も読みましたし、良い本だとは思いますが
    jcode.pl 時代の感覚で読むのは少々つらいかと

    あえて、モダンじゃないけど「続・初めてのPerl」を推します。
    初めて とあるので、今更と思うかもしれませんが
    リファレンスとオブジェクトをしっかりおさえておくのが先決だと思います
    # 翻訳タイトル悪いよね

    • by coja (15969) on 2009年06月10日 12時31分 (#1583822)

      同感です。

      ラクダ本の3版で、5.6で文法的に追加された要素や雰囲気を調べてから、perldeltaで5.8や5.10での差分を、特にこの辺りで色々と変わった文字や文字コードの扱い(UnicodeとかIOレイヤーとか、Encodeとかencodingプラグマとか。)を重点的につかみ、(あと色々便利になったことを眺めたりしつつ、)その上で「モダンPerl入門」に進むというのがいいのではないかと。

      また、「Perlプログラミング救命病棟」という本で主に取り扱っているのが、「古いPerlコードを引き継いでそれを今風に書き直してメンテナンスする方法」なので、新旧の差分を追いかけるにはいいかも知れません。

      ところで今、きれいで実用的なPerlでオブジェクト指向のコードを書こうとしたら何を使うのがいいんでしょう。
      あるいは諸氏は何を使われていますか。
      (「RubyかPythonに乗り換え」というのはそれはそうなのかも知れませんが。)

      「モダンPerl入門」ではMooseが紹介されていましたが、今なお普段書くコードは、素直なblessしたハッシュリファレンスに少し自前で初期化コードとかアクセサ生成コードを足したようなものです。
      TIMTOWTDIとはいえ、だからこそ聞いてみたい感じがあります。

      親コメント
      • by lestrrat (38416) on 2009年06月10日 12時52分 (#1583852)

        言っても言っても信じてもらえないんですが、今僕の書いているすべてのコード(納品とかしてるものも含め)全部Mooseです :)

        親コメント
      • by coffe_ata (31369) on 2009年06月10日 16時15分 (#1583973) 日記

        古い人間なので、Class::Accessor::Fast [cpan.org]使ってます。
        自家製モジュールはMojo::Base [cpan.org]のコピー品に以下のコードを拡張して、

        sub create_attrs {
            my ($class, $attrs) = @_;
         
            while(my ($name, $value) = each %{$attrs}){
                $class->attr($name, {chained => 1, default => $value});
            }
        }

        __PACKAGE__->create_attrs({
            foo => 0,
            bar => 0,
        });

        みたいに使ってます。

        親コメント
    • 「続・初めてのPerl」は良いですよね。とりあえずこれを読んでから「Perlベストプラクティス」を読んで「悪いコードの例、良いコードの例」を知るのが良いのではないでしょうか。

      でもってがっつり自分でモジュール作るなら「実用 Perlプログラミング」まで読むと一通りのことは習得できるかと。

      親コメント
  • by Canalian (19238) on 2009年06月11日 0時27分 (#1584294)

    私がPert5の世界に足を踏み入れた時には、「Perlモジュール活用ガイド」にお世話になりました。

    モジュールを使うだけでなく、まがりなりにも作ることができているのはこの本のおかげです。

  • 自分がそういう人間なので体験談的に。

    Perlをはじめて覚えた頃ってまだまだプログラミング自体にあまり経験がなかったものだから、他人のPerl codeを読んだり、man perlしてman perlfuncしてとりあえず一通り読んだり、ラクダ本がいいんだよと教えられて頭から黙々と読んだりして覚えたような気がするんです。でも、最近新しい言語を使おうとするときって、今したいことを実現するためだけの物を知ろうとするだけで、その他の事はあんまりじっくりと読んでないような気がするんです。例えば、HTTPでgetしたいなぁと思ったらそういうModuleをgoogleして use HTTP::Lite てのがあるって知ったら、perldoc HTTP::Lite て打ってそれだけを読んで使うだけの知識を得て使ってそこで学習終了、という感じ。そういう弱い関わり方になってしまっていて、昔のように頭から黙々とドキュメントを読む、ということをしていない気がします。これを思ったのは、そろそろErlangもつ帰るようになろうかなぁと思ったときに、とりあえず何かを作ろうとして、それを実現するために必要な最小限の情報をドキュメントから読み取ろうとしている自分に気づいたときです。多分、自分はプログラムに関しては結構いろんなものをいじってきた記憶があるので、「あぁ、~ね。他の~でやったことあるわ」という感じで学習を端折っているのではないかという気がしたわけです。で、そういう事をしていると、なんかいろいろとよく躓くんですよね。そうして結局、躓いた所のドキュメントを探してその躓いた部分だけを学習しなおして先に進んだりしてるんです。まぁ、昔も頭からラクダ本を読んだとはいっても全部理解できているわけも無くて、躓いて読み返してたりしたわけですが、そういう時でも一度通して読んであるってのは結構良く作用していたような気がします。なので、最近の私は新しい何かを覚えるときにはとりあえず用意されているドキュメントを印刷するなり携帯にmailするなりして電車の中で読んで覚えることにしています。

    • by Anonymous Coward on 2009年06月10日 11時30分 (#1583747)
      読む人のことを考えて書くことが出来なければ、どんな言語も習得したとは言えない

      という実例
      親コメント
    • 読みにくい原因としてパラグラフに分かれていないことかと思われたので試みに分割してみた。

      自分がそういう人間なので体験談的に。

      Perlをはじめて覚えた頃ってまだまだプログラミング自体にあまり経験がなかったものだから、他人のPerl codeを読んだり、man perlしてman perlfuncしてとりあえず一通り読んだり、ラクダ本がいいんだよと教えられて頭から黙々と読んだりして覚えたような気がするんです。

      でも、最近新しい言語を使おうとするときって、今したいことを実現するためだけの物を知ろうとするだけで、その他の事はあんまりじっくりと読んでないような気がするんです。例えば、HTTPでgetしたいなぁと思ったらそういうModuleをgoogleして use HTTP::Lite てのがあるって知ったら、perldoc HTTP::Lite て打ってそれだけを読んで使うだけの知識を得て使ってそこで学習終了、という感じ。

      そういう弱い関わり方になってしまっていて、昔のように頭から黙々とドキュメントを読む、ということをしていない気がします。これを思ったのは、そろそろErlangもつ帰るようになろうかなぁと思ったときに、とりあえず何かを作ろうとして、それを実現するために必要な最小限の情報をドキュメントから読み取ろうとしている自分に気づいたときです。

      多分、自分はプログラムに関しては結構いろんなものをいじってきた記憶があるので、「あぁ、~ね。他の~でやったことあるわ」という感じで学習を端折っているのではないかという気がしたわけです。

      で、そういう事をしていると、なんかいろいろとよく躓くんですよね。そうして結局、躓いた所のドキュメントを探してその躓いた部分だけを学習しなおして先に進んだりしてるんです。

      まぁ、昔も頭からラクダ本を読んだとはいっても全部理解できているわけも無くて、躓いて読み返してたりしたわけですが、そういう時でも一度通して読んであるってのは結構良く作用していたような気がします。

      なので、最近の私は新しい何かを覚えるときにはとりあえず用意されているドキュメントを印刷するなり携帯にmailするなりして電車の中で読んで覚えることにしています。

      親コメント
typodupeerror

私は悩みをリストアップし始めたが、そのあまりの長さにいやけがさし、何も考えないことにした。-- Robert C. Pike

読み込み中...