タグ

perlに関するyuguiのブックマーク (166)

  • 第28回 Perlの構文解析器の作り方と応用例(1) | gihyo.jp

    連載では第一線のPerlハッカーが回替わりで執筆していきます。今回のハッカーPerl 5の字句解析器・構文解析器であるCompiler::Lexer/Parserを開発した五嶋壮晃さんです。Compiler::Lexer/Parserの開発で得られた知見をもとに、Perl 5がなぜ「Onlyperl can parse Perl」と言われているのかという謎に迫ります。また、言語処理系の字句解析器・構文解析器を開発する際の勘どころについてPerl 5の例を交えながら触れ、最後にCompiler::Lexer/Parserの応用例を紹介します。 構文解析器の役割とPerlとの関係 節では言語処理系の基的な構成や構文解析器の役割について触れ、筆者が開発しているCompiler::Lexer/Parserと、Perlコードの静的解析用途で広く利用されているPPIとの違いについて簡単に解説し

    第28回 Perlの構文解析器の作り方と応用例(1) | gihyo.jp
    yugui
    yugui 2017/02/05
  • Perlの食えない事情 - 演算子編 - アリ

    Perlえない事情 より おっと、そうです、Perlには演算子が多すぎるのでした。せっかくの機会なので、Perlの演算子を紹介します。 ビーナス演算子: 0+, +0 数値として評価してくれます。意外とよく見かけますね。 なぜこの演算子を使う必要があるのかというと、Perlは文字列と数値を明確に区別できないからです。scalarを文字列として解釈するならば文字列として、 print 0+ '10'; #=> 10 print 0+ '123b'; #=> 123 print '1.2e3' +0; #=> 1200 print [] +0; #=> 4303367864 ちなみに、文字列として評価するときにはこのようにするとかっこいいと言われています。 $obj.q(); 一見メソッド呼び出しのように見えますが $obj . ''; と等価です。 ベビーカー演算子: @{[ ]} 文字

    Perlの食えない事情 - 演算子編 - アリ
  • Perl5 の今後の発展についてのアレ - tokuhirom's blog

    Perl5 の今後の発展についてのアレ http://mtl.recruit.co.jp/blog/2011/08/ye2011-day3.html use v5.14; の意味が “Anything newer than 5.14.0 would be great!” だったのが use v5.16; からは “I want a Perl 5 that works like 5.16” にかわるという話で、これは非常におおきい変化だといえます。 要は、今後は incompatible change がレキシカルコンテキストにたいしておこなわれるということです。とはいえ、その変化というのは劇的におこなわれるものではなく、いままで互換性の Perl 5 の流れを踏襲します。ただ、今まで互換性のためにのこしてあった機能が v5.30 ではつかえなくなったりします。でも use v5.14; と

    yugui
    yugui 2011/09/08
    Perlよお前もか。
  • Perlが嫌いなやつはPerlプログラマだ! 嫌いじゃないやつは、訓練されたPerlプログラマだ! | hylomの日記 | スラド

    Perlの一番の問題点は、訓練コストの高さだと思う。 たとえば、現状では「初めてのPerl」→「続・初めてのPerl」→「Perlベストプラクティス」まで読まないとまともなPerlプログラマにはなれない。逆にこれらの内容を習得して実践できる人なら、誰も「Perlはソースが汚い・読みにくい・分かりにくい」とか言わないだろう。その上で実用 Perlプログラミングを理解してやっとPerlプロフェッショナルの入り口にこれるわけです(自分はここで断念しましたが。ここまで来ると「Perlのオブジェクト指向は素晴らしい!!!」となれるらしい)。 さらに、「初めてのPerl」レベルでも一通りのことができてしまうからタチが悪い。「初めてのPerl」で止まったプログラマはワケの分からないコーディングをしたり、無駄なコーディングをしたり、遅いコーディングをしたりして結局「Perlは使えない」という話になってしま

    yugui
    yugui 2009/04/19
  • Perl 5 今昔 - Perl-users.jp

    前は王道だったあの書き方も最近ではこうかな、というもの集です。 一般編 oldtype としたものもたいていは動きますし、環境の都合や軽量だなどの理由で普通に使われたりもします。そのへん勘違いなきよう。 CPANモジュールの検索 自動リダイレクトされるので知ってると思いますが。 oldtype: search.cpan.org modern: MetaCPAN CPANモジュールインストール oldtype: perl -MCPAN -e shell modern: cpan post modern: cpanm Module OR マッパー oldtype: Class::DBI, DBIx::Skinny modern: DBIx::Class, Data::ObjectDriver, Teng, Aniki テンプレートエンジン oldtype: HTML::Template, Te

    yugui
    yugui 2008/08/26
  • DebianでCPANのモジュールを利用する - 牛のつれづれなるままに3.0

    DebianではCPANのモジュールもパッケージとして提供されていますが、もちろんオフィシャルには提供されていないものもたくさん存在します。そういうモジュールたちを利用したくなったときに、どうやるのが正しい方法なのかがいまいちわかりませんでした。 そこで少し調べてみたことをメモしておきます。素人なので間違っていたらご指摘を歓迎します。また、2008/05/24時点でのDebian testingで調べました。システム標準のPerlは先日5.10に更新されました。 自分でPerlをインストールする dh-make-perlを使ってローカルパッケージを作成する CPAN++を使う おそらくCPAN++が現状モダンな方法なのではないかと思っています。 自分でPerlをインストールする Perlのソースを持ってきて自分でビルドし、ホームディレクトリや/usr/localなど適当な場所にインストール

    DebianでCPANのモジュールを利用する - 牛のつれづれなるままに3.0
    yugui
    yugui 2008/07/14
  • XS Nite (Shibuya.pm Tech Talk #9) - Pixel Pedals of Tomakomai

    id:TAKESAKOさんの好意で出させてもらったので、適当にロギングします。 はじめてのXS / id:hirose31さん XSってなに? PerlとCをつなぐための言語&インタフェース Foo.xs → xsubpp → Foo.c → Cコンパイラ → Foo.so Perlからは、XSLoaderやDynaLoaderでFoo.soを読み込む なぜXSを使う? Cのライブラリを使いたい パフォーマンス向上(Cache::Memcached::Fast 等) Perlの内部をいじくり倒す(autobox*1 等) XSを書いた動機 → forkしまくりたくなかった ドキュメント perlxstut, perlxs, perlguts, perlapi h2xs or module-starter (Module::Starter::XSimple) で始める 外部のsay_hell

    XS Nite (Shibuya.pm Tech Talk #9) - Pixel Pedals of Tomakomai
    yugui
    yugui 2008/06/26
  • UTF8 フラグあれこれ - daily dayflower

    UTF8 フラグについてわかってるつもりだったんですが,utf8::is_utf8 considered harmful - Bulknews::Subtech - subtech を読んで混乱したので,自分なりにまとめてみました。間違いがありましたらご指摘よろしく。 まとめ スカラー変数の内部表象の状態を示すものとして UTF8 フラグというものがある スカラー変数は(リファレンス等は別として)下記のものを格納できる (A) 文字列(内部表象: UTF-8) (B) 文字列(内部表象: ISO-8859-1) (C) バイナリ列 純粋なバイナリストリーム(画像ファイル等)かもしれないし, UTF-8 octet stream かもしれないし, CP932 octet stream かもしれないし,etc, etc ... Perl は(後方互換性確保などの理由から)ISO-8859-1

    UTF8 フラグあれこれ - daily dayflower
  • 404 Blog Not Found:惰訳 - プログラムは大変だ、スクリプトにしよう - 過去篇

    2007年12月13日00:15 カテゴリ翻訳/紹介Lightweight Languages 惰訳 - プログラムは大変だ、スクリプトにしよう - 過去篇 ああ、訳しきれないとわかりつつも訳さずにいられない。 perl.com: Programming is Hard, Let's Go Scripting... by Larry Wall とりあえず過去篇だけ。現代篇と未来篇はちょっと大変すぐる.... Dan the Perl-Monging Translator 過去 もし過去にさかのぼってAda Lovelaceにスクリプトとプログラムの違いについて尋ねたら、彼女はけげんな顔でこう答えたでしょう。「そうね、スクリプトは俳優に渡すものよ。プログラムは、観衆に渡すもの」。Adaは聡明な淑女でした。 彼女の時代から時を経て、「スクリプティング」という言葉の持つ意味は混沌としてきています

    404 Blog Not Found:惰訳 - プログラムは大変だ、スクリプトにしよう - 過去篇
    yugui
    yugui 2008/01/29
    Larryの文
  • Whipaptitude and Manipulexity : 404 Blog Not Found

    2006年03月26日22:30 カテゴリYAPC::AsiaLogos Whipaptitude and Manipulexity 訳語募集中。 (c) Larry Wall ずいぶん昔にLarryが作った言葉なのだけど、適訳がないことをしゃぶしゃぶを突きながら二人で嘆いていたのがこれ。意味は、この図を見てもらえばGeekであれば理解できるとおもう。 もちろんGeek以外にも使いでのある言葉で、Whipuptitudeはいわば「簡単な事をどれだけサクっと片付けられるか(how easily you can get easy things done)ということで、Manipulexityは「難しいことをどれだけキチっと片付けるか」(how possible you can get hard things done)という意味になる。 「サクサク感」と「キッチリ感」というのもまあまあイケてる

    Whipaptitude and Manipulexity : 404 Blog Not Found
  • 小飼弾氏に聞く: 会議についてどう思いますか? (1/5) - ITmedia Biz.ID

    会議について考えていく連載。今回は、ベストプラクティス的な方法論や一般論だけでなく、ある個人にとって会議またはコミュニケーションとはどのようなものなのかというテーマでインタビューを行った。今回、登場するのはアルファブロガーでオープンソースプログラマーの小飼弾さんだ。 スケーラブル・サマリー──必要なディテールはどのくらいか? 小野和俊 今回のインタビューは会議に関連した連載の一貫として、弾さんにネットとコミュニケーションをテーマとしたお話を伺えればと思います。よろしくお願いします。 小飼弾 よろしくお願いします。 小野 梅田望夫氏はここ数年、セミナーに現地まで出向いて参加するのはやめて、ネットでストリーミング中継を見るようにしているそうです。ネットでのコミュニケーションツールが発達することで、リアルに出向く必要性が低下する場合があると思いますが、弾さんとしてはこのあたりいかがでしょうか。

  • リストの要素数を取得する - Unknown::Programming

    配列ではなくてリストの要素数を取得するのにはどうすればよいか?というお話。 まず配列の場合はスカラコンテキストで評価するだけなんでとても楽。 my @data = qw/ a b c d /; my $count = @data; # 4 ではリストの場合はどうなるか? 配列と同じように書くなら my $count = qw/ a b c d /; こうなるが、これは大間違いである。 リストをスカラコンテキストで評価すると最後の要素が返ってくるのでこの場合$countには「d」が入る。 とするならば一度配列で受け取り、その後にスカラコンテキストで評価するのが一番スマートなのかもしれない。 my $count = my @tmp = qw/ a b c d /; # 4 しかしながら要素数を取得するだけなのに@tmpを広いスコープに置くのが嫌なのであればdoを使って囲ってしまうのが吉であろう

    リストの要素数を取得する - Unknown::Programming
    yugui
    yugui 2007/11/16
    面白い
  • 404 Blog Not Found:perl - Module::Compile で Self::Compile

    2007年11月04日16:30 カテゴリLightweight Languages perl - Module::Compile で Self::Compile PERL HACKS(日語版) [英語版] こういうものこそ、Module::Compile self-0.11なるものを触ってみた - Unknown::Programming なんとまあ悲惨な結果になりました。他かだか1000ループでコレではちょっと使い物にならないかなぁ・・・。#!/usr/local/bin/perl use strict; use warnings; use Foo; my $f = Foo->new(); $f->foo("bar"); print $f->foo; Foo.pm package Foo; use strict; use warnings; sub new { bless {}, s

    404 Blog Not Found:perl - Module::Compile で Self::Compile
    yugui
    yugui 2007/11/04
  • CPAN shellでテキスト色づけ - -

    CPAN shellはカラー表示ができる。 モジュールを入れるときにエラーを見つけるのがわかりやすくなるので使ってる。 Plagger入れるときとかにべーんり。 Term::ANSIColorを入れる。これが入っていると、CPANシェルの起動時にカラー対応になる。 cpan[1]> install Term::ANSIColorで cpan[2]> o conf colorize_output 1 CPAN: Term::ANSIColor loaded ok colorize_output [1]これで色が有効になる。 ターミナルが白背景の場合はここまででOK。 ターミナルが黒背景の場合だと、反転表示になってしまうので、もうちょい設定 cpan[3]> o conf colorize_print 'bold cyan on_black' colorize_print [bold cyan

    CPAN shellでテキスト色づけ - -
    yugui
    yugui 2007/10/28
  • 対談「初心者とハッカーが共存できるPerl」

    現在,Perlユーザーは2極化が進んでいます。初心者はいまだに「CGIが使えさえすればいい」という段階で満足しています。一方で,Perlハッカーは独自の世界を構築し,あまり初心者を省みません。そこでこの特集では,初心者層に絶大な影響力を持つ見上巖氏(ウェブクリエイト代表取締役,KENT-WEBを運営するKENT氏として有名)と,Perlハッカー集団であるShibuya Perl Mongers(Shibuya.pm)の新リーダー,竹迫良範氏(サイボウズ・ラボ)に対談をお願いしました(編集部)。 まずは,Perlとの出会いから教えていただけるでしょうか。 見上 私がPerlに出会ったのはちょうど10年ほど前,1996~97年くらいですね。そのころはコンピュータ・メーカーの営業で,まだプログラミングはできませんでした。自分のWebページにフリーのCGIの掲示板を設置しようとしたのですが,うま

    対談「初心者とハッカーが共存できるPerl」
    yugui
    yugui 2007/10/25
  • 第1回 Class::Componentから始めるプラガブルモジュール | gihyo.jp

    はじめに はじめまして。大沢と申します。 この連載では、筆者が実装したCPANモジュールのClass::Componentを題材にしつつ、近代的なPerlでのプラガブル(拡張可能)なソフトウェアの実装方法を紹介します。 今回は、Class::Componentの概要を説明します。 連載で使うサンプルアプリケーション 連載では、プラガブルなモジュールを作製するという事を考えて、Gopperというサンプルアプリケーションを元に解説を行ないます。 GopperはCodeRepos上のsvnリポジトリに置いてあるので各自checkoutしてください。 svn co -r 271 http://svn.coderepos.org/share/lang/perl/Gopper/trunk Gopper サンプルアプリケーションは連載中にも頻繁にupdateされる事が予想されますので、毎回リビジョン

    第1回 Class::Componentから始めるプラガブルモジュール | gihyo.jp
    yugui
    yugui 2007/10/04
  • List は Array にあらず : 404 Blog Not Found

    2007年05月19日18:00 カテゴリLightweight Languages List は Array にあらず 無謀というより、もともと違うものを一緒にすることはないと思う。 Matzにっき(2007-05-07) こういうの(Lazy List)を将来のArrayクラスに突っ込みたいんだけど、無謀かなあ。 そう。もともとListとArrayは別物なのだから。 確かに、List(リスト)とArray(配列)には、Ordered Collection of Data -- 順番に並んだデーター --という共通点がある。この共通点があるが故に、特にLLにおいてはどちらも同じように扱われる場合が多いけれども、重要な違いが一つある。 Listが Sequentially Accessible なのに対し、 Array が Randomly Accessible だというのが、その違いだ。

    List は Array にあらず : 404 Blog Not Found
  • ||=とdoを使ってキャッシュ - Unknown::Programming

    たとえばメンバ変数にオブジェクトとかをキャッシュするときに、 sub method { my $self = shift; return $self->{hoge_obj} ||= Hoge->new; } とか良くやるんだけど、前処理とかが必要な場合はdo使って sub method { my $self = shift; return $self->{hoge_obj} ||= do { ### 前処理 Hoge->new; }; } こんな感じで良くやるんだけどもコレって一般的なのかな? 前にどっかのソースで、 sub method { my $self = shift; my $code = sub { ### 前処理 return Hoge->new; }; return $self->{hoge_obj} ||= $code->(); } っていう感じのを見たんだけどどっちがい

    ||=とdoを使ってキャッシュ - Unknown::Programming
    yugui
    yugui 2006/12/19
    なるほど
  • perl - Devel::Leak : 404 Blog Not Found

    2006年12月08日11:00 カテゴリLightweight Languages perl - Devel::Leak そんなあなたに、Devel::Leak。 Rauru Blog ? Blog Archive ? 循環参照 ところが Scalar::Util 使って循環参照になってるとおぼしき変数を全部 weaken してみたんだけど、DESTORY されるかどうか見てみると、1サイクル終わっても1つだけ解放されないオブジェクトが残ってる。どうしちゃるかねとゆうわけで、今度は Devel::Cycle を CPAN から取って来てインストール。ところがこれ、参照元側のオブジェクトを1個指定して循環参照を検索するもんなんですね。どれが参照元なのかわからないので、やっぱり見つからないー。ただし、肝心のLeakしているオブジェクトまで表示させるには、-DDEBUGGING付きでcompi

    perl - Devel::Leak : 404 Blog Not Found
    yugui
    yugui 2006/12/09
  • YappoLogs: String::Diff - 行内差分取得モジュール

    String::Diff - 行内差分取得モジュール 普通のdiffは行単位での差分を取るんですが、一行の中での差分がどうしても取りたくてString::Diff(2008/06/24リンク切れなおしたtokuhirom++)ってのを作りました。 既存のCPANモジュールだとString::ShowDiffが微妙に近かったんですが、目的の事が出来ないので作りました。 出来ることは 文字列同士の差分を作って変更無い場所、変更が合った場所で配列を分けて作成。 my $diff = String::Diff::diff_fully('this is Perl', 'this is Ruby'); for my $line (@{ $diff->[0] }) { print "$line->[0]: '$line->[1]'\n"; } # u: 'this is ' # -: 'Perl' fo