perl

ダウンロードした tar.gzをファイルに書き出さずに展開する

諸事情で Perlを書いていてやり方がわからなかったので調べた. ローカルファイルの tar.gzを展開みたいなのはそれなりにあったけど, オンメモリのまま処理する方法が皆無だった. #!/usr/bin/env perl use strict; use warnings; use HTTP::Tiny; use Encode;…

HTTP::Tinyで httpsアクセスで 599が返るようになった問題の修正

某モジュールのメンテンスでテストに必要なモジュールを入れようとしたらそもそもエラーが出るということで, エラー原因を調べてみたところ下記のようなエラーが出ていた。HTTP::Tinyを使った httpsへの GETが軒並み失敗していることが原因であった。 $VAR1 …

List::UtilsBy::XS 0.06をリリースした

metacpan.org github.com Debugビルドした Perlだと extract_by で assertionに引っかかることがあった問題の修正. 戻り値の個数が引数の数より多い場合 EXTEND を使って Stackを確保しないといけないという理解. 他のメソッドはなんで引っ掛からないんだっ…

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-+\\…