タグ

Perlに関するmteramotoのブックマーク (80)

  • 良く分からないけど流行ってるので貼ってみた - ふしはらかんのらーめん話

  • local::lib を切り替える - unknownplace.org

    レガシーなアプリをメンテするのにレガシーな Perl モジュールが必要になることがあり、そのために古いアプリ用には専用の local::lib ディレクトリを切っているわけですが、普段から日常的に local::lib を使用しているため shell が上がったタイミングではデフォルトの local::lib 環境変数がセットされていて切り替えが非常に面倒だった。 これまではそれほど頻繁に使用しなかったので放置していたのだが、ここのところ頻繁に必要になるためいい加減うざくなってきて簡単に local::lib を切り替えられるよう設定をしてみた。 zsh に次のような関数をつくり、それで local::lib を切り替えるようにする。 function locallib () { INSTALL_BASE=$1 if [ -d $INSTALL_BASE ]; then eval $(~/

  • CPANにあげたくないPerlモジュールをgithub にアップしまくる方法 - tokuhirom's blog

    http://github.com/typester/shipit-step-uploadgithub CPAN モジュールのアップロードは ShipIt をつかうと楽なことがしられていますが、CPAN にあげたくないモジュールなどのアップロード場所としては、リポジトリに github をつかっているなら、github が最適でしょう。 で、CPAN にアップするのとおなじような感覚で github にあげるには、typester 先生の ShipIt::Step::UploadGithub をつかうとよいです。 cpanm-github typester/net-github-upload-perl cpanm-github typester/shipit-step-uploadgithubとかやってインストールすればいいとおもいます(cpanm-github は toktools には

  • Re: 知ってそうで意外と知られていないperlの小技 10選 - Pixel Pedals of Tomakomai

    意外と知られていないperlテクってのが、意外とあるもんですね。 最近身の回りでいくつか話題に上がったものがあったので、ちょっと書いてみます。 知ってそうで意外と知られていないperlの小技 10選 こういうトリビア的なのはなかなか面白いなあと思ったので便乗させて頂きました。 Re: ランダムシャッフル 続いてこれもソートねた。 これは List::Util::shuffle の方がベターでしょう。*1 % perl use List::Util; print join ' ', List::Util::shuffle qw( 0 1 2 3 4 5 6 7 8 9 ); print "\n"; 1 8 6 3 0 2 7 5 9 4 Re: perlとだけ叩いたら そんなあなたは、まずコンソールに向かって「perl」とだけ打ってリターンしてみてください。 ちなみに、perlrunを読めば

    Re: 知ってそうで意外と知られていないperlの小技 10選 - Pixel Pedals of Tomakomai
  • ゆーすけべー日記

    サキとは彼女の自宅近く、湘南台駅前のスーパーマーケットで待ち合わせをした。彼女は自転車で後から追いつくと言い、僕は大きなコインパーキングへ車を停めた。煙草を一吸ってからスーパーマーケットへ向かうと、ひっきりなしに主婦的な女性かおばあちゃんが入り口を出たり入ったりしていた。時刻は午後5時になる。時計から目を上げると、待たせちゃったわねと大して悪びれてない様子でサキが手ぶらでやってきた。 お礼に料理を作るとはいえ、サキの家には材が十分足りていないらしく、こうしてスーパーマーケットに寄ることになった。サキは野菜コーナーから精肉コーナーまで、まるで優秀なカーナビに導かれるように無駄なく点検していった。欲しい材があると、2秒間程度それらを凝視し、一度手に取ったじゃがいもやら豚肉やらを迷うことなく僕が持っているカゴに放り込んだ。最後にアルコール飲料が冷やされている棚の前へ行くと、私が飲むからとチ

    ゆーすけべー日記
  • perlbrew + cpanminus + local::lib で環境構築 - Webtech Walker

    local::libとかcpanmとか便利になってきたなーと思っていたところにperlbrewというまた新たなツールがでてきたので一度ここら辺でperlの環境構築についてまとめときます。 システムにインストールされているperlを使うとOSのアップデートなどの影響を受けてしまうので、それらを使わずホームディレクトリ以下にperlもCPANモジュールも全部インストールしていきます。 perlbrewはperlをバージョン毎にインストールしたり、それらをswitchして使えたりすることができるコマンドです。 App::perlbrew - search.cpan.org まずperlbrewをインストールします。 $ curl -LO http://xrl.us/perlbrew $ chmod +x perlbrew $ ./perlbrew install これで$HOME/perl5にp

    perlbrew + cpanminus + local::lib で環境構築 - Webtech Walker
  • Plack + Markdown - D-6 [相変わらず根無し]

    Plack + MarkdownMarkdownで紙用の原稿書いているんだけど・・・ Markdownって楽だけど、実際にフォーマッティングがどんな感じになるかを見るには1回パースして処理する必要があるじゃないですか。いちいちMarkdown.pl呼び出すのも面倒くさいからPlackでディレクトリ直下のファイルをパースしてはき出すようにした。 Plackはなにげにこういう使い方が異常に便利な気がする。まさにSwiss Army Knifeって感じ。 use strict; use File::Spec; use Text::MultiMarkdown 'markdown'; sub { my $env = shift; my $file = File::Spec->catfile( File::Spec->curdir, $env->{PATH_INFO}); open my $fh,

  • 本を読む PerlのYAML 0.71のLoadFile()はUTF-8フラグ付きの文字列を返す

    メモ。 version: 0.71 date: Sun Jan 3 12:25:00 AEST 2010 changes: - Set file encoding to UTF-8 in LoadFile/DumpFile (RT#25434) by Olivier Mengué というわけで、YAML::LoadFile()したデータをEncode::decode()しているスクリプトはエラーになったりする。 Cannot decode string with wide characters at /usr/lib/perl/5.10/Encode.pm line 174.

  • 第20回 Email::Sender:メールを送信する | gihyo.jp

    メール送信のあれこれ たとえばウェブアプリケーションでなにかの注文を受け取ったとき、あるいはシステム管理ツールでなにか異常を発見したとき、ユーザや管理者にメールを送れるようにしたい、というのはよくある要件です。昔はヒアドキュメントやテンプレートエンジンなどを使って送信したいメールを用意したあと、sendmailへのパイプを開いてメールを流し込んでいたものですが、いまはメールの作成から送信まで、すべてモジュールを使って実現できるようになっています。 とはいえ、需要が大きいだけにメール関係のモジュールは山のようにあります。ディストリビューション(パッケージ)の数だけで500を数えますし、メール関係の名前がついたモジュールは現在CPANにアップロードされている7万以上ものモジュールのほぼ1割を占めるほどです。これではどれを使えばよいのかわからないという声があがるのも当然でしょう。 そこで今回はP

    第20回 Email::Sender:メールを送信する | gihyo.jp
  • PSGIを勉強したメモ(2) (PSGI 1.03でのストリーミング) - Pixel Pedals of Tomakomai

    PSGI Specificationが1.03に更新されています。新しく psgi.streaming が追加されました (Tatsumakiでも使ってる)。 最初にとても大事な注意 このエントリはPSGI 1.03の仕様について勉強したことを書いてます。PSGIの仕様はまだ流動的なので、かならず最新の仕様を見て下さい。 psgi.streaming とは PSGIアプリの戻り値は配列リファレンスですが、 psgi.streaming が有効になっているサーバではコールバック関数を返せます。 コールバック関数には返答用の関数が渡ってくるので、そこにいつもの配列リファレンスを返します。 sub { my $env = shift; $env->{'psgi.streaming'} or die; return sub { my $respond = shift; my $t; $t = AE

    PSGIを勉強したメモ(2) (PSGI 1.03でのストリーミング) - Pixel Pedals of Tomakomai
  • PSGIを勉強したメモ(PlackとかMiddlewareとか)

    Tatsumakiを触ってみたいなあと思ったらなんかPSGI/Plackの迷路に入ってしまい、つぶやいてたらid:miyagawaさんが色々教えて下さったので、せっかくなのでまとめておきます。 教えてもらってない自分で調べたことも書いてるので、間違ってたらごめんなさい! PSGIとは WEBアプリとWEBサーバ間の仕様です。仕様はここ。WSGIやRackのPerl版です。レガシーな分け方で言えば、CGI(or mod_perl or FastCGI)の仕様の層になります。 Plackとは PSGIの仕様に関するリファレンス実装群です。 Plack(特にPlack::Server) PSGIサーバのリファレンス実装。レガシーな分け方で言えば、これはApache等の層。 Plack::Request(と、Plack::Response) PSGIアプリケーション用のユーティリティ。レガシーな分

    PSGIを勉強したメモ(PlackとかMiddlewareとか)
  • ゆーすけべー日記

    サキとは彼女の自宅近く、湘南台駅前のスーパーマーケットで待ち合わせをした。彼女は自転車で後から追いつくと言い、僕は大きなコインパーキングへ車を停めた。煙草を一吸ってからスーパーマーケットへ向かうと、ひっきりなしに主婦的な女性かおばあちゃんが入り口を出たり入ったりしていた。時刻は午後5時になる。時計から目を上げると、待たせちゃったわねと大して悪びれてない様子でサキが手ぶらでやってきた。 お礼に料理を作るとはいえ、サキの家には材が十分足りていないらしく、こうしてスーパーマーケットに寄ることになった。サキは野菜コーナーから精肉コーナーまで、まるで優秀なカーナビに導かれるように無駄なく点検していった。欲しい材があると、2秒間程度それらを凝視し、一度手に取ったじゃがいもやら豚肉やらを迷うことなく僕が持っているカゴに放り込んだ。最後にアルコール飲料が冷やされている棚の前へ行くと、私が飲むからとチ

    ゆーすけべー日記
  • ゆーすけべー日記

    サキとは彼女の自宅近く、湘南台駅前のスーパーマーケットで待ち合わせをした。彼女は自転車で後から追いつくと言い、僕は大きなコインパーキングへ車を停めた。煙草を一吸ってからスーパーマーケットへ向かうと、ひっきりなしに主婦的な女性かおばあちゃんが入り口を出たり入ったりしていた。時刻は午後5時になる。時計から目を上げると、待たせちゃったわねと大して悪びれてない様子でサキが手ぶらでやってきた。 お礼に料理を作るとはいえ、サキの家には材が十分足りていないらしく、こうしてスーパーマーケットに寄ることになった。サキは野菜コーナーから精肉コーナーまで、まるで優秀なカーナビに導かれるように無駄なく点検していった。欲しい材があると、2秒間程度それらを凝視し、一度手に取ったじゃがいもやら豚肉やらを迷うことなく僕が持っているカゴに放り込んだ。最後にアルコール飲料が冷やされている棚の前へ行くと、私が飲むからとチ

    ゆーすけべー日記
  • tokuhirom blog

    Blog Search when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${entry.path} [in template "__entry.ftlh" at line 3, column 25] - Reached through: #include "__entry.ftlh" [in template "entry.ftlh" at

  • おさかなラボ - Coroの並列をあっさり理解するための3つのサンプルスクリプト

    Coroが非同期にルーチンを扱う(コルーチンを扱う)モジュールだということはご存知だと思うが、いまいちピンと来ていない人も多いのではないだろうか。これは、1つにCoroやCoro::Introの例題が悪すぎると思う。例えば、Coro::Introのサンプルスクリプトはこうだ。 use Coro; async { print "async 1\n"; cede; print "async 2\n"; }; print "main 1\n"; cede; print "main 2\n"; cede; このスクリプトは確かに面白い挙動をするが、スレッドを実現してるんだよと言われるとちょっと「?」である。こんなのgoto文でできるじゃんみたいな。そしていきなりセマフォやチャネルの話に飛んでしまい、肝心の「Coroはスレッドが実現できるんだよ」というところが分かりにくい。そこ

  • 「モダンPerl入門」の入門

    株式会社ガイアックスでは、若手メンバーが多いながらも、新しい技術を取り入れたプロダクト作りに取り組んでおります。 今回は、Catalyst5.8や、CatalystのAPI化といったトピックを、プロダクトとして実装したときに出てきた問題点とその解決策についてお話しします。 Read less

    「モダンPerl入門」の入門
  • 第17回 Padre:Perlで拡張できるコミュニティのための開発環境 | gihyo.jp

    Perlを入れたはいいものの ご存じのように、Perlには、簡単なコマンドであれば、いちいちスクリプトファイルを用意しなくてもコマンドライン上で実行できる-eというスイッチが用意されています。 > perl -e 'print "Hello, world!"' また、一行では収まらないような長さのスクリプトでも、使い捨てでよければ、perlコマンドをスクリプトファイルや-eスイッチなしで実行することで、コンソールからスクリプトを入力できるようになります。 > perl print "Hello, world!"; ^D とはいえ、まともにPerlを使おうと思ったら、何らかのテキストエディタが必要になります。Unix系の環境ではviとEmacsの系統がそれぞれ一大勢力を成していますが、Windows環境では、標準添付のメモ帳(notepad)があまりに貧弱なため、たいていの人は自分の好みのエ

    第17回 Padre:Perlで拡張できるコミュニティのための開発環境 | gihyo.jp
  • 初めてのCatalyst入門(1) PerlによるWebフレームワークCatalystとは?

    CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

    初めてのCatalyst入門(1) PerlによるWebフレームワークCatalystとは?
  • 第13回 AnyEvent:イベント駆動モジュールの方言を吸収する | gihyo.jp

    イベントループを持つモジュールが抱える問題点 イベントループを持つモジュールの一例として、前回はPOEを取り上げましたが、もちろん同じようなループを持つモジュールはほかにもあります。 たとえば1995年に故ニック・イング・シモンズ(Nick Ing-Simmons)氏が始めたPerl/Tkや、POE誕生前夜の1997年から開発が行われているGtk(のちのGtk-Perl⁠)⁠、その後継にあたるGtk2/GlibのPerlバインディング(2003年)など、GUIアプリケーション関連のツールがそうですし、IO::Poll(1997年)やIO::Async(2007年)のようなモジュールにもイベントを監視するためのループが使われています。また、Event(1997年)やlibeventのラッパであるEvent::Lib(2004年⁠)⁠、EV(2007年)のように、イベントループそのものを実装す

    第13回 AnyEvent:イベント駆動モジュールの方言を吸収する | gihyo.jp
  • モダンPerl連載第13回 - Charsbar::Note

    今回は最近一部で話題のAnyEventとCoroについて。AnyEventについてはいま現在さかんに修正が行われている段階なので話題にするには時期尚早の感もあったのですが、今回この記事を書くにあたってメーリングリストやIRCのログを漁ってみた限り、AnyEventの「Any」についてはすっぱり忘れた方がよさそうだなあ、というのが正直な感想。Catalystにおけるmstのような人が出てくればまた話は変わるでしょうし、その意味でmiyagawaさんがforkするかどうかがひとつのポイントになるのかなと思っていますが、現状では、汎用的な(どんな環境、どんなイベントループ、どんな用途でも使える)POEでは重すぎる場合に、(環境、イベントループ、用途それぞれの点で)特化型のAnyEvent(という名のLehmannEvent)に移行する、というのがおもだった使い方になりそうです。 http://g

    モダンPerl連載第13回 - Charsbar::Note