Perl
png_ignore_benign_errors に真値をセットする。 my $im = Imager->new; $im->read(file => 'foo.png', png_ignore_benign_errors => 1);
#!perl use strict; use warnings; my @ary = (); my $i1 = length scalar @ary; my $i2 = $i1 + $i1; my $i4 = $i2 + $i2; my $i8 = $i4 + $i4; my $i16 = $i8 + $i8; my $i32 = $i16 + $i16; my $i64 = $i32 + $i32; print chr($i64 + $i8), chr($i64 + $i…
# Written in UTF-8. Output is CP932. use 5.16.0; use strict; use warnings; use Encode qw/encode decode from_to/; use Win32::API; my $f = Win32::API::More->new('shlwapi', 'StrCmpLogicalW', 'PP', 'I'); my @strs = qw/ 20string 2string 3string…
しかも2回目。フォルダの中のファイルに対してjpegtranしてファイルサイズ削るためのラッパーなんだけど。また書き直すのもう嫌だから、ここにコード貼り付けておきます。絶対またやらかしそうだしね。
今まで5.10.1使ってたけど、いい加減5.12にしたいよねってことで、ActivePerl 5.12.1 (x64)をインストール。いくつかモジュール入れなおして元の環境に復帰、と。今はとりあえずこれだけ。普段から使ってるスクリプトの依存モジュールたち。 DBD::SQLite (w/…
古いPainterなんかがそうだったと思うんだけど、JPEGのアスペクト比が72:1とか狂ってるのでそれだけ縦横72dpiに直すメモ。 exiftool --printconv -ResolutionUnit=1 -XResolution=72 -YResolution=72 INPUT
ちょっとここには貼れないけど。DBI直に触るのはそろそろ飽きてきたけど、DBIC使うとオーバースペック過ぎるのでSkinnyあたり触ってみたほうがいいかなぁ……
use feature qw/say/; 5.8系使ってた時は、 use Perl6::Say; してた。 追記 2011-08-11 最近はこうしてる。 use 5.14.0;
Windows Driver Kitに入ってるので、ダウンロードしてインストールするなり、7-zipでファイルだけ抜き出すなりしてやればok。 追記 WDKのダウンロードリンク。 600MBちょっとあるから、回線が細いとちょっとつらいかも。/GS-スイッチをつければこれいらなく…
use strict; use warnings; use Flickr::API; use Perl6::Say; use XML::LibXML; my $key = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'; my $secret = 'XXXXXXXXXXXXXXXX'; my $id = shift or die; my $api = Flickr::API->new({ key => $key, secret => $secret, …
FlickrのAPIドキュメント見ながらごにょごにょ。久々にコード書くとやっぱり楽しい。うひゃーってなる。とりあえず簡単なテストだけかいて動かしてみた。
どうせほとんど定型なんだから、テンプレート的なものを用意して、あとはデータを差し込むだけで生成するようにできないかなー、そのほうが変更入っても更新しやすいし。 んんん、となると、これユーザ側で使うクラスじゃないんだよなぁ。一緒に入れておくと…
no MODULEするときのコード例。id:perlcodesampleのObject::Simpleより。 sub unimport { # Get caller class my $caller_class = caller; # Delete MODIFY_CODE_ATTRIBUTES subroutine of caller class no strict 'refs'; delete ${$caller_class . '::'}{M…
だいぶ前に書いたコード久々に見てみたら、onetimeみたいにループ中で毎回Digest->newしてたのでちょっと気になってベンチマークとってみた。サイズにもよるけど、再利用するのに比べて6倍くらい遅いなぁ…… 毎回生成するのはやっぱりコストが大きいね。 use …
my $k = E::C::Kernel->instance; $k->flush; # バッファに貯まってるのはきだす $k->autoflush(1); # バッファに貯めない $k->autoflush(0); # またバッファに貯める 追記 04/25 11:53 書いた。別のところでIO::Handleを読んでいるので、そっちのflush、aut…
use E::C::Kernel; E::C::Kernel->say('foo'); use E::C::Kernel qw/say/; say 'foo'; E::C::Kernelをsingletonにして use E::C::Kernel; #my $k = E::C::Kernel->new; my $k = E::C::Kernel->instance; $k->say('foo'); $k->print('bar'); $k->printf('%s',…
するのは、 use strict; use warnings; use XML::LibXML; my $parser = XML::LibXML->new(); $parser->recover_silently(1); my $doc = $parser->parse_html_file('http://blog.livedoor.jp/dankogai/'); print $doc->toString; とやればいい*1のだけど、い…
while (1) { last unless my $c = grep { COND } LIST; ... } いくらなんでもこれはキモい。 while (my $c = grep { COND } LIST) { ... } こっちも大して変わらないなぁ。多少ましか。
UDFにしないといけない。UTF-8決めうちにしてるけど、SQLiteで日本語使うのに他の文字コード使う理由もそうないだろうし、別にいいよね。 use DBI; use Encode qw/decode/; my $dbh = DBI->connect('dbi:SQLite:dbname=sqlite3.db', '', '') or die $!; $dbh…
んー、呼べるとまずいメソッドが呼べてしまうなぁ… これだけどうにかすれば最低限使えないこともない、ってところには持っていけそうなんだけど。 追記 どうにかした。
そろそろ何したいのかわからなくなりそう。MooseでいったらRoleつけたりはずしたりしたい。継承ツリー直接いじるとか筋が悪いってレベルじゃないし。 package Foo; sub new { bless {}, shift } package Bar; sub bar { 'bar' } package main; use Perl6::Sa…
DBD::SQLite::Amalgamation 3.6.1.2をインストール。こっちを使ってみる。http://d.hatena.ne.jp/tokuhirom/20080727/1217140312で公開されてるパッチを当ててコンパイル。t\12create_collation.tが通らない*1んだけど、文字コードをiso-8859-1からutf-8にし…
アルファチャンネルを適用する。$img->convert(preset => 'noalpha')だとなんかアルファを削除してるだけみたいな感じだった。 use Imager; use Imager::Color; use Imager::Fill; my $img = Imager->new or die; $img->read(file => $src) or die $img->err…
via ファイルを作成する - Perlゼミ(サンプルコードPerl入門) これ、タイミングの関係でまずいことが起きる気がする。 my $file = "sample_20080519_$$.txt"; # $$ はプロセスID if( -e $file ){ # ← 上書きしてはいけないので、存在をチェック。 croak "$fi…
最初からサイズが分かっていれば、途中で拡大するコストはかけないようにできるよね。 my %hash; keys(%hash) = 1024;
別のスクリプトからライブラリとしてrequireされてるときは何もしないで、単体のスクリプトとして実行されてるときだけ処理したいコードがあったので、$0を読んでみる。$0には実行してるスクリプト名が入ってるので、それを確認してやればok # foo.pl if ($0…
DBIいじってて、DBから削除できないなぁと悩んでたら、単にコミットしてないだけという下らないミス。接続するときにAutoCommit => 0としてるんだから、明示的にコミットしてやらないといけないのでした。
こないだ書き直したコードが前に比べて妙に動作が重いと思って、読み直してみたら sub foo { ... while ($cond) { require Foo; ... } ... } それはない。ありえない。だいたい8000回くらいwhileで回すんだけど、それだけ毎回requireしてたらそれは遅くて当…
my %cmd = ( foo => sub {...}, bar => sub {...}, ); my $c = shift; $cmd{$c} or die; $cmd{$c}->(@ARGV); いわゆる一つのディスパッチテーブル。
最初のページと最後のページへのリンクは作ってあったけど、前後のページへのリンクを作ってなかったので足してみた。最初はなくてもいいかなとか思ってたけど、自分でちょっと使ってみると、やっぱりあったほうが便利な気がしたので。 複数のテンプレートに…