タグ

ブックマーク / perl-users.jp (33)

  • CPAN Author になりました - Dist::Zilla のご紹介 - Articles Advent Calendar 2012 Casual

    Hacker track で[/articles/advent-calendar/2012/hacker/8:title=記事]を読んで頂いた方はこんにちは。それ以外の方は初めましてだと思います。数ヵ月前に CPAN Author になりました yak_ex と申します。 Perl を使い始めてから既に 10 年以上経っておりモジュールもたまに書いたりはしていたのですが、CPAN Author となると色々と手順があって大変なんじゃないか、そんな思いもありずっと憧れの存在でありました*1。同じように感じている人もいるんじゃないだろうかということで、そんな自分が CPAN Author となるハードルを下げてもらった Dist::Zilla についてご紹介させて頂きます。なお、Dist::Zilla で CPAN Author になった、なので他の CPAN Author 向けモジュールとの

    CPAN Author になりました - Dist::Zilla のご紹介 - Articles Advent Calendar 2012 Casual
  • Scope::Guard等でリソース解放を実装する際に知っておきたいこと - Articles Advent Calendar 2012 Hacker

    みなさんガードオブジェクト使ってますか。ガードオブジェクトとは一般的には オブジェクト生成時になんらかのリソースを初期化・取得 オブジェクト解放時に該当リソースを解放 という動作をするオブジェクトをさします。 Perlではガーベジコレクションにリファレンスカウント方式を取っているため、ガードオブジェクトが解放されるタイミングが制御しやすいので比較的頻繁にガードオブジェクトを作って様々なリソースの初期化〜解放までを簡単にコントロールしたりします。 わかりやすい例で言うと、例えば現在実行中のスクリプトが動いている間だけ別プロセスでmemcachedのようなサーバーを立てたい、という時にProc::Guardなどのモジュールを使うと、以下のようなコードを仕込むだけで簡単にmemcachedプロセスを起動、終了することができます use strict; use Proc::Guard; my $g

    Scope::Guard等でリソース解放を実装する際に知っておきたいこと - Articles Advent Calendar 2012 Hacker
  • vim で Perl を書くときのための tips - Articles Advent Calendar 2012 Casual

    @tokuhirom です。Perlを書き始めて8年ほど経ち、Perlで何か作る際の効率化の手法がそれなりに確立してきたので、それを思いつくままに紹介しようと思います。主に多言語から来てPerlにほどんど慣れてない方などを想定しています。 僕の秘伝のタレ的な .vimrc の中から perl に関係ある部分だけをぬきだしてお教えしましょう。すべて設定すればだいぶ快適になりそうです。とかかいてると教えるのもったいない気分になってきた。 ぼくの環境 僕は vim の環境として以下のようなものを指定しています。mattn さんからは DIS られがちです。 neosnippet unite.vim pathogen vim-perl プロジェクトの成果物をつかう https://github.com/vim-perl/vim-perl なんか最近、perl-vim から vim-perl にかわ

    vim で Perl を書くときのための tips - Articles Advent Calendar 2012 Casual
    tzccinct
    tzccinct 2012/12/15
    require DBIx::QueryLog; my $guard = DBIx::QueryLog->guard();
  • App::YG - ログをう゛ぁーてぃかるぱみゅぱみゅしちゃう!! - Articles Advent Calendar 2012 Hacker

    やあハッキングモンスターのみんな、元気かーい? ぼくは普通です。 きょうはみんなでログをう゛ぁーてぃかるぱみゅぱみゅしちゃうぞ!あ、こんにちは bayashi です。 さて、ログは見てるかい?cat してるかい? tail してるかい? GB単位のログを vim で開いてフリーズさせてやいないかい?ログは吐いたら終わりじゃいけないぜ!ちゃんとうぉっちしないと鬼がでちゃうぞ!! とはいえ、そんなログも、たいていは1行につらつらと書かれてて見るのがつらいね!!例えばこんなやつだ。 $ tail log 127.0.0.1 - bayashi [10/Oct/2000:13:55:36 -0700] "GET /apache_pb.gif HTTP/1.0" 200 2326 "http://www.example.com/start.html" "Mozilla/4.0 (compatible

    App::YG - ログをう゛ぁーてぃかるぱみゅぱみゅしちゃう!! - Articles Advent Calendar 2012 Hacker
  • カジュアルにperlデバッガを使って捗る - Articles Advent Calendar 2011 Casual

    こんにちは。perlでほげほげするのが大好きなtoritori0318と申します。 さて突然ですが、みなさんはperlのデバッグをどのように行なっておりますでしょうか? print+Data::Dumper で十分!という方から、 epicやPadreといったIDEでデバッグしたいよね、 アプリで出してるログ使ってるよー、 はたまた漢ならperl標準デバッガ使うべし、 など、いろいろなご意見があるでしょう。 自分はほとんどのケースでperl標準デバッガを使っています。 軽いし環境に依存しないし機能は十分だし最高! ということで今回はPerl標準デバッガについて書いてみます。

    カジュアルにperlデバッガを使って捗る - Articles Advent Calendar 2011 Casual
  • prove についてのおさらい - Articles Advent Calendar 2011 Test

    はじめに 忘年会シーズンまっただ中で皆さんは毎日お酒を飲んでいることでしょうが、僕は友達が少ないため忘年会とか全然無いので財布はまだホットな状態なんですが、なぜ僕の妹は小鳩ちゃんじゃないんだっていうかそもそも妹いないしもう死ぬって感じの xaicron です。こんにちは。 そろそろ prove について簡単に説明しときますよっと。 prove のよく使うオプション prove にはいっぱいオプションがあるんですが、ここではよく使いそうなやつをピックアップして紹介しちゃいますよ! -v, --verbose # いっぱい出力する -l, --lib # lib を INC についかする perl -Ilib 相当 -b, --blib # blib/lib とか blib/arch を INC につかする -Mblib 相当 -c, --color # カラフルになる! MSWin32 だと

    prove についてのおさらい - Articles Advent Calendar 2011 Test
  • DBIx::QueryLog でクエリの実行計画も丸見えにする! - Articles Advent Calendar 2011 Dbix

    好きって言葉は最高さーー!!!!kamipoです!!今日はAKB48の紅白対抗歌合戦があるので急いでいきたいと思います!! DBIx::QueryLog で EXPLAIN の結果もロギングしたい xaicron さんの9日目のエントリ、[/articles/advent-calendar/2011/dbix/9:title=DBIx::QueryLogDBI で実行された SQL を丸見えにする!]でおなじみの神モジュール DBIx::QueryLog 便利ですよね!? でもEXPLAINの結果もロギングできたらもっと便利だと思いませんか?僕は思いました!! そこで、EXPLAIN の結果もロギングできるパッチを取り込んでもらったので、新しいのが出たら使えるようになると思います!(いまはまだMySQLだけですが…) つかいかた とくにクエリに意味はないですが、こういうクエリを投げる

    DBIx::QueryLog でクエリの実行計画も丸見えにする! - Articles Advent Calendar 2011 Dbix
  • DBIx::QueryLog で DBI で実行された SQL を丸見えにする! - Articles Advent Calendar 2011 Dbix

    こんにちは、最近 PSP1000 の電池が一瞬で切れてしまってまともにゲームができない xaicron です。 さて、みなさんは DBI から吐かれた SQL をみたいなーと思うこともあるでしょう。 そんな時は、$ENV{DBI_TRACE} = 2 とかしてみると、ドバーッといっぱいデバッグログが出てきて、 その中に実際に発行された SQL がちょろっと出てたりするのでこいつを頑張ってパースすればいい感じですね! っていうのはだいぶ面倒だったりしますね。あたりまえですね。 そこで、use するだけでとりあえず全部の発行された SQL を STDERR にはいてくれるモジュールを書きました。 その名も DBIx::QueryLog です。そのままですね。 つかいかた 使い方は至極簡単で、どっかで適当に use するだけです。ほかには何もいりません。 そうすると、以下のような感じで STDE

    DBIx::QueryLog で DBI で実行された SQL を丸見えにする! - Articles Advent Calendar 2011 Dbix
  • DBIx::Handlerで安心DB生活 - Articles Advent Calendar 2011 Dbix

    こんにちは!nekokakです! 今年はボクが作ってるDBIx::Handlerというものを紹介してみる。 DBIx::HandlerはDBIのラッパーでありDBのコネクション周りの管理に重点を置いたモジュールである。 ORMを使わずにDB周りの処理を行いたい場合はこのDBIx::Handlerを使うことをおすすめする。 自分でDBIのインスタンスを生成し利用する場合どこまで正しくコネクション管理をあなたはできますか? そもそも親プロセスで接続したdbのインスタンスを子プロセス側でも利用することの問題を正確に把握していますか? そこまで正しく細かく理解し自分で実装できたとしてもだ、新しいプロジェクトを作るたびにそのコードをコピペするのか? そこでDBIx::Handlerの出番だ。 DBIx::Handlerはそのあたりの処理をすべて面倒みてくれる。 もうあなたは いつDBとの接続が着られ

    DBIx::Handlerで安心DB生活 - Articles Advent Calendar 2011 Dbix
  • Alien::RRDtool - RRDtoolをCPANから入れる - Perl Advent Calendar Japan 2011 Hacker Track

    前置き こんにちは。gfx です。みなさん、意識は高まっていますか? 僕は上々です。今回は拙作の Alien::RRDtool というモジュールを紹介いたします。 CloudForecastやGrowthForecastを使いたい!と思ったとき、RRDtoolのPerlバインディングであるRRDs.pmをインストールするのが面倒だったりします。特にperlbrewで入れたperlではRRDtoolsのソースコードをとってきてビルドしなければならないため、RRDtoolはパッケージマネージャを使ってインストールし、CloudForecastはsystem perlで動かすというのが今までのベストプラクティスでした。 Alien::RRDtoolはRRDtoolをCPAN経由でインストールするためのモジュールで、RRDtoolの各種コマンドとPerlバインディングを簡単にインストールすることが

    Alien::RRDtool - RRDtoolをCPANから入れる - Perl Advent Calendar Japan 2011 Hacker Track
  • Encode::Locale - 環境に合わせたエンコーディングを提供する - Articles Advent Calendar 2011 Casual

    こんにちは、Csideです。最近はtwitterでウザ絡みするのが楽しくて仕方がありません。 さて、3分で読める軽い話をば。Gisle Aas氏の書いたEncode::Localeというモジュールの紹介です。 Perlでマルチバイト文字を処理する際は、「外から受け取るときはdecode、出力するときはencode」というのは基ですね。自分で使うスクリプトを書くぶんには、自分のターミナルのエンコーディングに合わせてencode/decodeしてやればいいですね。 しかし、作ったスクリプトを他の人にも使ってもらいたくなったときに問題は発生します。あなたの作ったスクリプトを使う人のターミナルのエンコーディングはUTF-8とは限らず、EUC-JPかもしれませんし、WindowsであればShiit_JISかもしれないからです。 それでは、その環境のターミナルのエンコーディングに合わせてencode

    Encode::Locale - 環境に合わせたエンコーディングを提供する - Articles Advent Calendar 2011 Casual
  • 非破壊な s/// のススメ

    正規表現の置換でときどき困るのは、元の文字列が変更されてしまうことです。そのため、たとえば文字列を URI escape する際には、以下のように別変数にコピーした上で、正規表現を適用することになります。 my $escaped = $search_str; $escaped =~ s/([^0-9A-Za-z_.!~*'()-])/'%' . uc(unpack('H2', $1))/eg; my $url = "http://example.com/search?q=$escaped"; 以前、この点がめんどくさいなーとブログに書いたところ、kazeburo さん他に以下のようなテクニックを教えていただきました。 use List::MoreUtils qw(apply); my $url = 'http://example.com/search?q=' . apply { s/([^

    tzccinct
    tzccinct 2011/05/21
    List::MoreUtils::apply(), s///r
  • ファイル操作にまつわるエトセトラ - Articles Advent Calendar 2010 Win32

    最近なぜかタクティスクオウガを2個買った xaicron です。そういえば持っているのは PSP-1000 なので、そろそろ 3000 か Go が欲しいです。サンタさんはまだ僕のところに来るのかな? 今日は Windows でより便利かつポータブルにファイル操作をする方法とかをつらつらと書いていこうと思います。 思いついた順に適当に書いていくので、悪しからず。 実は / が使える Windows の path 区切りは 「\」 であることは周知のとおりですが、実は 「/」 も扱えます。 「\」だとダブルクォートの時に重ね打ちしないといけないし、正規表現での変数展開でもよろしくない動きをしたりしてちょっと悲しいです。 say "C:\nekomimi-mode"; # C:{改行}ekomimi-mode say "C:\\nekomimi-mode"; # C:\nekomimi-mod

    ファイル操作にまつわるエトセトラ - Articles Advent Calendar 2010 Win32
  • proveをうまく使ってテスト実行を効率化しよう - Articles Advent Calendar 2010 Casual

    こん(にちは|ばんは).最近は卒論でC/アセンブラ,アルバイトでPerl/Objective-Cと高低レイヤーを行ったり来たりなyaottiです. このエントリでは,テストを実行する時に便利なproveコマンド(App::Prove)の便利な機能+αについて紹介します. 基的な使い方 prove t/foo.t のようにして使います.perlと同じように-lや-Idir,-v, -MModule::Nameなども使えます. prove -l -Ilib -v t/foo.t 他にも,-Pオプションでプラグインを利用することもできます. 例えばmotemenさんの書いたApp::Prove::Plugin::ProgressBar::Eachは大量のテストを実行するときに便利です. cpanm https://github.com/motemen/App-Prove-Plugin-Prog

    proveをうまく使ってテスト実行を効率化しよう - Articles Advent Calendar 2010 Casual
  • YouTube の動画を保存する - Articles Advent Calendar 2010 Hacker

    最近寒過ぎて家からでられない xaicron です。 みなさん YouTube の動画をダウンロードしたいですよね? そんな時は、WWW::YouTube::Download を使いましょう。 死ぬほど内部実装が変わってそのたびに泣ける YouTube ですが、いまだにくじけずにちゃんとメンテしていて、現役でダウンロードできます。 基編 use WWW::YouTube::Download; my $client = WWW::YouTube::Download->new; $client->download('http://www.youtube.com/watch?v=Ry6Rupm3kqM'); とすれば、「Ry6Rupm3kqM.mp4」という名前でダウンロードされます。 ファイル名を変えたい ファイル名はタイトルにしたいところかと思いますので、 my $params = $cl

    YouTube の動画を保存する - Articles Advent Calendar 2010 Hacker
    tzccinct
    tzccinct 2011/01/17
  • Text::MeCab(日本語変換系Acmeモジュールを支える偉大なモジュール) - Articles Advent Calendar 2010 Acme

    こんにちは、とみたトミールです。 Text::MeCabに依存しているモジュールリストがAcmeばかり、しかもかなりぼくのモジュールじゃないかwと気づいたので、この偉大な日語変換系Acmeモジュールを支えるText::MeCab様についてあらためて使い方を紹介してみます。 mecabとは mecabとは、日形態素解析を高速に、未知語もいい感じで補足してくれるよくできたライブラリです。作者の方はGoogleにいて(今も、たぶん。)エイプリルフールに日語お笑い系機能を出したりしています(それが職じゃないと思いますけど)。 インストールすると入るmecabコマンドから、コマンドラインではこんな感じに使います。mecabを起動してから、文を入力してエンターです。 $ mecab わたしはたわしをわたしました。 わたし 名詞,代名詞,一般,*,*,*,わたし,ワタシ,ワタシ は 助詞,係助

    Text::MeCab(日本語変換系Acmeモジュールを支える偉大なモジュール) - Articles Advent Calendar 2010 Acme
  • PerlIO::via で遊ぶ - JPerl advent calendar 2010 acme Track

    こんにちは、こんなにトミールを名乗っているのにいつまでたってもトミールの検索結果が抗ウイルス製剤のトミールです。今年も1位奪還は失敗しました。 さて、今日は Acme じゃないんだけど限りなく Acme ぽい PerlIO::via をご紹介しましょう。 役に立つ PerlIO 基礎知識(Acme に入る前に) perl の IO レイヤーは、実はいろいろできて便利です。一番便利なのは、:encoding() でしょう。 こういう、 use autodie; use Encode; open(my $fh, '<', 'file.txt'); while (my $line = Encode::decode('cp932', <$fh>)) { print Encode::encode('utf-8', $line); } 入力を cp932 エンコーディングで decode()、出力は

    PerlIO::via で遊ぶ - JPerl advent calendar 2010 acme Track
  • @INC にみる Perl のやりかたがいっぱい - Articles Advent Calendar 2010 Casual

    こんにちは。最近は PHP ばっかり書いている、永遠の Perl 初心者 hatyuki です。 とつぜん質問ですが、みなさんが最も多くみている Perl のエラーはなんですか? 自分の場合は、う〜ん。。。 Can't locate Hoge.pm in @INC (@INC contains: ~~~~ .). BEGIN failed--compilation aborted. かな?いつまでも進歩がないのが伺えますね! 皆さんご存知の通り、このエラーは "@INC" で指定されたディレクトリの中にモジュールが見つからなかった場合に発生するエラーです。つまり、モジュールをインストールし忘れているか、モジュールがどこに置いてあるのかを適切に設定していないか、の (およそ) どちらかですね。 さてさて、Casual Perler な皆さんは、このエラーを回避するためにどんな方法を使って @

    @INC にみる Perl のやりかたがいっぱい - Articles Advent Calendar 2010 Casual
  • HTML::Shakanでフォーム生成・バリデーションからモデル作成まで - JPerl advent calendar 2010 casual Track

    こんにちは!先日のYAPC2010ではhirataraさんと共にgihyo.jpでレポータをさせていただいたusuihiroです。 フォーム処理とかバリデーションっていつも面倒だなぁと思っていたのですが、今日はtokuhiromさんが作成されているHTML::Shakanが便利そうだったので試してみました。 HTML::Shakanはフォームタグの生成とバリデーションを行ってくれるモジュールです。 コンセプトは作者のtokuhiromさんが書かれているこちらを参照。 フォーム生成とバリデーション よくあるログインフォームだと、こんな感じでフォームの生成の入力値のバリデーションが行えます。 my $req = shift; # CGIとかPlack::Requestとか # フォームオブジェクトを作る my $form = HTML::Shakan->new( fields => [ Ema

    HTML::Shakanでフォーム生成・バリデーションからモデル作成まで - JPerl advent calendar 2010 casual Track
  • とある言語の例外処理 またはTry::Tinyの落とし穴 - Articles Advent Calendar 2010 Casual

    今年の Advent Calendar もいよいよ中盤戦。 もういくつ寝ると、メリーク×ト×ス! 最近、休日になると漫画を大人買いするのが趣味になってしまったいけない大人になってしまった僕ことzentoooですが、最近のお気に入りは「未来日記」です。あー由乃かわいいなーかーわいいなーーーかーーーわいーなあーーーーあーあーあーーーーーーあーーーーーーーーーーー頭おかしいけど。 ふぅ。 さて、みなさん、コード書いてますか、コード読んでますか。 短く簡潔なコードを読むと、気持ちもスッキリしますね。 でも、たまには例外処理なんてどうですか。 Perlで例外処理ができるなんて、なんか渋くないですか。 Perlにおけるベーシックな例外処理 冗談はさておき、初めてのPerlというハレンチなを読んだりすると、多分書いてあるのは以下のような方法による例外処理です。実際に初めてのPerlに書いてあるかどうか

    とある言語の例外処理 またはTry::Tinyの落とし穴 - Articles Advent Calendar 2010 Casual
    tzccinct
    tzccinct 2011/01/11
    cf. Error::Return