ROUTE 3390

備忘録的な用途で書いていますが、どなたかの役に立つ事があれば嬉しいです。

Perl

Perlには無いRubyのyield文に少し嫉妬を覚えた

最近Rubyを勉強していて、今日yield文というのに出会った。 忘れないようにメモyield文はこんな感じで書く def foo ( name ) yield('おはよう' + name) yield('おやすみ' + name) end foo( 'sasakure' ) do | message | puts message end 結果はこのように表…

宇宙ステーション演算子について解説してみた

Perlの食えない事情-演算子編を読んで、とても面白く演算子を学ぶ事が出来ました。なかでも「宇宙ステーション演算子:-+-」はなかなか理解出来なかったので、僕なりに解説したいと思います。 その前に「ビーナス演算子:0+,+0」について触れておきます。 pr…

いまさら素数戦争のdankogai.plを読んでみた

2012年のYAPC::Asiaで紹介されていた素数戦争「10000番目までの素数の和を求める」 というお題をいかに早く算出するか!というものでした。私も参加ダメダメながら参加して楽しんでいました。私の記録はこちらそこで気になっていたのが「殿堂」となっていたd…

AcmeモジュールをCPANにあげてみた

先日Perl Beginnersに参加したときにLTで話した Acme::ReplicaというモジュールをCPANにアップしました。コードはCPANかgithubをご参照ください。Acme::Replicaについて 精巧に作られた食品サンプルのように、見た目は本物そっくりですが 実際には食べれない…

Perl Beginners #6 に参加しました

2013/01/25 Perl Beginnersに参加してきました。 この勉強会への参加は今回が2度目。 前回はBeginnersセッションというコーナーでガチガチに緊張しながらも登壇し、 「RestAPIを提供するために」という内容で発表と質問をしました。 ひどい発表と質問にも関…

Perlで不思議なハッシュが作れるはなし

このエントリーを書いたキッカケはこのtogetterです。 実際に書いて調べて、リストと配列は別物であるとか勉強になりました。 なかでもハッシュのキーに「リスト(配列ではない)」を指定した時の動作は面白かったので、私の検証結果をまとめてみました。 ま…

Exporter.pmの役割を知ったのでメモ

perlで文字コードを扱う時に使用するモジュールといえばEncode.pmですよね。 CPANはこちら SYNOPSISを見ると下記のようにuseしていますね。 use Encode qw(decode encode); $characters = decode('UTF-8', $octets, Encode::FB_CROAK); $octets = encode('UT…

はじめてCPANにあげてみた 〜 そして早速バージョンアップもやってみた 〜

タイトルの通り、初めてCPANにあげてみたので、その備忘録です。 アップロードしたモジュールは前回作ったMojolicousのプラグインです。 プラグインの内容や、そもそもそんなのいらないとか、名前空間へんだよ、などなど、もしお気づきの点などあればご指摘…

後置ifでmy宣言しちゃダメ

perlのスコープは{}ブロック毎に出来ます。 例えばこんな感じ。 my $flg = 1; if ( $flg ) { my $hoge = 'sasakure'; print $hoge; # output「sasakure」 } print $hoge; # Global symbol "$hoge" requires explicit ...<省略> {}ブロック内で宣言されたmy変…

Mojoliciousのプラグイン作成コマンドを使ってみた

Mojoliciousで開発をしていて、既存のプラグインを使ったり、新規に自分で作ったりすると思いますが そんな自分で作ったプラグインの中には「CPANにあげたい!」と思うものも出てくるんじゃないでしょうか。 僕は今回、Webサイトの他言語対応(国旗の画像をポ…

Mojoliciousを使ってみたよ

PerlのフレームワークMojoliciousを使ってみたので、そのメモ。 マシンはMac OS X ちなみに、Mojoliciousはドキュメントが日本語訳されていますよ Home · yuki-kimoto/mojolicious-guides-japanese Wiki · GitHub まずはCPANからインストール $ sudo cpan cp…

Mouse(Moose)で使うMouseX::Types::Path::Classが素敵

今日はMouseX::Types::Path::Classって素敵ですねってはなし。例えば、ログを吐くディレクトリを今まではこうやって用意してた。 package Sasakure; use Mouse; has 'dir' => ( is => 'ro', isa => 'Str', ); __PACKAGE__->meta->make_immutable; no Mouse; …

Mouse(Moose)のRoleにはBUILDメソッドを書くべきではないんだね

下記のようなソースがあった。Sasakure.pm package Sasakure; use Mouse; with 'SasaRole'; __PACKAGE__->meta->make_immutable; no Mouse; 1; SasaRole.pm package SasaRole; use Mouse::Role; no Mouse::Role; sub BUILD { my $self = shift; warn "sasaro…

CGI::Application::DispatchとMouse(Moose)を使った時にハマったこと

CGI::Application::Dispatchで下記のようにargs_to_newを使うと、 実行するモジュールへの引数が指定出来る。index.cgi #!/usr/bin/perl use strict; use warnings; use CGI::Application::Dispatch; CGI::Application::Dispatch->dispatch( prefix => 'Sasa…

ブロック暗号方式に挑戦。 Mcryptを使ってみた

McryptでCBCモードを使う機会があったのでメモ use strict; use warnings; use Mcrypt qw(:ALGORITHMS :MODES); use Digest::MD5 qw(md5_hex); my $FILE_NAME = 'kkkkk.txt'; my $FILE = '/home/sasakure/' . $FILE_NAME; my $td = Mcrypt->new( algorithm =…

local変数について改めて理解する

Perlにはglobal変数、local変数、my変数があります。私はあんまりlocal変数って使う機会が無くて、なんとなくしか理解していませんでした。my変数が「ブロック内がスコープの変数」というのに対して、local変数は「ブロック内で呼んでる関数なんかスコープに…

クロージャー

お仕事でクロージャーというコーディングの仕方を覚えたのでメモメモ。Perlに限らず利用出来る言語は多い(どうやらPHPもあるらしい、、知らなかった) どんなプログラム言語だって変数を使う場合はスコープ(変数の利用可能な範囲)が決まっています。下記…

Template Tool Kitの配列の扱いでハマった事

Template Tool Kit って便利ですよね。 Perlの仕事をするようになって出会った素晴らしいテンプレートエンジンです。たくさんの方がブログやサイトで利用方法について説明してくれてますので、基本的な事はググればだいたい分かります。それでも僕がハマった…

Cache::FastMmapを使ってみた

[CPAN] http://search.cpan.org/~robm/Cache-FastMmap-1.36/FastMmap.pmデータを管理する時にファイルだったり、データベースなんかを使いますよね。Cache::FastMmapは1つのKeyに対して簡単なValueを持つデータを容易に扱う事が出来ます。 中でも私が素敵だ…

List::MoreUtilsのany、all、none、notall について

List::MoreUtils http://search.cpan.org/~adamk/List-MoreUtils-0.30/lib/List/MoreUtils.pmany、all、none、notallの4つについて、使う時に用途がゴチャゴチャしちゃうので備忘録▼ソースを見るとこうなってる。 sub any (&@) { my $f = shift; foreach ( …

ファイルハンドラをむやみに利用しない

perlでのファイル操作ってどうやるのかなって調べると、下記のようなコーディングで説明されている事があります。 my $file_name = 'test.txt'; open(FILE, $file_name); while(<FILE>) { print; } close FILE;このFILEというのはファイルハンドラと呼ばれます。 </file>…