タグ

ブックマーク / perl-users.jp (4)

  • Text::Xatena - はてな記法のような記法フォーマットパーサー - Articles Advent Calendar 2010 Meta_adcal

    こんにちは、cho45です。 今回この advent calendar に拙作 Text-Xatena が使われたということで、ちょいと Xatena フォーマットの話でも書こうと思います。 Text::Xatena の位置づけ みなさんご存知かもしれませんが、既に CPAN には Text::Hatena というモジュールがあります。ではなぜ今また、似たようなフォーマットの別のモジュールを書く必要があったのでしょうか。これには以下のような理由があります。 Text::Hatena は実のところあまり Hatena::Diary と互換がない Text::Hatena は非常に遅い Text::Hatenaはてなに依存した記法がいくつか存在する (id 記法など) これらのことを解決するために、Text::Xatena は作られました。 Text::Xatena はブロックレベルの互換

    Text::Xatena - はてな記法のような記法フォーマットパーサー - Articles Advent Calendar 2010 Meta_adcal
  • reduce だいすき

    デミグラスソース使った料理べたい cho45 です。Perl といえば某MMOゲームと同時に起動できないプログラムとして有名ですが今回はそれとは関係ない話です。 Ruby 厨の多くが inject 厨である気がします (てきとーです) が、 Perl で List::Util::reduce を使っているところをあんまり見たことがないのでいくつか便利な例を紹介します。 reduce は何かというとリストを1つの値に纏めるものです。例えばリストの要素の合計は use Perl6::Say; use List::Util qw/reduce/; my $list = [1, 2, 3, 4, 5]; say reduce { say "$a,$b"; $a + $b } @$list; 1,2 3,3 6,4 10,5 15 前回のループの返り値が $a に入り、$b には残りの要素

    secondlife
    secondlife 2008/12/20
    > Perl といえば某MMOゲームと同時に起動できないプログラムとして有名 をwow
  • 非破壊な s/// のススメ

    正規表現の置換でときどき困るのは、元の文字列が変更されてしまうことです。そのため、たとえば文字列を URI escape する際には、以下のように別変数にコピーした上で、正規表現を適用することになります。 my $escaped = $search_str; $escaped =~ s/([^0-9A-Za-z_.!~*'()-])/'%' . uc(unpack('H2', $1))/eg; my $url = "http://example.com/search?q=$escaped"; 以前、この点がめんどくさいなーとブログに書いたところ、kazeburo さん他に以下のようなテクニックを教えていただきました。 use List::MoreUtils qw(apply); my $url = 'http://example.com/search?q=' . apply { s/([^

    secondlife
    secondlife 2008/12/12
    ほー
  • myのリファレンス

    $ cat cool.pl use strict; use warnings; sub lopnor { my $val = shift; $$val = 'soffritto'; } lopnor(\my $danjou); print "he is $danjou\n"; $ perl cool.pl he is soffritto 「\my $vars」と書く事により変数の定義をしつつ戻り値で、その定義した変数のリファレンスを返す。 よって、関数の引数に「\my $xxx」と書くとコンパクトに書ける。 が、これはTTくらいでしか使ってるの見た事無い。 つぎのバトンはid:lestrratさん。

  • 1