タグ

tipsとperlに関するa2ikmのブックマーク (30)

  • httpstatus コマンドで、HTTP のステータスコードをすばやくしらべる! - tokuhirom's blog

    httpstatus コマンドで、HTTP のステータスコードをすばやくしらべる! 一般的な Web Programmer ならば、HTTP Status code はすべて暗記していると聞きました。 しかし、僕は初心者なので、なかなか覚えきれていないので、HTTPのステータスコードをさがすのに便利なツールを用意しました。App::httpstatus です。インストール方法は cpanm App::httpstatus です。というか依存とかないのでhttp://api.metacpan.org/source/TOKUHIROM/App-httpstatus-v1.0.0/httpstatus をコピーしてくればうごきます。 使い方は以下のとおりです。 4xx なコードを列挙する。 % httpstatus 4 400 Bad Request 401 Unauthorized 402 P

  • perlでMakefile.PLを実行するのに必要そうなモジュール - There's an echo in my head

    Text::LTSVにpull req.を投げた際にperl Makefile.PLして躓いたのでメモ。 Module::Install Can't locate inc/Module/Install.pm in @INC (you may need to install the inc::Module::Install module) というようなエラーが出たら、$ cpanm Module::Install でOK。 Module::Install::AuthorTests String found where operator expected at Makefile.PL line 10, near "author_tests 'xt'" (Do you need to predeclare author_tests?) syntax error at Makefile.PL li

    perlでMakefile.PLを実行するのに必要そうなモジュール - There's an echo in my head
    a2ikm
    a2ikm 2013/02/07
    門外漢なのでメモ
  • lib::xi - installs missing libraries on demand - Islands in the byte stream (legacy)

    gistなどで公開されているPerlスクリプトを実行する際、モジュールが足りないことがよくあります。そういう場合はCan't locate Foo.pm ...というエラーメッセージを見ながらモジュールをインストールするわけですが、決まりきった作業にうんざりしたので自動的にそれをするモジュールを書きました*1。 https://github.com/gfx/p5-lib-xi `perl -Mlib::xi script.pl`とするだけで、足りないモジュールをcpanmで適当にインストールしてくれます。 -Mlib::xi=extlibとすれば既存の環境を壊すことなくlocal::lib的にextlib/にインストールして実行できますし、-Mlib::xi=-L,extlib,-qなどとしてcpanmにオプションを渡すこともできます。 これで退屈なインストール作業をしなくてすむはずです。

    lib::xi - installs missing libraries on demand - Islands in the byte stream (legacy)
    a2ikm
    a2ikm 2011/10/06
    実行時に不足しているcpanモジュールをインストールしてくれる
  • Time::Piece - 日付・時刻を扱う新しい方法 - Perl入門ゼミ

    Perl › モジュール › here Perlの5.10からTime::Pieceと呼ばれる時刻を便利に扱うためのモジュールが標準モジュールに加わりました。Perlの5.10以上を使用している場合はTime::Pieceモジュールを日付と時刻を扱いたい場合に利用すると便利です。 従来のPerlでは日付や時刻を直感的に扱う手段が標準モジュールにはありませんでした。日付や時刻を扱うためには少し面倒な作業が必要でした。Time::Pieceは日付と時刻の直感的な操作を提供します。また日付・時刻の書式化の機能や解析する機能も備えます。 Perlには実質的に日付を扱うモジュールのスタンダードといえるDateTimeというモジュールがあります。ただしこのモジュールは標準モジュールではなくCPANからインストールする必要があります。また巨大なモジュールですのでモジュールを読み込む時間が非常にかかります

    Time::Piece - 日付・時刻を扱う新しい方法 - Perl入門ゼミ
    a2ikm
    a2ikm 2011/09/26
    Time::Piece->strptime()が使える
  • STDIN/STDOUT を使うテスト - tsucchi’s diary(元はてなダイアリー)

    仕事メモ。 インタラクティブなコンソールアプリケーションだと、STDIN/STDOUT を使ったやりとりが発生します。こういうのをテストするときに、いままでは、 { local *STDOUT; open(STDOUT, '>', 'stdout.txt') do_something(); #STDOUT を使う何か close(STDOUT); } open(my $MY_STDOUT, '<', 'stdout.txt'); #... $MY_STDOUT の中身を読み出してテストする みたいな処理を書いて、ファイルの中身でチェックしてました。(STDIN の場合は逆で、入力データをファイルに書いて、捻じ曲げた STDIN をアプリに読ませる)。 ファイルを噛ませるのが嫌だったのと、ちょっとトリッキーなのが気に入らなかったので、モジュールを使ってもうちょっと優雅に(?)書けないかな、と

    STDIN/STDOUT を使うテスト - tsucchi’s diary(元はてなダイアリー)
  • インストール済みの CPAN モジュールの一覧を取得する良い方法はないだろうか - @kyanny's blog

    追記:なーんだ、やっぱりありました。 cpan -a を使えばいいらしい。 id:hiboma ありがとうございました。 何台かのサーバを扱っていると、サーバによってインストール済みのモジュールのバージョンが違ったり、インストールされてなかったりしてよく困ります。デプロイしてからエラーになって気づいたりするので心臓に悪いです。 どうしたものかと考えて、パッケージ名とバージョン番号のリストだけテキストファイルに書き出しておいて、デイリーで更新するようにすれば最低限の世代管理?にはなるかな、と考えました。 先人の成果にあやかろうと CPAN を探したのですが、どうも望み通りのものが見つからない。 id:tomyhero に教えてもらった Pod::ProjectDocs はブラウザで見るにはとても便利ですが、肝心のパッケージ名が JS オブジェクトとして書かれていて、 Perl から扱うのがち

    インストール済みの CPAN モジュールの一覧を取得する良い方法はないだろうか - @kyanny's blog
    a2ikm
    a2ikm 2011/08/17
    cpan -aでインストールされているモジュールとバージョンの一覧が得られるので、その差分を見る
  • UTF-8な文字列をsubstrする

    ずいぶん以前からPerlで物を書くときには、文字コードをUTF-8にし、use utf8をしないで書いている。 で、その際、substrなどで文字列を切り出したいとすると、UTF-8は1文字あたりの長さが可変長であるため、入力文字列によっては変な文字が切り出されてしまうことになる。 これを正しく切り出すときに色々調べてみたメモ。 use utf8について Perl 5.8.x Unicode関連に記されているように、 1.ソースコード中の文字列がUTF8になる。 2.マルチバイトの変数名なども使える。 なことがウリらしく、表面上の意味は、PerlにscriptがUTF-8で書かれていることを教える事が目的らしいので、次のようなコードも通ります。*1 #!/usr/local/bin/perl use utf8; my $あいうえお = "x"; print $あいうえお; で、このときにs

    UTF-8な文字列をsubstrする
    a2ikm
    a2ikm 2011/07/19
    Encode::encode_utf8(substr(Encode::decode_utf8($text), 0, 10));
  • [perl] Perl でクラス変数を作る方法 - BigFatCatのブログ

    続・初めてのPerl を読んでいて少し混乱したので、クラス変数の作り方をメモしておく。 結論から言うと、Perl でクラス変数を作るには「our演算子」を使う。ラクダ p.156 によると、our変数は、 ourは値を生成するのではなく、グローバル変数(これは永遠に存在する)に対して、制限された形でのアクセスを提供するもの とある。これをラクダの言葉を借りて一言で言い直すと、「ourはレキシカルスコープを持つグローバル変数」である。 今のところ、自分の理解している範囲での our は以下のような感じ。 スコープ:レキシカル 命:グローバルなのでメモリ中に1つしか存在しない ということは、クラス変数としてピッタリだよねっていう話。 以下にクラス変数を作る際の our の使い方を示したサンプルコードを載せておく。 #!/usr/bin/perl use strict; use warnin

    [perl] Perl でクラス変数を作る方法 - BigFatCatのブログ
    a2ikm
    a2ikm 2011/06/27
    ourを使う
  • オブジェクトのメソッド一覧をえるの法 - tokuhirom's blog

    オブジェクトのメソッド一覧をえるの法 メソッドの一覧をえる場合には Class::Inspector をつかうと楽である。 use Class::Inspector; use Data::Dumper; say join "\n", @{Class::Inspector->methods("Data::Dumper", "public")} Published: 2011-05-31(Tue) 02:23

  • オブジェクトからクラス名をえる方法 - tokuhirom's blog

    オブジェクトからクラス名をえる方法 クラス名をえるには以下のようにする。ただしここで Scalar::Util は標準添付モジュールである(from 5.7.3)。 use Scalar::Util qw/blessed/; say blessed($obj); Published: 2011-05-31(Tue) 02:23

    a2ikm
    a2ikm 2011/06/09
    use Scalar::Utils qw/blessed/; say blessed($obj);
  • プラグマを import すると use したクラスにもプラグマが効くようになる - 僕ト云フ事@はてな出張版

    知らなかった! id:dann に教えてもらった。 package Hoge::Base; use strict; use warnings; use utf8; sub import { strict->import; warnings->import; utf8->import; } このクラスを use すると strict, warnings, utf8 が効く package Hoge; use Hoge::Base; # ここは strict, warnings, utf8 Moose, Mouse はこういう仕組みらしい。

    プラグマを import すると use したクラスにもプラグマが効くようになる - 僕ト云フ事@はてな出張版
  • CatalystのChainedアクションの連鎖を止める方法 - (゚∀゚)o彡 sasata299's blog

    2009年05月17日00:14 Perl CatalystのChainedアクションの連鎖を止める方法 最近Chainedアクションを使っていて困ったことがありました。それは、、、 レインボーブリッジが封鎖d Chainedアクションの連鎖が止められませんっっ(ノ`□´)ノ〜┻━┻ どういうことかというと、ログインしているかどうかのログインチェックをChainedアクションを使って実装していて、未ログイン状態だったらログインページにリダイレクトさせたかったんです。 sub auto : Private { my ($self, $c) = @_; $c->res->redirect( 'http://www.zozom.net' ); $c->log->debug("in auto"); } sub hoge : Local { my ($self, $c) = @_; $c->log-

    a2ikm
    a2ikm 2011/05/20
    beginアクションなどで以降の処理をすっ飛ばしたくなったら $c->detach; する
  • MySQLで "SQL_AUTO_IS_NULL = 0" じゃないと、IS NULLで検索されたときにエライ目に遭うという話 - (゚∀゚)o彡 sasata299's blog

    2009年06月09日23:48 MySQL Perl MySQLで "SQL_AUTO_IS_NULL = 0" じゃないと、IS NULLで検索されたときにエライ目に遭うという話 先日、Catalystアプリを作っていたとき、データの新規作成と編集を同じメソッドで処理していて、このようなコードを書きました。 my $rs = $c->model('DBIC::Hoge'); $rs->update_or_create( { id => $id, # primary key name => $name, }, {}, ); hogeテーブルはこんな感じ。 +-------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +----

  • use Memoize; - FloralCompany.log

    perl(v5.7.3以降) の標準モジュールに Memoize というのがある。何をするやつかというと、perldoc 曰く Make functions faster by trading space for time 「(計算)時間と(メモリ等の)領域とを取引して、関数を早くします」ということで、メモ化を行ってくれるモジュールです。 百聞は一見に如かず。というわけで、(Benchmark使うんでcodepadは自重 use strict; use Memoize; use Benchmark 'timethese'; sub collatz { my $n = shift; $n == 1 ? 0 : 1+collatz( $n%2 ? $n*3+1 : $n/2 ); } sub fibonacci { my $n = shift; $n <= 2 ? 1 : fibonacci(

    a2ikm
    a2ikm 2011/05/18
    use Memoize; sub foo { ... }; memoize('foo'); perl v5.7.3以降で標準添付
  • perl - use strict; # and be happy : 404 Blog Not Found

    2006年05月21日05:20 カテゴリLightweight Languages perl - use strict; # and be happy どうやら私のでは、啓蒙が全然足りなかったらしい。 Perl/CGI辞典 - 土井 毅さん 著 - にて use strict が推奨されていない件について - iandeth. p.104 strict プラグマは、Perlスクリプトでの記法を厳密にするためのプラグマです。 (中略) これにより、宣言の曖昧な変数への参照を発見できます。 [参考] strict プラグマは厳密すぎるため、通常のプログラミングではあまり使用しません。 ... orz このが20世紀に出たというのであれば驚かないけど、今年に出たというのは、Perl5 Porterとしてもショックである。 しかし、確かにuse strict; # or dieという姿勢だけ

    perl - use strict; # and be happy : 404 Blog Not Found
    a2ikm
    a2ikm 2011/05/18
    no strict 'refs'とかで一時的に解除できる
  • 今日のCPANモジュール(跡地) 目次

    Redirecting… Click here if you are not redirected.

  • [Catalyst][DBIx::Class] Catalystテストサーバでの DBICのSQLログ表示 - cyberlib.enterbrainz.com

    [Catalyst] [DBIx::Class] 一時的には 環境変数をenvセットでテストサーバ駆動 $ env DBIC_TRACE=1 ./script/myapp_server.pl -r いつも出す時は MyApp.pm に $ENV{'DBIC_TRACE'} = 1; と書き込んでおく。 Apache等の番環境に移した後は気になるところだけ $c->model('DBIC')->storage->debug(1); $c->model('DBIC')->storage->debugfh(IO::File->new('/log/DBIC.log', 'w')); 通常のDBIC(non Catalyst)では my $schema = DB::Hoge->connect('dbi:mysql:dbname;localhost','I

    a2ikm
    a2ikm 2011/05/13
    Myapp.pmに$ENV{'DBIC_TRACE'} = 1;
  • Perlゼミ(サンプルコードPerl入門)

    Perl入学式 全6回のPerl入門講座。東京、大阪、沖縄、札幌で開催。(東京は4月と10月スタート、それ以外は5月スタート) YAPC::Japan Perlを軸としたITに関わる全ての人のためのカンファレンス。 東京 吉祥寺.pm 五反田.pm 大阪 なにわPerl 沖縄 沖縄.pm

    a2ikm
    a2ikm 2011/05/13
    継承の親側ではimportメソッドが呼ばれて、子側のパッケージ(__PACKAGE__)がcallerで取得できる
  • はてなブログ | 無料ブログを作成しよう

    あまりに暑いので工場扇を買ってきた 6月とは思えない猛暑に遭遇し、7月を待たずして早くも熱中症(疑)と睡眠不足に陥った2025年の夏。 去年までは8月頃から水風呂に飛び込んでビール飲みながら野球を見るという自宅避暑をやっていたけれど、今年は既に家中がもうどうにもならない不快感で包まれている。 …

    はてなブログ | 無料ブログを作成しよう
    a2ikm
    a2ikm 2011/05/13
    無名関数を即時呼び出すには、sub { ... }->();
  • ひさびさにCatalyst触ってみたら、Args(0)というのを発見した - urapico's diary

    久々にCatalystをインストールして、ロジックを書くときのアトリビュートでArgs(0)というのが増えていることに気づきました。 このArgs()で自分が今分かっている事を下記にまとめます。 Args()を設定したメソッド名プラス設定した数値の引数の数のURLにアクセスした場合、ディスパッチ制御ができる メソッド名以下を$c->arguments->[0]とかで取得できる まだこれぐらいしかわかってません。 perldocに書かれていますが、sub bar :Localをfooクラスに書いた場合に、/foo/bar/のURLでアクセスできますが、場合によっては、/foo/bar/はダメで/foo/bar/hoge/とかは許可した場合などにArgs(1)とかを使うといいみたいです。 なんだか、Regexアトリビュートとかでも似たようなものはできそう(??)ですが、Args()のほうが手軽

    ひさびさにCatalyst触ってみたら、Args(0)というのを発見した - urapico's diary