読者です 読者をやめる 読者になる 読者になる

perl

Text::Xslate 3.3.6 released

https://metacpan.org/release/SYOHEX/Text-Xslate-3.3.6 I released Text::Xslate 3.3.6. This version fixed include issue. Include Issue Perl VM stack pointer goes wrong by each include call. For example. #!perl use strict; use warnings; use T…

Open write mode for flock(fh, LOCK_EX) for portability

We should open file with write intent for using flock(fh, LOCK_EX) for portability. Because flock(fh, LOCK_EX) is failed without write intent on some platforms(such as Solaris) and platforms which does not provide flock. (In this case Perl…

Perl 5.10以前では, リファレンス型はSVt_IVでなく SVt_RV

https://github.com/tokuhirom/Linux-Socket-Accept4/pull/6 ハマったのでメモ. Perl 5.11以降では, SVt_RV(リファレンス型)は SVt_IV(整数型)のエイリアス(同値) なのですが, それより前では異なる値です. リファレンス型の判定に SVt_IVしか 使っていなか…

Travis-CIに Perl 5.20を追加するときの注意

追記 リポジトリには, 5.20と書いた場合, 5.20として扱うという 対応が入っているようです. ただ 5.30が仮にリリースされると ハマる修正なので, 引用符で囲むのが確実です. (なお 5.30が出ると, 5.3と判断される予定です. そのときにはまた修正が 入るかも…

続 Perl::Lintと Perl::Criticを性能評価してみた

@moznionさんより最新版では早くなっているという ことなので改めて計測してみました. 傾向を見るためにファイルの行数別に測定を分けてみました. 比較対象 Perl::Lint 2014年 8月 27日時点の最新版(github) Perl::Critic 1.122 ベンチマークコード #!perl u…

Perl::Lintと Perl::Criticを性能評価してみた

Released Perl::Lint as underdevelopment - その手の平は尻もつかめるさ 環境 さくら VPS 1G Ubuntu 14.04 64bit GCC 4.8.2 Perl 5.20.0 モジュールのバージョン Perl::Lint 0.01_01 Perl::Critic 1.121 ベンチマークコード #!perl use strict; use warning…

Text::Xslate 3.2.4 is out

https://metacpan.org/release/Text-Xslate Text::Xslate 3.2.4 is out. Changes Fix for blead Perl add first and last method for arrays Fix for blead Perl Perl changes representation of unused Array slots from Perl 5.19.4 and this causes segme…

helm-perldocが MELPAからインストールできるようになりました

自分しか使っていないと思っていたのですが, @sugyanさん等 他にも使っている人がいることが判明したので, 登録しました. リポジトリ https://github.com/syohex/emacs-helm-perldoc インストール M-x package-install helm-perldoc PERL5LIBの設定 helm-per…

Perl 5.19.2から $!が decodeされる

ふと Perl 5.19.6をインストールして, Plackをインストールして 見るとテストがコケたので原因を調べていました. 原因は, $!がデコードされていたことでした. エラー t/HTTP-Server-PSGI/harakiri.tがエラーとなります. これには LWP::UserAgent->getが失敗…

Devel::CheckCompiler 0.04をリリースしました

少し前ですが, Devel::CheckCompiler 0.04がリリースされました リポジトリ https://github.com/tokuhirom/Devel-CheckCompiler 新機能 check_compile関数は今まではオブジェクトファイルを生成するだけでしたが, executable => 1を渡すことで実行ファイルを…

「Perl One-Liners」 を読んだ

http://shop.oreilly.com/product/9781593275204.do 来月 Oreillyから出るのかと思ってググって見たら, 電子書籍として 4年前に出たものの紙バージョンでした. 紙で読むのもあれなので, 電子書籍版を読みました. $10なんで安いと思います. 電子書籍版 http:/…

POSIX::Socketのテストがこける理由

Monoceros等で利用される POSIX::Socketのテストが こける理由のメモ. RTに登録すべきなんだろうけど、手元の環境ではうまくいかないので ここにメモっておきます(サーバサイドの問題??). 問題となるテスト t/10send.tの 2つめのテストが通りません(#2となっ…

Accept-Encoding gzipを指定したときの LWP::UserAgentと Furlの挙動に関するメモ

挙動の違いがあったのでメモ. サーバプログラム use strict; use warnings; use Plack::Builder; builder { enable 'Deflater'; # Don't use version 0.10 sub { [200, [], ["hello world\n"]]} } LWP::UserAgent レスポンスオブジェクトの contentメソッド…

MULTICALLを使う場合はコンパイル時に -DPERL_EXTを指定する

http://d.hatena.ne.jp/syohex/20111005/1317829402 以前自分で調べておきながら再度ハマってしまったので、 専用のエントリを書いておきます。 対象 MULTICALLを使ったモジュールを Perl 5.10以前にも対応させたい方。 Perl 5.12以降のみをサポートというの…

HTTP::Tiny 0.32で no_proxyがサポートされました

HTTP::Tinyとプロキシ設定に関するメモ - Life is very short 以前 no_proxyが機能しないから、localhost等で問題があると 書いたのですが、HTTP::Tiny 0.32で no_proxyがサポートされ ましたので、その問題は解消されました。 metacpan https://metacpan.or…

HTTP::Tinyとプロキシ設定に関するメモ

追記 HTTP::Tiny 0.32で no_proxyがサポートされました http://weblog.bulknews.net/post/52850922612/make-lwp-optional-by-miyagawa-pull-request-408 Plackの LWPの依存が optionalになってから、プロキシ環境下ではテストが パスしなくなったなぁと思っ…

perl-5.18で splitの挙動が変わっていた

http://perldoc.jp/docs/perl/5.18.0/perl5180delta.pod#splits32first32argument32is32more32consistently32interpreted 知らなかったのでメモ。Templateのテストが Perl 5.18でこけていたのは これが原因のようです。なおリリースはされていないようですが…

Emacsから Replyを使うための拡張

Reply is awesome! - blog.64p.org Perlの軽量 REPL Replyを Emacsから使うための 拡張を書きました。まだあまり機能はありません。 リポジトリ https://github.com/syohex/emacs-reply コマンド run-reply Replyを起動 reply-send-region リージョンの内容…

WebService::DMM 0.08をリリースしました

WebService-DMM-0.08 - DMM webservice module - metacpan.org 修正箇所 エラーレスポンスが返ってきたときの不備の修正 生のレスポンスオブジェクトを返すメソッド(last_response)の追加 前者はエラーが返ってきたときにレスポンスオブジェクトの is_succes…

Minillaの zsh補完関数を作りました

Minillaの minilコマンドの zsh補完関数を作ってみました。 リポジトリ https://github.com/syohex/zsh-perl-completions 最新版はこちらで管理しています。問題があれば上記のリポジトリの issuesを 利用してください 使い方 下記のコードを _minilとして適…

Module::Buildにアクションを追加する

./Build時に Parse::Yappの文法ファイルを yappコマンドを通して、 モジュールを生成するということがしたかったのでその方法を調べ ました。 アクションを追加する方法 Module::Buildのサブクラスを作り、Action_hookpointの関数を 作ることで actionを追加…

kyoto.pmに参加しました

http://www.zusaar.com/event/582004 kyoto.pmに参加しました。ハッカソンだったのですが、最近タスクがいろいろ 溜まっていたのでを主にそれを消化していました。家だとどうしても 2chまとめを みたり、ニコニコ動画を見ながら作業をしてしまうので、だらだ…

helm-perldocの更新

https://github.com/syohex/emacs-helm-perldoc 概要 helm-perldocはモジュールのドキュメント閲覧、ソースコードの閲覧を helmインタフェースを通じて行うための helm拡張です。 更新内容 __DATA__, __END__以降を探索していた問題を修正 Super class対応 …

Getopt::Longの pass_throughオプションに関するメモ

おそらくはそれさえも平凡な日々: 2013年のGetopt::Long でも紹介されている pass_throughに関するメモ。 pass_throughオプションを有効にするとオプション解析の終了を意味する '--'が @ARGVに含まれます。 以下のようなコードの場合、 #!perl use strict; …

IPC::Open3::open3に関するメモ

Plack::Middleware::File::Less を lessc でコンパイルするように - naoyaのはてなダイアリー で紹介されている。Plack::Middleware::File::Lessのソースの 以下の部分が気になりました。 sub less_command { my $less = shift; my $pid = open3(my $in, my …

Perlで雪を降らす

概要 Make your terminal snow with python · GitHubの Perl版。 ソース #!perl use strict; use warnings; use Encode (); use Time::HiRes (); use Term::ReadKey (); local $| = 1; my %snowflakes; my ($columns, $rows) = get_terminal_size(); main();…

Perl パッケージ名の自動チェック(Emacs編)

http://perl-users.jp/articles/advent-calendar/2012/casual/13 のパッケージ名チェックを Emacs Lispで書いてみました。 コード (defun cperl-get-package-name () (save-excursion (goto-char (point-min)) (if (re-search-forward "^\\s-*package\\s-+\\…

Graphviz::DSL 0.02をリリースしました

Graphviz-DSL-0.02 - Graphviz Perl interface with DSL - metacpan.org Graphviz::DSL 0.02をリリースしましたので、非互換修正、新機能に ついて紹介します。 リポジトリ syohex/p5-Graphviz-DSL · GitHub 非互換な修正 edgeメソッドの第一引数が Stringか…

Release AnyEvent::MPRPC 0.18

https://metacpan.org/release/AnyEvent-MPRPC AnyEvent::MPRPC 0.18をリリースしました。 pull requestをしたらメンテナになりました。 変更点 Clientの callメソッドの RPCの parametersに ArrayRefしか 指定できない問題があったのですが、ArrayRefでなく…

Graphviz::DSLをリリースしました。

https://metacpan.org/release/SYOHEX/Graphviz-DSL-0.01 Ruby Gemの Gvizの移植版ということで Graph::Gvizという名前を つけていたんですが、それだけだと何をするものかわからないという 意見をいただいたので Graphviz::DSLという名前にしました。 機能 …

Graph::Gvizで大阪市営地下鉄を描いてみた

東京の地下鉄の路線サインをGviz(Ruby Graphviz Wrapper)で描く を参考に Graph::Gvizを使って、大阪市営地下鉄を描いてみました。 関連リポジトリ https://github.com/syohex/p5-Math-Normalize-Range 大して探していないんですが、緯度・経度の正規化に…

Gvizを Perlに移植しました

Yet Another Ruby Graphviz Interfaceを作ったからみんなで大量のグラフを作って遊ぼうよ! DSLで DOTファイルが生成できるのがいいなぁと思ったのと、 Rubyの勉強を兼ねて移植してみました。 リポジトリ Graph-Gvizじゃ目的がわからないという意見をいただ…

Re: 複数バージョンの Perl のモジュールインストール状況を調べるスクリプト

複数バージョンの Perl のモジュールインストール状況を調べるスクリプト | ミヤビッチの穴 が "perlbrew exec"使ったら One Linerで書けそうだったので 試してみた。 コード % perlbrew exec perl -wle 'do{eval "use $_;1";printf "%s=%s\n", $_, $@ ? "no…

flymakeのためにプロジェクトのトップディレクトリを @INCに加える

perlbrew.elとProject::Libsを使ったflymakeの設定 - delirious thoughts の通りに flymakeを設定したんですが、トップディレクトリが @INCにないので 'use t::Util;'みたいなのを書くとエラーとして 指摘されていました。Project::Libsに pull requestを送…

「You have an old groff. Update to version 1.20.1 for good Unicode support.」の対応

Macとか FreeBSDに Perl 5.16以降を入れて、perldocを使ったとき 以下のようなメッセージが出てしまいました。毎度毎度こんなのが 出てくるのは, うざいのでその対応に関するメモ。 You have an old groff. Update to version 1.20.1 for good Unicode suppo…

delete localに関するメモ

'delete local'というスコープ中だけ deleteするという機能が だいぶ昔(5.12)に入っていたみたいなんですが、知らなかったのでメモ サンプルコード #!perl use strict; use warnings; use 5.012; use Data::Dumper; my %hash = ( apple => 100, melon => 200…

githubでの活動状況を知る

コマンドラインで誰かの githubの活動を知りたいと思って 書いてみました。Web APIで見れるのかもしれないですが、 Atomが提供されていたので手っ取り早くしたかったので Atomで対応しました。 イメージ こんな具合です。 終わりに 気になるあの人の活動に負…

WebService::DMMを書いてみた

DMMがようやく WebAPIを提供ということで書いてみました。 Perlのコードを久しく書いていなかったのでリハビリも兼ねてます。 リポジトリ syohex/p5-WebService-DMM · GitHub サンプルコード #!perl use strict; use warnings; use lib '../lib'; use WebSer…

cperl-modeでの引数の無名関数のインデント

コールバックを引数で取るような関数で無名関数を使ったとき こんな感じにして欲しいところですが、 cperl-modeだとこんな感じか こんな感じに なってしまいます。どうやったら一番上になるんだって思って ソース見ていたらなんとかなりそうだったのでその手…

Simple JSON Parser in Perl

http://d.hatena.ne.jp/sifue/20120218/1329588477 JSONのパーサを書いてみたいと思って写経しようかと思ったんだけど、 個人的にそのままの書き写しはどうも頭に入らないので、Perl版を 書いてみました。 リポジトリ syohex/p5-JSON-Parser-Simple · GitHub…

Perlの $0の変更に関するメモ

少し前に kfreebsdで $0を変更しても psの結果に反映されない ことについて調べたのでメモ。 ソースコード https://github.com/mirrors/perl/blob/blead/mg.c#L2981mg.cの Perl_magic_set関数の switch文の case '0'の部分です。 処理の流れ 以下のいずれか…

Quote::Codeで Rubyっぽく式展開

Quote-Code-1.01 - quoted strings with arbitrary code interpolation - metacpan.org はじめに Perlの文字列中で関数等の結果を展開するとき、ArrayRefで 囲んでそれをデリファレンスする必要がありますが、それを Rubyっぽく書けるようにしてくれるモジュ…

App::trigger進捗

App::triggerというモジュールを書いています。 - Life is very short 数カ月前に書いて放置していたものを、ちゃんとしたものにしようと いうことで最近また書いています。 リポジトリ syohex/p5-App-trigger · GitHub 目的 iTermのトリガ機能を実現し、以…

App::triggerというモジュールを書いています。

Mac - iTerm2で特定文字列をハイライトやGrowl通知する - Qiita を汎用的にできないかなって思って書いてみました。 まだまだ書き始めなので、気になる部分がありますが、とりあえず紹介。 リポジトリ syohex/p5-App-trigger · GitHub 使い方 モジュールをイ…

Lisp in 45 lines of Perl

fogus: Lisp in 32 lines of Ruby 私の力では Rubyほど短く書けませんでした。 (strict, waningsをはずすとかあるかもしれないですが・・・。) コード Rubyの Symbolは先頭が ":"の文字列をそうみなすことで対応しました。 実行結果 結果 10 42 1 (1 2) 1 (2…

Imagerで GIFを作る

"アニメーションGIFシャッフルするやつ"を Perlで書いてみた - Life is very short で Imagerで GIFを簡単に扱えることがわかったんで、 一から作るということをやってみた。 コード 2011年のトップ 20 AV女優の画像を GIF化します。 名前とランクも画像に埋…

"アニメーションGIFシャッフルするやつ"を Perlで書いてみた

アニメーションGIFシャッフルするやつ - ミニマリストhitode909の日記 @hitode909さんの記事の Perl版 コード 実質 3行ぐらいです. #!perl use strict; use warnings; use Imager; use List::Util qw(shuffle); die "Usage: $0 input_gif output_gif" unless…

Text::AAlibをリリースしました。

Text::AAlib - Perl Binding for AAlib - metacpan.org Syohei Yoshida / Text-AAlib-0.01 - search.cpan.org AAlibの Perlバインディングである Text::AAlibをリリースしました。 Sourceforgeには 9年前にプロジェクトだけ登録されていたのですが、ソースは…

Perlで書き初め

あけましておめでとうございます。 今年も何卒よろしくお願いします。 新年の初めなので書き初めをしたいと思います。 元ネタ 週記くらい | Common Lispで書き初め vallog: 2012年が明けたので書き初めしました。lispで。 ソース 試行錯誤して微調整した感じ…

Calendar::Japanese::Holidayを使って少しおしゃれなカレンダー

最近アプリっぽいものを全然書いていなく、書き方を忘れそうだったので、 @sakurako_sさんが Perl Advent Calendarで紹介していたCalendar::Japanese::Holiday を使って、カレンダーアプリケーションを書いてみました。 コード 実行結果 イメージはこんな感…