任意のディレクトリをパスに通す
useしたモジュールが見つからないとき次のエラーが出ます。
Can't locate App/Module.pm in @INC (...
エラーを解消するには、モジュールをパスに通してやればOKです。
パスに通す方法は複数あるようですが、今回はuse libを使いました。
ディレクトリ構成
.
├── App
│ ├── Tengsample
│ │ ├── Model
│ │ │ └── Schema.pm
│ │ └── Model.pm
│ └── teng_sample.pl
teng_sample.pl
こう書きます。
use lib '/Users/taro/App';
すると、teng_sample.plで次のようにモジュールをuseできます。
use Tengsample::Model; ## ./App/Tengsample/Model.pm
Test::Simpleを使ってみる
Test::Simpleを使ってテストを書きました。 自作モジュールがちゃんと動くかを確認します。
テスト対象は、映画のレビュー情報を管理するMovieモジュールです。
package Movie;
sub new {
my ($class, %args) = @_;
bless ({%args} => $class);
}
sub title {
my $self = shift;
return $self->{title};
}
1;
titleを返すメソッドのみがあります。
このメソッドが期待通りに使えることを確かめたいです。
テストを書きます。
use Test::Simple tests => 1; #テストの数を書く
use Movie;
my $title = "Independence day";
my $expected = $title;
my $movie = Moview->new(
title => $title,
);
# 引数1:式 引数2:テストの名前
ok( $movie->title eq $expected, "title() get ---> $expected");
# テストの終わりに書く
done_testing();
はい、モジュールとテストが準備できました。
早速テストを実行してみます。
% perl movie_test.pl
# 1..1
# ok 1 - title() get --> Independence day
おめでとうございます。 オーケーです。
Perl - 2次元配列の生成とアクセス
プログラミングPerl Vol.1の同名セクションにあるサンプルコードを写経する。
#配列リファレンスのリストを配列に代入する @AoA = ( [ "fred", "barney" ], [ "george", "jane", "elroy" ], [ "homer", "marge", "bart" ], ); print $AoA[2][1]; # marge #配列リファレンスの配列へのリファレンスを作成する $ref_to_AoA = [ [ "fred", "barney", "pebbles", "bamm bamm", "dino", ], [ "fred", "barney" ], [ "george", "jane", "elroy", "judy", ], ]; print $ref_to_AoA->[2][3]; #elroy
ううむ、配列をハードコーディングするのは大変だ。。
'yyyy-mm-dd'形式の日付を比較するーPerlの文字列比較演算子
日付の前後を比較したいとき、Time::Pieceとかでepoch秒とかを計算してやるしかないのかーとおもっていたら、実は文字列比較演算子を使えばできると先輩がおしえてくれた。
文字列でありながら、量の比較ができるのだ。これには4種類がある。
小なり (less than) lt 大なり(greater than) gt 以下 (less than or equal to) le 以上 (greater than or equal to) ge
たとえば、'2017-11-01'と'2017-11-30'という2つの文字列があるとして、どちらが進んだ日付なのかをしらべたいとする。
my $d1 = '2017-11-01'; my $d2 = '2017-11-30'; if ( $d1 le $d2 ) { print "$d1 is older date than $d2.\n"; }
これで日付を判定できる。
比較の仕組みは、左から1文字ずつ比較していって、文字列のソート順を参照して文字の大小を判定しているらしい。
Processing.js できれいな模様を描きたい
Prodessing.jsできれいな画面を作ってみたくなったので、
http://2g.atsukitaira.com/htmlcss/html5/850/ブラウザでお絵描きプログラミング! Processing.js 登場! - IT戦記
やってみた。
全画面表示させたかったけど、はてなブログだとできない?
自前でサーバー立てる必要があるかな。
Bash kakasiで漢字のよみがなを出力する
ヨミガナを登録するために、漢字交じりのテキストをカタカナに変換する必要があった。Excelでヨミガナを振れるかためしてみたが、ダメだった。情報が登録されていないと、できないのだ。
それなら、ということでkakasiを使ってみたらうまくいったので、コマンドをメモる。
こちらのページに載っていたコマンドをそのままお借りした。
kokukuma.blogspot.jp Hunting Field: 漢字→かな(ローマ字)変換プログラム KAKASIのインストールと使い方
コマンド
カタカナに変換
$cat text | nkf -e | kakasi -JH | kakasi -Hk |nkf -w
ひらがなに変換
$cat text | nkf -e | kakasi -JH | nkf -w
これだけでお手軽に変換してくれる。