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

Perl

YAPC::Kansai 2017に行ってきたのでトークの感想など

YAPC::Kansai 2017に行ってきました。去年のPHPカンファレンス大阪に続いて、カンファレンス2回目。今回は初懇親会も。とりあえず駅までのバス、停留所逆側で待ってて、一本逃がして開場前に余裕で着く予定がぎりぎりに。さらに、新大阪で下りてからだいぶ迷…

Cartonで詰んだっぽい?

Cartonの仕様上、site_perlになにか入ってるとcpanfile.snapshotが壊れる可能性がある。 Carton自体を入れるのにいくつかのモジュールがsite_perlに入る。 それらのモジュールのいずれかがcpanfile.snapshotでrequirementsに入っていると、carton checkがfai…

PerlでIPアドレスからホスト名をLookupするベターな方法。

gethostbyaddr()は使いにくいしどうもIPv6対応が怪しい。IO::Socket::IPはそろそろ標準モジュールに入るらしいが、それは普及にはもうちょっとかかるってことでもある。オーバースペックな気もする。ということで、普通にSocket.pm使ってみる。 use Socket q…

最近はまったこととか。

ちゃんと定期的にブログ書くのってむずかしいね。 Firefoxでcontenteditable="true"が奇妙な動作。HTMLの文法的に? 入力できないようなHTML文字列を貼り付けたりすると、変な位置に貼り付けられてしまい、またcontenteditableが効かなくなる。contenteditab…

XML::LibXMLでHTMLを扱うのはやめておいた方がよさそう。

HTML::Parserはあまり速くなかった気がするので、XML::LibXMLでHTMLを扱おうとしてはまった。XML::LibXMLは、load_html()みたいなメソッドもあるから大丈夫かなー、なんて思ったのが甘かった。 HTMLをパースして、データ構造にする。 データ構造を走査したり…

Test::Moreでマルチバイト文字列を出力する可能性がある場合。

use Test::More; use Term::Encoding; { my $builder = Test::More->builder; my $encoding = Term::Encoding::get_encoding; binmode $builder->output, ":encoding($encoding)"; binmode $builder->failure_output, ":encoding($encoding)"; binmode $buil…

HTTP::Body::MultiPartにまずいセキュリティホールがあるので、しばらくPlack::Request::Upload使うときは気をつける。

経緯 JVNのフィード見てたらPerlモジュールのセイキュリティホールがあったので念の為確認したら思ったより危険だった。 JVNのページ JVNDB-2013-005291 - JVN iPedia - 脆弱性対策情報データベース セキュリティホールの詳細 #721634 - libhttp-body-perl: …

Perlのsingle-quotedなヒアドキュメントはsingle-quotedな文字列とはちょっと違う。

ちょっとはまったので。 print '\ \\', "\n"; # \ \ print <<'HERE'; \ \\ HERE # \ \\ ヒアドキュメントでは、引用符自体のエスケープが必要なくなる。double-quotedなヒアドキュメントの場合、ほかにエスケープしなければならない文字が残るため\自体もエ…

plenv install ... で、別名をつけてインストールしたい。

目的 plenvで64bit環境に32bitのPerlをインストールしようとして、64bit版との区別をつけるために5.8.9-32bitとかそんな名前をつけたかった。ちなみに32bitのPerlのインストールには現状成功していない。 対処 plenvのドキュメントにわずかにそれらしいコマ…

Mail::SPFをroot権限がない状態で、cpanmでインストールしたい。

目的 Mail::SPFをインストールするためには、/usr/sbinへの書き込み権限が必要である。つまり大抵の場合、root権限が必要となる。だが、plenvを使っている環境などではsudo cpanm Mail::SPFとした場合、正しくインストールできない。そのため、root権限なし…