タグ

関連タグで絞り込む (562)

タグの絞り込みを解除

perlに関するlesamoureusesのブックマーク (657)

  • Perlで正規表現のパターンに変数を使う際の注意 - 反応点灯

    使い慣れていないPerlでハマったのでメモ。 正規表現のパターンに変数を使ったとき、その変数の値が正規表現のメタ文字を含んでると正しく動かない。言われてみればその通りなんだけど、気づくのに30分近くかかった…。 quotemetaを使って事前にエスケープすれば解決。 $value = quotemeta( 'foo(bar)' ) ; if ( $text =~ /$value/ ) { print "OK.\n" ; }

    Perlで正規表現のパターンに変数を使う際の注意 - 反応点灯
    lesamoureuses
    lesamoureuses 2013/10/24
    ハマった “ quotemetaを使って事前にエスケープすれば解決。”
  • 引数の明示という観点からのPerlモジュール群 | hirobanex.net

    Perlモジュールのバリデーターと呼ばれるジャンルのモジュールなどをバリデーションという観点ではなく、引数を明示するという観点から整理しました。 バリデーターの種類 バリデーターというものは、一般的に引数が期待される型など(整数か、文字列か、URLか、メアドか等)になっているかどうかをチェックするというものです。特に、Webアプリにおけるフォームから入力されるデータのチェックに活用されることが多いです。そういういった意味から、Perlのバリデーターモジュールはフォーム系と非フォーム系に分類することができます。 フォーム系のバリデーター等 FormValidator::Lite CPANにも紹介されている強力なフォームバリデーターです。フォームバリデーターとしては、フォームの型の定義、チェック、エラーメッセージの定義、が必要ですが、やりたいであろうことのだいたいがそろっているモジュールで実

    lesamoureuses
    lesamoureuses 2013/10/22
    今もSub::ArgsとSmart::Args使っておけばいいですか
  • Devel::NYTProf で Starlet/Starman (Plack) でうごくウェブアプリケーションのプロファイリングをおこなう方法まとめ - tokuhirom's blog

    Devel::NYTProf は Perl5 の世界でもっとも人気があるプロファイラである。表示が美麗であるし、ステップごとの処理速度が簡単にわかるのでとても便利だ。 そんな Devel::NYTProf であるが、Starlet/Starman のようなプリフォーク式のサーバーでうごくウェブアプリケーションとくみあわせる場合の方法論として、わかりやすい資料がみあたらなかったのでここに記すものである。 環境変数 NYTPROF を設定する Devel::NYTProf は環境変数で挙動を変えられる。 plack とくみあわせる場合には、以下のようにするとよい。 NYTPROF=sigexit=int:savesrc=0:start=no sigexit=int 通常、Devel::NYTProf は END { } ブロックでデータのファイナライズ処理をおこなうのだが、SIGNAL によっ

  • Released Cookie::Baker to CPAN - Hateburo: kazeburo hatenablog

    I released Cookie::Baker that provides HTTP cookie generator and parser http://search.cpan.org/~kazeburo/Cookie-Baker/ https://metacpan.org/release/Cookie-Baker ### synopsis use Cookie::Baker; $headers->push_header('Set-Cookie', bake_cookie('foo','val')); my $cookie = bake_cookie('foo', { val => 'val', path => "test", domain => '.example.com', expires => '+24h' }); my $cookies_hashref = crush_cook

    Released Cookie::Baker to CPAN - Hateburo: kazeburo hatenablog
  • perlがスクリプトをどのように解釈しているのかを知るためのB::Deparseなるものを知った - It's raining cats and dogs.

    僕のperlの先生monmonさんに今日もまた教えてもらった。 perlがどのようにスクリプトを解釈しているのかを事前に知ることのできるB::Deparseというものがあるらしい。 ↓のサイトを参考にさせていただいた。 http://www.g-ishihara.com/perl/compiler01.html B::Deparseってのは、perlスクリプトをコンパイルして、そこから更にソースコードを生成(デコンパイル?)するらしい。なのでperlがどのようにそのスクリプトを解釈しているのかってのがわかるとか。 ちなみにBモジュールってのはperlのコンパイラ系のモジュールで、Oモジュールってのはそのモジュールを操作するためのインターフェースみたいなものとのこと。 ではやってみる。 $ perl -MO=Deparse -e 'use constant HOGE => 1;print H

    perlがスクリプトをどのように解釈しているのかを知るためのB::Deparseなるものを知った - It's raining cats and dogs.
    lesamoureuses
    lesamoureuses 2013/10/02
    tadasyさんがPerl勉強して僕が教わるパターンまであと少し
  • Current status this book, perl and me - 「CPANモジュールガイド」編集後記

    YAPCも近いので近況書いてみようと思います :) ひさしぶりにログインしたけど、左上のネコかわいいっすね! ぼくは今も VOYAGEGROUP という会社で働いてます。主にiOS向けのサービスをやる事業部にいますが、アプリサーバーはほとんどがperlで書かれたもの。バリバリ動いてくれてます。他にはPHPで書いたものもあるし、ObjCもさわるし、バッチとかもろもろ含めるとnodeやらrubyとかpythonとかいろいろ雑に使ってます。 perlについて言うと、執筆当時なかったのは http://metacpan.org。今はほぼ cpan.org の代わりに使うようになりました。特に良いなと思うのは+1機能で、これのおかげでもはや全 cpan update を見る苦行せずとも、最近の++された一覧や、もっとサマライズされた http://niceperl.blogspot.jp/ の週刊

    lesamoureuses
    lesamoureuses 2013/09/19
    “実は面識無くても、「御社にいるトミールという奴の作った Acme::Samurai というモジュールがおもしろかったので応募しました」とかいえばいろいろすっとばしてぼくと面談になったりする可能性大ですw”
  • モダンPerl入門増補改訂版(仮)

    ページは『モダンPerl入門 増補改訂版(仮)』の特設サイトです。商品紹介のほか、電子書籍版の早期ディスカウント販売(β版を先行提供)などを予定しています。今後の更新情報は「CodeZine Books」のFacebookページなどで配信していきます。 書の内容 書は、Perl言語でプログラミングする上で、筆者の経験を基に日々の仕事で使えそうなティップスやベストプラクティスを集めたです。基礎知識は身につけている読者を想定して、Perlの基文法やプログラミングの基は意図的にカバーしていないため、プログラミング初心者にとって書は難解かもしれません。 2009年に刊行した初版では、いまだに根強い「PerlCGI」「Perl=オブジェクト指向ができない」「Perl=開発が止まっている」といった間違った思い込みを正したいという当時の筆者の思いから、筆者が使っている最新ツールやモジュ

    lesamoureuses
    lesamoureuses 2013/09/18
    楽しみ
  • Perl で utf8 文字列を byte サイズで split する - shag の日記

    utf8 な文字列を特定のバイトサイズで切り分ける処理って Perl でどう書けば一番良いのかを長いこと考えてた(あまり困ってはなかった)んだけど、UTF-8文字列をバイト数でカットした時の末尾の処理 見たら簡単に書けた。 #!/usr/bin/perl use strict; use warnings; use Encode qw( is_utf8 decode _utf8_on ); require bytes; my $utf8 = decode( 'euc-jp', "この日語テキストは euc-jp で書かれていますが utf8 に変換されます" ); my @splited = byte_split( $utf8, 12 ); binmode STDOUT, ':utf8'; printf "utf8 string = %s\n", $utf8; for my $str (@

    Perl で utf8 文字列を byte サイズで split する - shag の日記
  • http://tokuhirom.github.io/talks/20130830-hokkaidopm-cpan/index.html

    lesamoureuses
    lesamoureuses 2013/09/02
    これかわいい。☻
  • DBD::SQLite 1.41_01 - Charsbar::Note

    SQLite 3.8.0 が出たので、DBD::SQLiteにバンドルされているライブラリも更新して、1.41_01としてリリースしました。SQLite 3.8.0ではクエリプランナーが一新されているほか、where節で限定する部分インデックスも利用できるようになっています。 新しいクエリプランナーの詳細については下記をどうぞ。 http://www.sqlite.org/queryplanner-ng.html 私自身はまだ使い込んでいませんが、SQLiteの作者氏によれば、sqlite.orgで2ヶ月以上使ってみたけれども問題は出ていないとのこと。DBD::SQLiteのテストから判断する限り、今回の変更によって余分なsortがひとつ減ったりしていますので、通常は新しいクエリプランナーの方が多かれ少なかれよい結果が期待できるはずですが、前回のクエリオプティマイザ最適化のときにもあったよ

    DBD::SQLite 1.41_01 - Charsbar::Note
    lesamoureuses
    lesamoureuses 2013/08/30
    "URI形式のデータベース名を使う場合は、従来の「 dbname= 」ではなく、「 uri= 」を使ってURIを渡してください"
  • Perl UTF-8 crash course

    I’ve been seeing the occurrences of perl programmers not understanding perl’s very simple (and sometimes buggy but easily fixable) handling of Unicode strings. I confess I had the same misunderstanding until 6–7 years ago, and don’t want everyone to repeat the same mistake. Let’s forget what you know for 5 minutes, and take this simple course. 1. print($a, $b) and print($a . $b); Let’s forget, for

  • test-travis(1)というコマンドを書いた - Islands in the byte stream (legacy)

    https://github.com/gfx/App-test-travis Travis-CI は CPAN Testers のない言語だとライフチェンジングなサービスだし、 CPAN Testers のある Perl においてもpushごとにCIを走らせたりちょっと変わった設定でテストを走らせたりできる大変便利なサービスですが、設定ファイルを正しく書くのがわりと面倒で、うまく動かすために.travis.ymlを少し変更してcommit & pushというのを何度もするはめになったりします。なので、ローカルで.travis.ymlを読んで実行するコマンドがあれば便利だろうというのがこれを作った動機です。 まだ作りはかなり適当で、before_install, install, before_script, scriptセクションを順番に実行するだけのもので、envやversionsをよし

    test-travis(1)というコマンドを書いた - Islands in the byte stream (legacy)
  • PAUSE における comaint とはなにか - tokuhirom's blog

    よく miyagawa さんとかが comaint が云々といっていますが、意外としられていないのが comaint の実態です。 まずは PAUSE の処理フローについて考えてみましょう。 まず minil release とかして tar ball を PAUSE のサーバーにアップロードします。この時、アップロード先は authors/id/M/MO/MOZNION/HTML-Shakan-0.18.tar.gz とかになります。 そうすると PAUSE のインデクサがブンブンと動きだして、META.json の provides セクションまたは .pm を解析して、package とバージョンの情報が抽出され、データベースに登録されます。 この際、新規ネームスペースや、自分がもってるネームスペースならいいのですが、他の人がもってる namespace の場合には UNAUTHOR

  • Minilla を用いた Perl モジュールの作り方 - tokuhirom's blog

    http://shanon-tech.blogspot.jp/2013/05/perl.html Perl モジュールの作り方、2013年においては Authoring tool をつかって作るのがよいです。具体的には Minilla でつくるのがオススメであります。 perlbrew なり plenv なりで perl をいれたあとは、 % cpanm Minillaとして Minilla をインストールします。 % minil new Fooとすると、Foo.pm のスケルトンができあがります。作者の名前などは ~/.gitconfig などから自動的にさがしてきますので、設定不要です。 できあがったディレクトリは以下のような形になっています。 Foo ├── Build.PL ├── Changes ├── cpanfile ├── lib │   └── Foo.pm ├── LI

  • おそらくはそれさえも平凡な日々: cpanfileのrequiresにURLを直接指定するのは好ましくない

    cpanfileでは、requires "git:..."; のように、gitやtarballのURL等を指定すれば cpanm --installdeps . でモジュールがインストールできる「裏ワザ」があることが 結構知られているようです。しかし、これは好ましくありません。そもそも CPAN::Meta::Spec準拠ではありません。 これはあくまでcpanm側が第1引数にgitやtarballのURLなどを指定すればよしなに インストールしてくれるから現状は「偶然」そういう動きになっているだけです。 (cpanm git:...でインストールできるので、requires "git:..."; って書いてあれば 入れてくれてしまうってことです。) あくまでインストールにcpanmを使った場合に動くってだけの限定的な話で、しかも今後は 動かなくなる可能性が高いです。 実際問題、requi

  • C84にて「雅なPerl入門」という本を頒布します - Subvoice

    C84の宣伝です。Perlの入門書を書きました。内容は、雅ちゃんがハッカークロウにPerlを教えてもううという内容で、以下の内容を含んでいます。 Perlの開発環境を整えよう スカラー 配列とリスト ハッシュ サブルーチン コンテキスト 正規表現 リファレンス オブジェクト指向 内容は、よくあるPerlの基からオブジェクト指向まで入れました。plenvやcpanmなども利用しています。内容は、堅苦しくならないように会話形式で進んでいくので比較的読みやすいのではないかと思っています。執筆の時間があまりなかったので、いろいろ不備があるかと思いますが、もし興味がありましたらぜひ買いに来てください。スペースは、3 日目 月曜日 東5ホール ペ11b 雅なラクダです。よろしくお願いします!!あたりまえですが中身は18禁ではないです!!

    C84にて「雅なPerl入門」という本を頒布します - Subvoice
    lesamoureuses
    lesamoureuses 2013/08/07
    欲しい
  • Carton 1.0 時代の Web アプリケーション開発フロー - tokuhirom's blog

    Carton 1.0 がでたところで、Web アプリケーション開発のフローを一度見直しておきたい、そんな人も多いでしょう。 そんな方のために僕のやりかたをまとめました。各社、議論の叩き台にしていただければよろしいかと存じます。 もっとも重要なことは、、 Carton を使うときに、僕が最重要だと思うことは、できるだけ番環境と開発環境の環境をそろえるということです。CPAN モジュールが番と開発でバージョンちがうから挙動がちがってた!! なんてのは時間の無駄ですし、よくないことですからね。 ですから、各開発環境と番環境をできるだけそろえることを意識していきたいとおもいます。 DarkPAN は使ってない そんなに DarkPAN 的なのを使うほど、DarkPAN 的なオレオレモジュールがないので、git submodule で管理しています。 【201308061241update】

    lesamoureuses
    lesamoureuses 2013/08/06
    実際の使い方参考になる
  • Carton 1.0 リリースによせて - tokuhirom's blog

    http://weblog.bulknews.net/post/57356232719/carton-1-0-is-released Carton 1.0 がリリースされました。おめでとうございます! miyagawa++ というわけで早速手元でうごかしてみたところ、いくつか問題があったので miyagawa さんに修正していただきました。 1.0 リリースまでにためしたいところだったのですが、面倒くさくて無理でした。 今回のアップデートで個人的にいいなーとおもったのは以下のような点です。 carton update が実装された 待望の carton update が実装されております。これにより、あたらしめのバージョンに移行することができますね! carton check が実装された cpanfile に記述されてるけどインストールされてないモジュールを確認できる!! carton.

    lesamoureuses
    lesamoureuses 2013/08/05
    carton checkいい
  • Carton 1.0 is released

    Carton v1.0.0 is released on CPAN. Since the first announcement at YAPC::NA 2011, I’m sure it has taken more time than necessary, but after my attempt to grok Ruby’s bundler more, i refactored and rewrote most of the code, and I think it’s usable for the most of production apps. I’ve been using it on my production website that handles millions of requests, and I know a lot of businesses use carton

    lesamoureuses
    lesamoureuses 2013/08/05
    Carton 1.0!
  • PerlでAssert - Islands in the byte stream (legacy)

    Perl5.9の時点では,assersionsと-Aコマンドラインスイッチという仕組みでCのassert(3)のようなことができるようになるはずだったらしい。しかし,そのメカニズムはPerl5.10には結局採用されなかった。 開発中はassert()が欲しい,しかし,リリース後の実行時パフォーマンスは落としたくない,というのがAssertを考えるときのジレンマというわけだ。そんななかで,CPANのCapr::Assertは関数呼び出しを完全に消し去ることができるので悪くない方法だと思う。 use Carp::Assert; assert($x > 1) if DEBUG; DEBUGはCarp::Assertの提供する定数関数で,その値が偽ならばこの一文はコンパイル時に完全に削除される。 $ PERL_NDEBUG=0 perl -MO=Deparse -MCarp::Assert \ >

    PerlでAssert - Islands in the byte stream (legacy)
    lesamoureuses
    lesamoureuses 2013/08/03
    こうやればいいのか