その手の平は尻もつかめるさ

ギジュツ的な事をメーンで書く予定です

perl

JSON::XSでデシリアライズする時にtrueとfalseの扱いを変更する

Perl5の話題です. JSON::XSを用いて,JSON StringをPerlのHashRefにデシリアライズする時にtrueとfalseの扱いを変えたいという話です.デフォルト状態でJSON::XSを用いてデシリアライズすると, true は Types::Serialiser::true すなわち JSON::PP::Boolea…

List::Haystack - A immutable list utility to find and count element

Perl5の話題です.List::Haystackというものを書きました.CPANにもアップロードしています. 経緯としては以下.Perl,immutableな感じで,List (Array) 中から要素をfindしたり,出現回数を取るモジュールって存在しているんでしたっけ— パブリックイメー…

Perl5のサブルーチン呼び出し時に二項演算子を期待していたら単項演算子の引数として認識されてしまう

sub func { return 100; } みたいなサブルーチンがあった時に, say(func - 99); みたいな感じで呼び出すと,パッと見 1 が出力されそうに見えるが,実際は 100 が出力される. これは - 99 が func の引数として解釈されて食われるためである. B::Deparse …

Test::Fluent::Logger書いた

表題の通りです.Perl5の話です.CPANにもあげてあります.https://metacpan.org/pod/Test::Fluent::Logger何をするモジュールかというと,useするだけでFluent::Loggerのpost及びpost_with_timeの内容をインターセプトして,本来送るべき宛先には送らずに内…

YAPC::Asia Tokyo 2015 で Yet Another Perl Cooking というタイトルで話してきました

話してきました.以下がスライドとなります.登録時にスライド字幕を誤って「英語」にしてしまったばかりに英語スライドとなっております. 「画像がヤベえ!!」とか言われたんですが,まあこれで発表したんだし公開するスライドの画像を修正するのも違うよ…

plenv で stableperl を利用するの術 & stableperl の話

[追記] (旧タイトル) Perl::Build (plenv) で stableperl が利用できるようになりました & stableperl の話色々あって方法が変わったので内容を修正します Perl::Build (plenv) で stableperl が利用できるようになりました & stableperl の話Perl::Build 及…

文字列内のバックスラッシュを区別したい的な

タイトルが適当すぎて何を言っているのかわからないと思いますが,まあそういう事がごくごく稀にあります.結論から言うとヒアドキュメント使えば良いです.以下の様な文字列を考えた時, my $string = '\n\\'; これを1文字ずつ処理しようとすると, say $_ …

Regexp::Lexerってやつを書いた

https://metacpan.org/pod/Regexp::Lexer https://github.com/moznion/Regexp-Lexer Perlの正規表現を解析したいなー,と思った時にまず目につくのはRegexp::Parserだと思うのですが,このモジュールは解釈できないメタ文字や構文が多い為,実用にあたっては…

Excel::Writer::XLSXのset_optimization()について

基本的にExcel::Writer::XLSX使うときは my $workbook = Excel::Writer::XLSX->new('yabai.xlsx'); my $worksheet = $workbook->add_worksheet(); ... みたいな感じで使うと思うんですが,素朴にこれでやっていこうとするとExcelの行数が増えた時にメモリを…

YAPC::Asia Tokyo 2014に参加致しました

YAPC::Asia Tokyo 2014に参加致しました.例年はgihyo.jpのリポータという事で参加していたのですが,今年は僕の怠慢でリポータではなく,初の一般参加でした.とはいえ, YAPC::Asia Tokyo 2014でPerl::Lintについて喋りました - その手の平は尻もつかめる…

YAPC::Asia Tokyo 2014でPerl::Lintについて喋りました

タイトルのとおりです. スライドは以下です. もうちょい詳しく話す予定だったんですが,冒頭のライブリリースに失敗するなどして出鼻をくじかれテンパってしまいました…… ちょっと詳しい話をすると, ポリシー周り 各ポリシーがトークンを受け取って,それ…

YAPC::Asia Tokyo 2014でPerl::Lintについて喋ったりします

おわび Perl::Lint出来てません 本題 明日8月28日(木)から3日間に渡ってアジア最大のPerlのカンファレンスであるところのYAPC::Asia Tokyo 2014が開催されますね! 楽しみですね! 夜も眠れないですね! さて,そのYAPC::AsiaでわたくしPerl::Lintという開発…

XSのABRTをキャッチしたい

このPerlコード実行するとSIGABRT発生するんだけど,これなんとかtrapできないのかな https://t.co/HeB6uvrl5z— Lint it (@moznion) 2014, 8月 17 supervisord使ってても,アプリで使ってるXSライブラリがABRTを吐いたらアプリごと死んでついには生き返らな…

Published “Perl::Lint Playground”

(またしても日本語は下にあります / Japanese follows English) I published “Perl::Lint Playground”. http://perl-lint.moznion.net/ You can try feature of Perl::Lint easier on this playground. However this and Perl::Lint have not been completed…

Released Perl::Lint as underdevelopment

(日本語は下にあります / Japanese follows English) I've just released Perl::Lint as underdevelopment. https://metacpan.org/release/MOZNION/Perl-Lint-0.01_01 Development of Perl::Lint is in progress, but I need feedback about this module. Th…

先読みとautovivificationの話,あるいはマイクロオプティマイゼーションの話

Perlの話です.が,先読みの辺りはどの言語でも共通なのでは,という感じです. 追記 なんか先読み関係ない感じになってるのでコメント見ると良いです.この記事の情報は誤っているので後で書き直す. ここから先は読まなくても良い さて,配列を走査するよ…

Time::SecondsのONE_MONTHとONE_YEARについて

Time::SecondsのONE_MONTHとONE_YEARを使う場合,本当にその方法で良いのかよく考えたほうが良いと思います.バグが出る可能性が高い気がします.例えば以下の様な場合 use Time::Piece; use Time::Seconds; my $tp = localtime->strptime("2014-04", "%Y-%m…

Released Log::Minimal::Object

皆さん,Perlのアプリケーションのログを出力したい時はLog::Minimalをご利用のことと存じます.非常に便利でグレートなモジュールなので僕も毎度使っております. さて,そのLog::Minimalですが,ログの出力をカスタムしたい時には$Log::Minimal::COLORや$L…

Released Parse::KeyValue::Shellish

https://metacpan.org/pod/Parse::KeyValue::Shellish https://github.com/moznion/Parse-KeyValue-Shellishfoo=barだとかhoge=(fuga piyo)みたいな,いわゆるshell的なkey-valueを解釈する必要があったので書きました.shell的key-valueの文字列を解釈してh…

Released Perl::PrereqScanner::Lite

(日本語は英語の後にあります) I released Perl::PrereqScanner::Lite.https://github.com/moznion/Perl-PrereqScanner-Lite https://metacpan.org/release/Perl-PrereqScanner-Lite This module is the fast edition of Perl::PrereqScanner. Perl::PrereqS…

App::GitHubWebhooks2Ikachanが出た

長い名前だ!!! そしてマニアック. https://metacpan.org/release/App-GitHubWebhooks2Ikachan https://github.com/moznion/App-GitHubWebhooks2Ikachan これは何 GitHubのWebhooksを受け取って,いい感じにしてIkachanに投げる君です. 現状,issues,pu…

B::perlstringを使って文字列中のダブルクォートを適切にエスケープする

文字列中にエスケープされていないダブルクォートがあった時に,例えば文字列evalしようとするとずっこける事があります.以下の様な感じ. なぜ失敗するかというと,eval "$str"がeval "hel"lo"という風に評価されてしまうからなんですね.これではlo"がinv…

Yokohama.pm #10に参加してきました

Yokohama.pm #10に参加して参りました. Yokohama.pmヤバくて,無限にビールは飲めるわ有限に食事はできるわ,加えて学びを得られるわで最高のイベントと言っても過言ではない感じでした.KAYAC社はすごい. さて,詳細なレポートなどは他の参加者の方が素晴…

Localizerが出た

http://blog.64p.org/entry/2014/02/17/192612Localizerと言うのはYet Another Framework for Localizationのことで,国際化対応のための新しいフレームワークです.インタフェースが従来のものよりイカしていて良いと思います. Gettextのコンパイラの実装…

Digest::MD5のもろもろに関して

第一部 まず,id:amagitakayosiさんのブログ記事に関しまして. http://amagitakayosi.hatenablog.com/entry/2014/01/31/174915これの結果がおかしいのは,普通に関数で呼び出すべき所をクラスメソッドみたいな感じで呼んでいる為です.これではclassがdiges…

正規表現で,他の条件にマッチしない文字列を取得したい

メモ書き程度です. 例えば,aaafoobbbbarcccfoodddみたいな文字列があった時に,fooとbarにマッチしない文字列が欲しい時には以下のように書くと良い. $str =~ m/(.*?)(?:foo|bar)/g; 実行すると以下のような値が得られる. $VAR1 = 'aaa'; $VAR2 = 'bbb';…

im.kayacでカジュアルにメッセージ送るPerlのライブラリ作った

im.kayacを使ってカジュアルにメッセージを送るPerlのライブラリ,WebService::ImKayac::Simpleを作成・公開しました.https://github.com/moznion/WebService-ImKayac-Simple https://metacpan.org/release/WebService-ImKayac-Simple im.kayacでメッセージ…

NHK番組表APIを触る為のPerlクライアント作った

去る2014年1月27日にNHK番組表APIが公開され,これが中々良い感じだったので,PerlからそのAPIを触れるクライアントであるWWW::NHKProgram::APIを書きました.https://metacpan.org/release/WWW-NHKProgram-API https://github.com/moznion/WWW-NHKProgram-A…

ファイルハンドルに対するbinmodeの変更が及ぼす影響を小さくしたい

ファイルハンドルをbinmodeで変更して,そのファイルハンドルを用いて何らかの処理を行いたい,という欲求がしばしばあると思います. 単純に書くと以下のようになるでしょう. このコードではファイルハンドルを普通にopenして,それをawesome_function()に…

Text::LTSVの新しいバージョンではメソッドにファイルハンドルを渡せるようになって便利

Text::LTSVのparse_fileとparse_file_utf8には元々ファイルパスしか引数として与えられなかったのですが,Version 0.08以降はここにOpenしてあるファイルハンドルを渡せるようになって便利です.処理がスマートに書けるようになって大変満足!