タグ

関連タグで絞り込む (267)

タグの絞り込みを解除

perlに関するfbisのブックマーク (1,098)

  • [perl] 複雑なデータ構造のvalue を一気に書き換える方法 - harupiyoの日記

    ハッシュと配列の参照が入り交じったような複雑なデータ構造の、全value を均等に加工したかったので次の様にしてみました。 use strict; use Perl6::Say; use Data::Dumper; sub cook_hash { my ( $rh, $rf_cook ) = @_; my %tmp; for ( keys %$rh ) { if ( ref $rh->{$_} eq '' ) { $tmp{$_} = $rf_cook->( $rh->{$_} ); # ここで加工を実行 } elsif ( ref $rh->{$_} eq 'HASH' ) { $tmp{$_} = cook_hash( $rh->{$_}, $rf_cook ); } elsif ( ref $rh->{$_} eq 'ARRAY' ) { $tmp{$_} = cook_array(

    [perl] 複雑なデータ構造のvalue を一気に書き換える方法 - harupiyoの日記
  • Perl5 でネコ演算子Range Check - kazuhoのメモ置き場

    Perl 5 で、ある値が範囲内に入ってるか確認したいことってあるわけで。たとえば、 my $t = time; if ($min <= $t && $t < $max) { ... }みたいな冗長なコードは書きたくない。じゃあどうするかなって言うと、 if (grep { $min <= $_ and $_ < $max } time) { ... }あたりがベストな解なのかなぁと思った。でも仕事でこんなコード書かれたら腹が立つかなぁ。かな〜り微妙。 6/9追記: if (do { my $t = time; $min <= $t and $t < $max }) { ... }なら、許せる範囲かなぁ。

    Perl5 でネコ演算子Range Check - kazuhoのメモ置き場
    fbis
    fbis 2009/06/09
    面白いw けど最初の例がベストだなぁ
  • perl - use encoding; #は黒歴史 : 404 Blog Not Found

    2009年06月08日14:30 カテゴリLightweight Languages perl - use encoding; #は黒歴史 ぎゃあぁぁ length関数で文字列の長さを求める - perl初心者BLOG - Hatena::Group::Perl語の文字数を正確に求めたい場合、use encodingを指定する use encoding;は、jperlなど、かつて存在したL10Nされたperl用に書かれたレガシースクリプトを、モダンperlで動かすときのためのおまじないです。こういう目的で利用すべきではありません。 このあたりのことは、以前 404 Blog Not Found:perl - no encoding; # whenever possible でも書いたのですが、大事なことなのでまた書きます。 スクリプトはUTF-8で書き、use utf8;する のがモ

    perl - use encoding; #は黒歴史 : 404 Blog Not Found
  • ついに出た!最新Perlフレームワーク「Ark」徹底解剖:第1回 Arkって何だ? -Ark が生まれるまで|gihyo.jp ... 技術評論社

    はじめまして。面白法人カヤックの村瀬と申します。ArkというWebアプリケーション作成用のフレームワークを開発しました。今回から4回にわたって、このリリースしたばかりの「Ark」について紹介させていただきます。 Ark(アーク)とは Arkは、Perlで作られたWebアプリケーションフレームワーク(WAF)です。 Arkの特徴としては Catalystに似たインターフェース CGI/FCGI/mod_perlなどさまざまな環境で実用的に動作する CGI用モードの存在 日製であり、日語ドキュメントが充実している などが挙げられます。 Catalystに似たインターフェース Catalystは、Arkと同様にPerl製のWebアプリケーションフレームワークで、現在、Perlのフレームワークでは標準となりつつあるものです。 Arkは開発動機の1つが「CGIでも実用的に動作するCatalyst

    ついに出た!最新Perlフレームワーク「Ark」徹底解剖:第1回 Arkって何だ? -Ark が生まれるまで|gihyo.jp ... 技術評論社
  • The history of wantarray() - Islands in the byte stream (legacy)

    void context + BEGIN の horror 的ななにかで指名されたので答えるよ。 疑問点をまとめると以下の二点ということでいいですか。 なぜ特殊コードブロックの呼び出しコンテキストは不定とされているのか なぜ特殊コードブロックが実際にはスカラーコンテキストで呼ばれるのか 結論からいうと,第一の疑問の答えは,特殊コードブロックを呼び出すcall_list()内のcall_sv()においてコンテキストフラグを与えていないからです。第二の疑問の答えは,call_sv()のデフォルトコンテキストがG_SCALARだからです。 まずそもそもwantarray()の歴史を振り返ると,初期のPerlにはvoid contextは存在しなかったわけですよ。 Perl 5.003_07のperlfunc -f wantarray: Returns TRUE if the context of

    The history of wantarray() - Islands in the byte stream (legacy)
    fbis
    fbis 2009/06/04
  • Perlで複数の値との一致を調べる - きよひこぉ!の日記

    23:18仕事Perl使ってますが、政治的かもしれない理由でCPAN使えません。なので、1から何でも作るしかないのでCPANに何があるとか全然知らない馬鹿者がお送りします。この程度だったら当然どこかにありますね。まあさっき暇つぶしに自分で考えてみただけです。さて。Perlで、こういう書き方は何とかならんものか?if ($x == 1 or $x == 2 or $x == 3) {    何かの処理;}と思ったので、if ($x in (1, 2, 3)) {    何かの処理;}みたいなことやりたいな、と思ったんですが、inを演算子として扱う技を知らないので、if (match($x, (1, 2, 3)) {    何かの処理;}で妥協してコード考えました。再帰とwhileループの2パターン。どっちが効率いいのかはようわかりませんが、最近おいらの中ではSchemeが流行ってるので、先

  • 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

    fbis
    fbis 2009/06/03
  • Perlではまった - miyohide's blog

    サブルーチンで引数を取得するとき、@_から取得するってことを知って、喜び勇んで使ってみました。 $arg="aaa"; hoge($arg); sub hoge { my $arg = @_; print $arg . "\n"; } これだと、"aaa"が表示されずに1が表示される。な、なんで〜って悩み続けること数時間。 実際には、myの所に括弧が必要でした。具体的には、 $arg="aaa"; hoge($arg); sub hoge { my ($arg) = @_; print $arg . "\n"; } ってな感じで。 @_はリストなので、受け取り側もリストでないと駄目よってことかな。たぶん。

    Perlではまった - miyohide's blog
  • namespaceを使ったDBIx::Classのスキーマ構成 - hide-k.net#blog

    良くあるDBICのサンプルではDBIx::Class::Schema::load_classes()を使ってクラスのロードを行っています。 CD.pm package CD; use strict; use warnings; use base 'DBIx::Class::Schema'; __PACKAGE__->load_classes; 1; load_classes()はクラスを指定しないと CD Album Track という構成において自動的にクラスをロードすることができます。 ここでResultSetの拡張をしたいと考えます。例えば CD/ResultSet/Album.pm package CD::ResultSet::Album; use strict; use warnings; use base 'DBIx::Class::ResultSet'; sub search

    fbis
    fbis 2009/06/03
  • 配列の空要素を削除して切り詰める。 - Code is beautiful

    PHPで配列の空要素を削除して切り詰めたい時。 $in = array("", "", "a", "", "b", "c", ""); $out = array_merge(array_diff($in, array(""))); 要はarray_diff()で空要素との差分を取り、そのままだと添字が維持されたままなのでarray_merge()で添字を振り直すと。 Perlでarray_diff()は無さげだけど、普通にこれで行けるは行ける。 my @out = (); my @in = ("", "", "a", "", "b", "c", ""); for($i = 0; $i < @in; $i++) { if($in[$i] ne "") { push(@out, $in[$i]); } }

    配列の空要素を削除して切り詰める。 - Code is beautiful
  • はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知

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

    はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知
  • 三項演算子は左辺値にも使える - Craftworks Tech Blog - Branch

    $var = $bool ? $foo : $bar; という書き方はよく見ますが、 if ( $bool ) { $foo = $value; } else { $bar = $value; } 実は、こういう書き方も、 $bool ? $foo : $bar = $value; こう書くこともできます。 可読性とのトレードオフを考慮して使用してください。PBP の Damian 氏は非推奨派です。 LVALUE 属性のなせる業ですね。他に substr() も左辺値に使えます。 ちなみに、この機能はビルトイン関数以外にも Attribute を使って、サブルーチンやメソッドに自分でも実装できます。 詳しくは、perldoc perlsub を lvalue で検索してみてください。 http://perldoc.jp/docs/perl/5.10.0/perlsub.pod

    三項演算子は左辺値にも使える - Craftworks Tech Blog - Branch
    fbis
    fbis 2009/05/28
    パッと見「$bar = $value」が先に解釈されてるように見えちゃうのでせめて「($bool ? $foo : $bar) = $value;」こうすべきと思うな
  • YAPC::Asia Tokyo 2009 - Japan Perl Association運営ブログ

    長らくお待たせいたしましたが、YAPC::Asia Tokyo 2009のスケジュールが正式に決定いたしました!今年のYAPC::Asia Tokyoは9月10日および11日に開催されます。9日は前夜祭として短めのセッションを行う予定です。

  • 何故、私はPerlを続けるのか | taro-nishinoの日記 | スラド

    Jonathan Rockway氏は、いわゆるモダンPerlの旗手の一人です。Catalystのも書いています。彼は昨年8月に、Why I stick with Perlというエッセイを書いていました。 今何故、それを思い出しているのか言いますと、言語論争があちこちにあり、宗教論争と同じく永遠に終わらないのは誰の目にも明らかなのに、特に日において(私が日人だから余計に思うだけかも知れませんが)後発の言語信者が蒸し返すことが多いので、彼のエッセイを思い出した次第です。 今読み返しても、私の言いたいことと全く同じです。以下、私訳を載せて置きます。 何故、私はPerlを続けるのか 2008年8月4日 Jonathan Rockway 私は今朝、discussion about Perl on Hacker Newsに気づいた。その記事は、著者がPerlを好きな理由についてのものである。この

  • 第7回 Catalyst::DispatchType::Chained:チェーンドアクションはむずかしい? | gihyo.jp

    モダンPerlの世界へようこそ 第7回Catalyst::DispatchType::Chained⁠⁠:チェーンドアクションはむずかしい? 5.7系列の目玉だったチェーンドアクション 3年前に登場したCatalyst 5.7系列で導入された機能のひとつに、チェーンドアクションと呼ばれるものがあります。これは慣れると非常に便利な機能なのですが、それまでのURLとクラスの対応を根底から覆してしまう大転換だったわりにドキュメントが不足していたため、活用の仕方がわからないという声もありました。 今回はCatalyst 5.8系列で導入された新しいツールを使いながら、このチェーンドアクションの使い方を紹介していきます。スペースの都合でCatalystの基はある程度理解しているものとして話を進めますので、わからないことがあったらCatalyst体のドキュメントやCatalyst::Manualな

    第7回 Catalyst::DispatchType::Chained:チェーンドアクションはむずかしい? | gihyo.jp
  • IBM Developer

    IBM Developer
    fbis
    fbis 2009/05/15
  • DateTime::Durationでハマる | 水無月ばけらのえび日記

    公開: 2009年5月13日21時5分頃 PerlのDateTime.pm (search.cpan.org)は名前の通り日付や時間を扱うモジュールです。こんなコードを実行すると、 use strict; use DateTime; my $dt1 = DateTime->new(year => 2009, month => 4, day => 1); my $dt2 = DateTime->today; print "$dt1\n"; print "$dt2\n";

    fbis
    fbis 2009/05/14
    確かにわかりにくいですよね。あとdaysじゃなくてdelta_daysってのも初めて触ったときに間違えた。
  • 第5回 memcachedの運用と互換アプリケーション | gihyo.jp

    株式会社ミクシィの長野です。memcachedの連載も今回が最終回になります。前回までmemcachedに直接関連する話題を中心に書いてきましたが、今回はmixiでの事例や運用に関する話題、memcachedの互換アプリケーションについて紹介します。 mixiでの事例 mixiではサービスの初期の頃からmemcachedを利用していました。memcachedはサイトへのアクセスの増加が、データベースのスレーブを増やしていく方法では追いつかないほど急激にのびていく中で導入して行きました。加えてスケーラビリティを向上させていく手段として検証を行い、十分な速度と安定性があることが確認できたことも導入の理由になります。現在ではmemcachedはmixiのサービスを提供していく中で非常に重要なコンポーネントとなっています。 図1 現在のシステムコンポーネント サーバ構成と台数 mixiではデータベ

    第5回 memcachedの運用と互換アプリケーション | gihyo.jp
  • Moosification: Catalyst 5.8に移行した際にちょっと気づいた事。 - D-6 [相変わらず根無し]

    Moosification: Catalyst 5.8に移行した際にちょっと気づいた事。 最初からMooseベースでアプリケーションを作るというのは、実務ではなかなか難しいのはわかります。一般論は JPA #02で話すのでおいておきますが(参加申し込みは今日5/12までですよ!)、5.8 からMoose化したCatalystであった問題・注意点をちょっと書き出してみます。 1. use Catalyst Catalyst::Upgradingを読んでいると package MyApp; use Moose; extends 'Catalyst'; __PACKAGE__->setup(qw/ ConfigLoader /); という表記が見られるが、これは気をつけないと駄目。 自分が直面した問題は、path_to()等を使った時に起こった。path_to() は現アプリのルートディレクトリ

    fbis
    fbis 2009/05/12
    まだまだ様子見だな
  • switch文とif連鎖の比較 - Islands in the byte stream (legacy)

    Perl 5.10.0でswitch文が導入されたことにより,ifの連鎖はもっとわかりやすい構文に書き換えられるようになった。 use feature 'switch'; given($foo){ when("bar"){ ... } when("baz"){ ... } default{ ... } } switch文の導入で便利になった一方,このwhen()で使われるマッチングは「スマートマッチ」という特殊な演算子によって行われることのコストが懸念される。 そこで,switch文とif連鎖の速度を比較してみた。 また,かつて単純なif連鎖とよく比較されたのは,ハッシュテーブルを参照する方式である。if連鎖の複雑さがO(n)なのに対し,ハッシュテーブルの参照はO(1)であるため,連鎖が長くなるとハッシュテーブルの方が高速であるとされる。『Perlベストプラクティス』では,ハッシュテーブル

    switch文とif連鎖の比較 - Islands in the byte stream (legacy)
    fbis
    fbis 2009/05/11
    tableの実装だけど実質無名関数とdo_something関数の二つの関数を呼び出してるわけで若干公平ではない気がする。ためしにdo_something関数のリファレンスを直で指定したらtableの方がif-chainより早くなった。