タグ

perlに関するpaselaのブックマーク (192)

  • にひりずむ::しんぷる - Git ライクなコマンドライン引数を処理できる Getopt::Compact::WithCmd を書いた

    近いうちに水性ペンを買います。(挨拶) コマンドライン引数を処理するモジュールっていっぱいありますね!ありすぎてどれがいいかよくわからないし、「まぁぶっちゃけ Getopt::Long さえあれば大体いいよね!コアだし!」って感じですが、まぁなんか書いた。 xaicron's p5-Getopt-Compact-WithCmd at master - GitHub App::Cmdとかありますが、あれはモジュール化しなきゃいけなくて、大変めんどうです。*1 俺は一枚のスクリプトに書きたいんだ!! サブコマンド前提 usage は自動生成 default や required の指定が可能 依存が少ない(かも)*2 という感じです。最初は、Getopt::Compactを継承して書いてたんですが、途中からなんかあびゃーってなったのでやめました。使い方は大体一緒ですが。 Getopt::Com

    pasela
    pasela 2011/11/10
  • Perlの登録商標について - Perl belongs to us : 404 Blog Not Found

    2011年09月30日17:28 カテゴリOpen SourceNews Perlの登録商標について - Perl belongs to us まずはおめでとう。 Perl Trademark In Japan | lestrrat [blogs.perl.org] We had been told that this whole process would take about a year, and finally I'm happy to announce that this decision has been reversed, and the above mentioned trademark has been revoked (I'm not a lawyer type, so excuse me if my words of choice there are not tech

    Perlの登録商標について - Perl belongs to us : 404 Blog Not Found
    pasela
    pasela 2011/10/01
  • perl - @_をコピーするコスト : 404 Blog Not Found

    2011年07月17日22:00 カテゴリLightweight LanguagesTips perl - @_をコピーするコスト Perl Best Practices Damian Conway [邦訳:Perlベストプラクティス] これ、やけに差がないと思いきや… Perlで重複した要素をユニークにする - ichirin2501の日記 ふと、どのコードが速いのか気になったのでベンチマークを取ってみました。 id:ichirin2501のコードのどこに問題があるかは、以下のベンチマークを走らせてみればわかります。 #!/usr/bin/env perl use 5.012; use Benchmark qw/:all/; sub uniq_copy { my @array = @_; my %hash; @hash{@array} = (); return keys %hash; }

    perl - @_をコピーするコスト : 404 Blog Not Found
  • Perlで重複した要素をユニークにする - ichirin2501's diary

    重複した要素をユニークにする代表的な方法としていくつかある。 ふと、どのコードが速いのか気になったのでベンチマークを取ってみました。 今回調べたコードは以下の6種類 # use Array::Uniq; sub unique_au{ my @array = @_; return uniq sort @array; } # foreach sub unique_each{ my @array = @_; my %hash; $hash{$_} = 1 foreach(@array); return keys %hash; } # grep sub unique_grep{ my @array = @_; my %hash; return grep{!$hash{$_}++} @array; } # use List::MoreUtils; sub unique_lmu{ my @array

    Perlで重複した要素をユニークにする - ichirin2501's diary
  • Web::Query - jQuery風にスクレイピング - tokuhirom's blog

    http://frepan.org/~TOKUHIROM/Web-Query-0.01/README.pod Web::Query というスクレイピングフレームワークをかきました。一言でいうと「うごく pQuery」です。pQuery は jQuery とおなじ動きにするためかどうかしりませんが、わりと自前で実装していて、結果まともにうごいていません。うごくようになるのをまってようかなとおもっていたら2年経過していたので、自分でつくってみました(パッチをおくってもいいのだけど、別個の実装をつくったほうがはやい気がしたので)。HTML::TreeBuilder::XPath + HTML::Selector::XPath + LWP::UserAgent という構成です。 使用例は以下のとおり。 use Web::Query; wq('http://google.com/search?q=f

    pasela
    pasela 2011/06/19
  • Smart::Commentsでモジュールにサンプルコードを仕込む - Islands in the byte stream (legacy)

    ソースコードを読んでいると、関数の引数や戻り値の具体的な例がほしいと思うことがよくある。。そこで、実行可能なコメントを仕込むモジュールであるSmart::Commentsを使って、モジュール内にテストを兼ねたサンプルコードを仕込めばいいのではないかと考えた。これにより、開発者にとっては簡単なテストコードとして動き、読者にとっては具体例となるコードを簡単にソースコード内に埋め込むことができる。 package MyUtil; use strict; use warnings; use parent qw(Exporter); our @EXPORT = qw(add); use if __FILE__ eq $0, 'Smart::Comments'; ### assert: add(10, 20) == 30 sub add { my($a, $b) = @_; ### add(a, b)

    Smart::Commentsでモジュールにサンプルコードを仕込む - Islands in the byte stream (legacy)
    pasela
    pasela 2011/05/29
  • perl5140delta - perl v5.14.0 での変更点 - perldoc.jp

    This document describes differences between the 5.12.0 release and the 5.14.0 release.

    pasela
    pasela 2011/04/28
  • PLEAC - Programming Language Examples Alike Cookbook

    PLEAC - Programming Language Examples Alike Cookbook Summary Following the great Perl Cookbook (by Tom Christiansen & Nathan Torkington, published by O'Reilly; you can freely browse an excerpt of the book here) which presents a suite of common programming problems solved in the Perl language, this project aims to implement the solutions in other programming languages. If successful, this project m

    pasela
    pasela 2011/03/28
  • Time::Piece とタイムゾーンの甘い罠 - (ひ)メモ

    use Time::Piece; use Time::Seconds; use POSIX qw(strftime); sub print_tp { my $tp = shift; printf("date : %s\ntzoffset: %d\nepoch : %d\nstrftime: %s\n\n", $tp->strftime('%Y-%m-%d %T'), $tp->tzoffset, $tp->epoch, strftime('%Y-%m-%d %T', localtime($tp->epoch)), ); } print "Time::Piece ",$Time::Piece::VERSION,"\n"; my $tp; $tp = Time::Piece->strptime("2011-01-01", "%Y-%m-%d"); print_tp($tp); $tp = lo

    Time::Piece とタイムゾーンの甘い罠 - (ひ)メモ
    pasela
    pasela 2011/02/10
  • Webのリファレンスを簡単に参照する方法 - new.perldoc.jp/fooとかphp.net/fooとか - (ひ)メモ

    追記 new.がとれて、http://perldoc.jp/ でアクセスできるようになったんで、s@http://new.perldoc.jp@http://perldoc.jp@g と目sedしてお読みくださーい。 をより便利に、アドレスバーに長いURL打ち込まなくてもいいようにする方法の紹介です。 具体的には、これを読めばあなたも今日から pd perlrerefと打ち込めば http://new.perldoc.jp/perlreref が表示される pd openと打ち込めば http://new.perldoc.jp/open が表示される ようになります。ね、簡単でしょう? PHPも http://php.net/if や http://php.net/=== や http://php.net/split といったのが用意されているので、今回紹介する方法がそのまま使えますね。あ

    Webのリファレンスを簡単に参照する方法 - new.perldoc.jp/fooとかphp.net/fooとか - (ひ)メモ
    pasela
    pasela 2011/02/04
  • Starlet 使ってみた|perl|@OMAKASE

    CPANでPlack関連の情報はないかと漁っているとstarmanライクなPSGI仕様のサーバ Starlet があると聞いて早速ためしてみました。 http://search.cpan.org/dist/Starlet/ 今まで自分の所ではplackで利用できるWAFを自前で書いてそいつをStarman + Server::Starterを使ってで動かしていました。 Starmanでなにも問題なく動いてるので変更する意味はないのですがPSGI仕様のいい所(簡単にインターフェースを取り替えられる)を利用させてもらいちょっとだけ試してみました。 変更前の環境はフロントにlighty(mod_proxy)+バックにStarman,Server::Starterな構成です。でStarmanはdaemontoolsで起動させてます。 変更前 starman利用時のdaemontoolsのrun-s

    pasela
    pasela 2011/01/18
  • StarmanへReverseProxyした時のabベンチ取ってみた - Perl - @OMAKASE

    perlでかかれたwebサーバ Starman の爆速ぶりは目をみはる物がありますが自分の運用環境では lightyのproxyを介しての接続であるためkeepaliveが使えない等Starmanの機能を生かしきる事はできない。 じゃlighty以外のapacheやnginxとかReverseProxy専門のvarnishだとどうなんだろと疑問が湧きtestしてみることにする。 接続構成 abベンチ側 FreeBSD 7.2-STABLE FreeBSD 7.2-STABLE Pentium E2180 2GHz MEM 2.0G アプリサーバ側 FreeBSD 8.0-RELEASE-p2 FreeBSD 8.0-RELEASE-p2 Celeron 1.7GHz MEM 1.5G アプリサーバ側に apache-2.2.14(worker) lighttpd-1.4.26 nginx-

    pasela
    pasela 2011/01/18
  • Smart::Args でバリデーションする。またはバリデーターとして必要な事 - Articles Advent Calendar 2010 Casual

    Smart::Args とは 実行時型チェック / パラメーターチェックが出来る便利なモジュールです。 現在、 Params::Validate がデファクトスタンダードっぽいんですが、速度が遅かったりするので正直微妙です。 まぁ、速度っていうか色々面倒い感じだなーって思ってきた人も多いと思います。 Smart::Args の使い方 use Smart::Args; sub foo { args my $p => 'Int', my $q => { isa => 'Int', optional => 1 }; say $q ? "$p, $q" : $p; } foo(p => 1); # 1 foo(p => 1, q => 2); # 1, 2 これまた簡単! 例えば、以下のようにすると foo(p => 'str'); 以下のように怒られます。 Validation failed f

    Smart::Args でバリデーションする。またはバリデーターとして必要な事 - Articles Advent Calendar 2010 Casual
    pasela
    pasela 2010/12/25
  • 使っちゃいけない標準モジュール - Articles Advent Calendar 2010 Casual

    gfxと申します。 Perlは後方互換性を重視しているので、標準モジュールはめったに取り除かれる事がありません。しかしそれでも、いくつかのモジュールが将来的に取り除かれる見込みです。そのようなモジュールは使用しないほうがいいでしょう。また、取り除かれはしないものの、様々な理由から使用すべきでないモジュールもいくつかあります。今日は、そういった使うべきでないモジュールを紹介します。なお、このエントリの対象バージョンは5.8から5.14を想定しています。 さて、まずは取り除かれるモジュールです。現在のところ、以下の三つのモジュールが5.14でコアから削除される予定です。 Class::ISA Pod::Plainer Switch Class::ISAはクラス階層を直列化するモジュールですが、5.10以降はmroに取って代わられました。5.10未満のバージョン用にはMRO::Compatが用意

    使っちゃいけない標準モジュール - Articles Advent Calendar 2010 Casual
    pasela
    pasela 2010/12/24
  • モジュールのバージョンを確認するときどうやってますか? - Articles Advent Calendar 2010 Casual

    もう恋なんてしないなんて、言わないよ絶対kamipoです。 ときに皆さん、Perlのモジュールのバージョンを確認するときどうしてますか? 僕はPerlをはじめた最初のころ、ずっとこうやっていました。 $ perl -MAcme::Hidek -le 'print $Acme::Hidek::VERSION' 40.0 こうやってたの、僕だけじゃないですよね!? いまでは以下のワンライナーにaliasを張っているので毎回がんばってワンライナーを打たなくてよくなりました。 $ alias pmversion='perl -le '"'"'for $module (@ARGV) { eval "use $module"; print "$module ", ${"$module\::VERSION"} || "not found" }'"'" $ pmversion Acme::Hidek Ac

    モジュールのバージョンを確認するときどうやってますか? - Articles Advent Calendar 2010 Casual
    pasela
    pasela 2010/12/24
  • Email::MIME::MobileJPで文字コードまわりに気をつかわないでメールの送受信をおこなう - Articles Advent Calendar 2010 Hacker

    メール関係のモジュールをとりまとめて、カジュアルにつかえるようにするためのモジュールをかいてみました。 メールの受信(Parsing) メールのパーズは、以下のように、メールの文字列をくわせてやればいいです。 use Email::MIME::MobileJP::Parser; my $src_text = do { local $/; <> }; my $mail = Email::MIME::MobileJP::Parser->new($src_text); メールオブジェクトから Subject をえるには以下のようにしましょう。 ここでとれるものは MIME ヘッダにはいっている情報をもとに、UTF-8 に decode された文字列です。 可能ならば絵文字も decode します。これには [Encode::JP::Mobile](http://search.cpan.org/p

    Email::MIME::MobileJPで文字コードまわりに気をつかわないでメールの送受信をおこなう - Articles Advent Calendar 2010 Hacker
  • Encode::UTF8Mac - トミールの技術系日記

    探したのだけど作っている人がいなかったので、いわゆるutf-8-macと呼ばれるエンコーディングを追加するEncode::Encodingをつくりました。 https://github.com/tomi-ru/Encode-UTF8Mac use Encode; use Encode::UTF8Mac; print Encode::encode('utf-8-mac', '蘄藭づけ'); use Path::Class; for my $entry (dir(".")->children) { my $filename = Encode::decode('utf-8-mac', $entry); } 反応みてPODちゃんと書いたらUPしようと思っている →POD書いた. PODの方が少し整理されているのでわかりやすいかもしれない。 https://github.com/tomi-ru/En

    Encode::UTF8Mac - トミールの技術系日記
  • YappoLogs: bradとmyとuse fieldsとPseudo-hashesとHash::Utilと

    bradとmyとuse fieldsとPseudo-hashesとHash::Utilと bradプロダクトではuse fieldsが多用されています。そして、 my ClassName $var;のような変数宣言が多用されています。 perldoc -f myしてみるとuse fieldsで使うみたいな事が書いてありました。 use fieldsってのは package Jitensya; use strict; use warnings; use fields qw/(sound); sub new { my $proto = shift; my $self = ref $proto ? $proto : fields::new($proto); $self; } 1; のようなコードがあるとして use strict; use warnings; use Jitensya; my $

    pasela
    pasela 2010/12/16
  • stillreading - base.pmとparent.pm

    新しめのPerlモジュールで、use parentを結構な頻度で目にしているので、parent.pmとbase.pmの違いを見てみました。 まずはじめに、使用時の違いです。普通に使う分には同じです。 # 同じ。引数でしたモジュールをreqireして、ISA配列にぶっこみます。 use base qw(FOO BAR); use parent qw (FOO BAR); ただ、parent.pmは上記以外にも、以下のような使い方もサポートしてます。 use parent -norequire, 'FOO', 'BAR'; なんとなく想像つくと思いますが、-norequireを第一引数に指定してあげると、後続のモジュールをrequireしません。用途としては、1ファイルに複数モジュール定義していような場合で、モジュール名とファイル名が異なる場合のようです。parent.pmのドキュメントに例が

    pasela
    pasela 2010/12/16
  • Path::Classで簡単ファイル操作 - Articles Advent Calendar 2010 Casual

    こんにちは!モダンPerlの裏側しか知らないkoba04です。 今日は、少し前まで「続・初めてのPerl」を読んでいた自分が、遅ればせながらその便利さに感動して使うようになったPath::Classについてを。(ってもう使ってますよね。。) 多分Casual Trackの中でも最も初心者向けな内容になっているんじゃないかと思います。。 何が便利かというと、「File::Spec」や「File::Path」、「IO::Dir」、「IO::File」、「File::stat」などのモジュールにある関数を「Path::Class」をインターフェイスとして使うことが出来ます。 とりあえず「use Path::Class」でいいので便利ですね! オブジェクトの作成 まずはファイルオブジェクトの作成。(file) use Path::Class; my $file = file('path', 'to

    Path::Classで簡単ファイル操作 - Articles Advent Calendar 2010 Casual
    pasela
    pasela 2010/12/16