Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

タグ

perlに関するzetamattaのブックマーク (252)

  • PerlでSTDIN/STDOUTを任意のファイルハンドルに置き換える - たごもりすメモ

    いま書いてるコードで、forkしてexecするんだけど、execする前にSTDIN/STDOUTを任意のファイルハンドルに置き換えたいなー、もっというとexecするプログラムのSTDINにソケットのREADから流れてくるデータを流し込んで、STDOUTの出力をソケットのWRITEに流し込んでやりたいなー、というようなことを考えていた。 で、これが例えば今のプロセスのSTDOUTの出力をファイルに置き換えるには、以下のようにすればいい。 open(STDOUT, '>', '/path/to/file'); シェルスクリプトでも簡単。*1 exec >> /path/to/file さて、STDIN/STDOUTとconnect済みのソケットを結合したい。connect済みのソケットはファイルディスクリプタは持っているがファイルパスを持っていない、ので、普通にopenし直すだけではうまくいか

  • mod_mruby、mod_lua、mod_perl、mod_rubyのアーキテクチャの違いと性能

    人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 mod_mrubyやmod_lua、そしてこれまでApacheモジュールをスクリプトで書く場合に使われてきたmod_perlとの性能比較を行っています。 modとしてのアーキテクチャの差で処理系の性能差を埋める 処理系としての差ではなく、Apacheのmod_***としてのアーキテクチャの差によって、Apache上での性能が大きく変わる事が分かってます。Apacheはプロセス(スレッド)をプールしておいて、複数のリクエストに対しプロセスを再利用するアーキテクチャであるため、インタプリタのロードやライブラリの読み込み、さらにはスクリプトをコンパイルするタイミングを工夫すれば、Apache上では高速に動作させる事が可能になります。 例えば、mru

    zetamatta
    zetamatta 2012/06/16
    mod_*** の表で比較している。が、mod_mruby が mod_lua より圧倒的に速い理由が知りたいな
  • おそらくはそれさえも平凡な日々: PerlのIdiomをCPANモジュールを使って可読性を高くしてみる

    今年からKayac技術部では以前以上にPerlを推進する方向で進めています。そんな中でこれまでPerlを書いたことのないエンジニアにもPerlを書いてもらうことも多くなってきたのですが、PerlのIdiomがやはりわかりづらいんだなぁということを感じています。 割りとサクッとやっつけでコードを書くことが出来るのもPerlの良い点ですが、まあ分かりづらいよね...、と言うことで最近はPerlに慣れない人に対しても可読性が高くなるように多少心がけています。 てことで、PerlのIdiomとそれを読みやすくしたものを幾つか。 ファイル一気読み こんな感じで書いてしまうことが多いと思います。 use autodie; も併用することが多いので、or dieとかも書かない感じ。 my $content = do {local $/; open my $fh,'<:utf8',$file_name;<

    zetamatta
    zetamatta 2012/06/10
    ファイル一気読み / 一秒以下のsleep / 出力のバッファリングを抑止する / エラー処理
  • プログラミング言語 Tora を公開した - tokuhirom's blog

    http://tora-lang.org/ Perl6 の開発が宣言されてから10年以上の歳月がたち、いまだ実用的な実装はあらわれません。 そんななかで、next perl 的なものをつくりたいと gfx がいってから 3ヶ月ぐらいたっていますが、こちらも一行もコードをかいた様子はありません しょうがないので僕がつくってみました。まだあらけずりですが、意外とうごいています。 今回、とくに Perl5 にあった機能のなかでけずりたかったものは以下のとおり context@ary, %hashつけたかったものは以下のとおり autoboxingMoose 的なものの組み込みハックしやすいVM組み込みライブラリの実装しやすさ 未実装な点は以下のとおり Moose 的なアクセサSignal handlingこまかい socket 関連のものHash::MultiValue の組み込みなどなど。 g

    zetamatta
    zetamatta 2012/04/01
    next Perl 的なもの。$ はあるけど @ や % はなくなった。あと構文中の括弧を省略できる。
  • 言語女子会: undefとnullは両方必要? - 西尾泰和のはてなダイアリー

    Twitterのタイムラインが面白すぎて、ついうっかり言語を擬人化して脳内で言語女子会なるものを開いてしまいました。なお、登場人物と実在の人物は1対1に対応しません。 undefinedとnullの両方必要なの? とあるプログラミング言語が集う女子会にて: Perl: そういえばさ、なんでJavaScriptちゃんってundefinedとnullの両方もってるの? JavaScript: えっ、未定義の変数にアクセスした時undefined返したいじゃない? Python: 例外投げて死ねばいいじゃん Ruby: 例外投げて死ねばいいよね Python & Ruby: ねー♡ Java: いやそこは参照型ならnull、数値型なら0で初期化すべきでしょ C: これだから最近の若い子は…初期化にだってコストが掛かるんだからね!デフォルトで初期化するなんて無駄遣いよ!必要な人だけが責任をもって初

    言語女子会: undefとnullは両方必要? - 西尾泰和のはてなダイアリー
    zetamatta
    zetamatta 2012/03/17
    様々な言語の「変数未定義」「空リストからのpop」「存在しないキーへのアクセス」した時の値
  • パスワード認証

    ラジック 気軽に楽しめるブログメディア「ラジック」は2ちゃんねるを中心にエンタメ情報をお届け!

    zetamatta
    zetamatta 2012/02/05
    HTML,CSS,PHP,D,C#,C++0x,Java,jQuery,JavaScript,Ruby,Perl,Python,Objective-C,VBA,Bash,Vim,iPhone向けサイト,コマンドプロンプト
  • はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知

    はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28

    はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知
    zetamatta
    zetamatta 2012/01/20
    Mac で作成したようだが、Perl だから Linux とか Windows でも動くだろうか…
  • Algorithm - 連想配列の実装としてのハッシュはオワコン? : 404 Blog Not Found

    2012年01月17日11:45 カテゴリアルゴリズム百選Tips Algorithm - 連想配列の実装としてのハッシュはオワコン? 珠玉のプログラミング Jon Bentley / 小林健一郎訳 つまり「終わったコンテナ」。 以前からうすぼんやりと考えて来た危惧が、すこしはっきりと見えてきた。 徳丸浩の日記: Webアプリケーションに対する広範なDoS攻撃手法(hashdos)の影響と対策 もうそろそろハッシュ(テーブル)以外の手段の連想配列の実装手段を格的に模索するべきではないか、と。 そのデータ構造は、君の魂を差し出すに足るものかい? 連想配列(Associative array)がコレクション(Collection)、すなわち数多のデータ構造をまとめるデータ構造としての覇者となったのはもはや疑いようがない事実でしょう「配列で実装されるデータ構造ではなくて、配列を実装するデータ構

    Algorithm - 連想配列の実装としてのハッシュはオワコン? : 404 Blog Not Found
    zetamatta
    zetamatta 2012/01/17
    2048bytes 以上のキーでは、ネイティブの Hash より、Tie::Judy の方が高速
  • perlモジュールのinstallにcpanmを使う - Perl - @OMAKASE

    当サイトのblogのエントリーで検索ワードが多いのはCPANなんですがこの古い記事はperl5.6時代に書いた記事(多分10年近く前だと思う)で今時のperl使いにお勧めできるものではありません。 2010年2月にあの miyagawa さんが書いた cpanminus が非常に素晴らしいので CPAN::shell を捨てて App-cpanminus を積極的に利用しましょう。 と言うことでcpanに関連して新しい記事を書いてみました。 CPAN::shell の欠点 設定が面倒 動作が遅い(cpanmと比較して) 多くのメモリが必要(制約のきついレンタルサーバで使うのは無理) 依存するモジュールが多い 基root権限が必要 cpanm の利点 一枚岩のプログラムで可搬性に優れる 高速で小メモリでも動作可能 pluginで拡張できる local::lib と組み合わせるとユーザーラン

    zetamatta
    zetamatta 2011/07/30
    cpanm、cpanminus の方が cpan そのものより使い易いというお話
  • 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
    zetamatta
    zetamatta 2011/07/18
    @_ のコピーコストは大きいね。関数が配列を受け取る時は @_ をそのまま使うことも検討した方がよいだろう
  • dlnico.pl作った - Humanity

    (追記 2015/12/05 1:59) 更に修正しました。 tyru.hatenablog.com 文 作ってからふとdlnicoで検索したらdlnico.pyってのがあって、 自分がほしい機能が揃ってたので感動したけど動かなくなってたので作った。 tyru/dlnico.pl · GitHub 追記 (2011/06/29 19:08): id:rightgo09さんがブクマでWeb::Scraperが使われてないことを教えてくれたので修正しました。 README 以下READMEから引用 Usage: $ dlnico.pl {video or mylist} [{saved directory}] {video} video URI or number prefixed with "sm" or "nm". {mylist} mylist URI or number. {save

    dlnico.pl作った - Humanity
    zetamatta
    zetamatta 2011/06/26
    Perl製ニコニコ動画ダウンロードスクリプト
  • each()は遅い上に微妙な問題も起きやすい - Islands in the byte stream (legacy)

    特別な条件がないかぎり、each()は使うべきではありません。代わりにkeys()/values()を使うべきです。その理由は2つあります。 each()は遅い each()でハッシュ全体をループするのは遅いです。これは、keys()/values()がその内部の値をそのまま参照する*1のに対し、each()は代入しないとその値を使えないからです。 ベンチマーク: #!perl use strict; use warnings; use Benchmark qw(cmpthese); my %hash = map { $_ => $_ } ( 1 .. 10000 ); cmpthese -1, { each_k => sub { while(my $key = each %hash) { } }, each_kv => sub { while(my($key, $value) = eac

    each()は遅い上に微妙な問題も起きやすい - Islands in the byte stream (legacy)
    zetamatta
    zetamatta 2011/06/06
    keys/values の方が each より圧倒的に速いという衝撃の事実 (追記)dankogaiの補足記事≫http://blog.livedoor.jp/dankogai/archives/51693228.html
  • Perlの食えない事情

    Perlえない事情 Perlえない事情 @author: KaPoKoN Perlは初心者おすすめの言語ではない 奇妙な演算子の数々 奇妙な宣言文の数々 最後に・・・ これを書くに至った経緯は、Perl言語の創始者が来のPerlの使用目的とは 遠く離れた言語になってしまった背景。 自分がC、PHP、Java、VBとたんたんとやってきた中で、 これほど奇怪な仕様の言語に巡り合ったのは初めてであるという事だ。 そして、パール信者は叫んでたまらない。 パールisGOD!パールisキング!・・・と。 確かに今までのウェブは、そのように進んでしまったという事実があるが、 パールは来はウェブアプリケーションのサーバー処理をするために書かれた言語ではない。 UNIX上でデータを扱う為に作り出された言語であり、 UNIXそのものがサーバーとして作られたOSであるがゆえ、 ウェブでユーザーからの

    zetamatta
    zetamatta 2011/04/11
    PHP >>>> Perl をうたった文書で、最初のところは納得ゆくところもあるんだけれども、連想配列あたりから、段々無理矢理 dis ってる感が満載になってくる
  • 各言語におけるtrue/falseまとめ - 昼メシ物語

    たとえば PHP で、 if ($hoge) { ... } とか書いてあったら、 $hoge がどんな値のときに if の中身が実行されるのか即答できますか。 こういう書き方は多くの言語で可能ですが、言語によって何が真で何が偽になるのかが異なるので、それぞれまとめてみました。 C言語 C言語には bool 型が無い。 0 (int) だけが偽となり、それ以外はすべて真となる。 NULL 定数は stddef.h で以下のように ((void*)0) と定義されているため、偽値として使える。 意見が分かれそうなところですが、個人的にはNULLを偽値として使用するは好きじゃないです。 #ifndef __cplsuplus #define NULL ((void*)0) #else #define NULL __null #endif C++ C++になると bool 型が出てくる。C と同

    各言語におけるtrue/falseまとめ - 昼メシ物語
    zetamatta
    zetamatta 2011/03/21
    ちなみに Lua は false と nil だけが「偽」で他は全て「真」
  • CPAN - Wikipedia

    CPAN(シーパン、Comprehensive Perl Archive Network)とは、Perlのライブラリ・モジュールやその他のPerlで書かれたソフトウェアを集めた巨大なアーカイブで、世界中のサーバにその内容がミラーリングされている。再利用性・汎用性の高いモジュールが登録されており、Perlプログラマができるだけ車輪の再発明をせずに済むための支援環境となっている。登録モジュールの検索システムも提供されているため、Perlプログラマは望む機能を持ったモジュールを容易に入手することができる。 CPANには大小さまざまなモジュールが登録されており、それらの依存関係もデータベース化されている。目的のモジュールと同時に、それが依存するほかのモジュールを芋づる式にダウンロードし、インストールすることが可能である。Unix系OSおよびWindowsで利用できるCPANシェルという専用のソフト

    zetamatta
    zetamatta 2010/11/26
    CPAN の初歩的な使い方があって、たすかる
  • Ground-SunLight

    — y2sunlight ,Since 2019-10-02 Ground Sunlight は「Windowsで作る - PHPプログラミングの開発環境」をテーマにしたサイトです。 オープンソースを利用している全ての人達に祝福を!

    zetamatta
    zetamatta 2010/11/16
    ActivePerl のパッケージマネージャ PPM の使い方の解説。Proxy の設定とかも
  • Perl 5.12へのアップグレードで split の挙動が変わってびっくり - 生駒日記

    昼から機械翻訳の勉強会。shuhei-k くんが Steve DeNeefe and Kevin Knight. Synchronous Tree Adjoining Machine Translation. EMNLP 2009. について紹介してくれる。Stochastic Tree Adjoining Grammarについてあまり詳しくないので勉強になった。しかしこれなら Combinatorial Categorial Grammar でいいような? 実は先週末大学が停電で研究室のサーパ類のアップグレードを計算機係の人たちが敢行してくれたのだが、自分はウェブサーバのアップデートを実行し、Perl のバージョンが5.10から5.12に上がったのだが、どうせ互換性を大事にする Perl だし問題なかろう、と思っていたら、@tettsyunくんから動かなくなったプログラムがある、と言われ

    Perl 5.12へのアップグレードで split の挙動が変わってびっくり - 生駒日記
    zetamatta
    zetamatta 2010/10/30
    split の結果が @_ に入らないようになったらしい
  • sprintfで使用する引数を直指定する方法 - Unknown::Programming

    久々にPerl。いや、ほんと久しぶりよね。 printf '%d年%d月%d日', 2010, 12, 22; # 2010年12月22日 上記のような処理の時に、引数の数は変更せずに年を削って「12月22日」と表示したい場合、以下のようにすれば可能。 printf '%2$d月%3$d日', 2010, 12, 22; # 12月22日 「%」と「d」の間に「数値$」を追加することで使用する引数を直指定できる。上記の場合だと2番目と3番目の引数を使うという感じになる。 こんなsprintfの使い方なんて滅多なことではしないと思うけど、その滅多が来ちゃったので滅多ごめん。 滅多ごめん。 # ちなみにPHPでも可能。 参考:sprintf - perldoc.perl.org

    sprintfで使用する引数を直指定する方法 - Unknown::Programming
    zetamatta
    zetamatta 2010/10/29
    曰く『「%」と「d」の間に「数値$」を追加することで使用する引数を直指定できる』『国際化対応で日付表示するときに重宝しますよ』
  • おそらくはそれさえも平凡な日々: モダンなPerlを「読む」上で覚えておくとよい構文 第2回「リストを理解すれば配列とハッシュをより活用できる」

    第1回から大分時間が空きましたが、なんと続きます。「次回は無名関数について書く」とか書いていましたが、先にリストについて言及することにします。 混同されがちですがこのエントリーでは「リスト」と「配列」を厳密に違うものとして扱います。結論を先に簡単に言ってしまうと、リストを配列に代入すれば配列になるし、リストをハッシュに代入すればハッシュになるということです。 Perlの式は値を返す サブルーチンに限らずPerlのあらゆる式は評価された値を返します。返された値は代入先があれば代入され、代入先がなければ捨てられます。 値を返さないケース ブロックは値を返しません(doを使えばブロックに値を返させることが出来ます)。例外的にuse文やpackage文は値を返しません。この二つはコンパイル時にコードを実行する前に最初に評価されるので値の返しようがありません。 さて、題です。Perlの式の値の返し

    zetamatta
    zetamatta 2010/09/27
    Perl におけるリストと配列の違い
  • 2010年にXMLRPCをPerl5でつかう方法について考えた(XMLRPC on Plack) - tokuhirom's blog

    以下のように RPC::XML をつかうとよい。 Following code is XMLRPC server snippet on Plack. This code uses RPC::XML. use strict; use warnings; use Plack::Request; use Plack::Builder; use RPC::XML; use RPC::XML::ParserFactory 'XML::LibXML'; sub res { RPC::XML::response->new(@_) } my %dispatch_table = ( 'sum' => sub { my $args = shift->value; return res(0 + $args->{a} + $args->{b}); }, 'echo' => sub { my $args = shi

    zetamatta
    zetamatta 2010/09/27
    Perl で XMLRPC を使う正しい方法