Perl

m// を リストコンテキストで使う

始めてのPerlより。たまーに使うことがありそうなので、忘れないようにメモがわり。 コード use Data::Dumper; my $text = "Barney Rubble Fred Flintstone Wilma Filntstone"; my ( $first, $second, $third ) = ( $text =~ /(\b\w+\b) \s \b\w+\b \s?/gx )…

perl-casual チャンネルにjoinする。

勉強&刺激になるかなと思い、常駐することにしようかと。 設定した項目 サーバ:irc.freenode.net ポート:6667 チャンネル:#perl-casual 文字コード:UTF-8

Perlのオブジェクト

Sample.pm package Sample; sub new { my $class = shift; bless {}, $class; } 1; sample.pl #!/usr/bin/perl use Sample; my $obj = (); # NG $obj = Sample::new; # OK $obj = Sample::new('Sample'); $obj = Sample->new; 参考 http://www.rwds.net/kur…

forとforeachは同じ。そして、forの反復子変数はエイリアス。

for と foreach は同じ for my @countries = qw/ Japan Korea China /; for my $country ( @countries ) { print "$country\n"; } 結果 Japan Korea China foreach my @countries = qw/ Japan Korea China /; foreach my $country ( @countries ) { print "$…

Error.pm を使ってみる。

Test::Exceptionで、Error.pmの例外をチェックするサンプルがあったのでError.pmを使ってみる。 use Error qw(:try); # 引数が偶数の場合は真を返す。ただし、引数が整数でない場合は例外を返す。 sub is_even { my $n = shift; try { if ( $n != int($n) ) …

モダンPerl入門で、テストに入門してみた。その3 Test::Exception

Test::Exception というモジュールが出てきたので使い方を調べてみた。 Test::Exception CPANからインストール throws_ok throws_ok { $foo->method } qr/division by zero/, 'zero caught okay'; 与えた正規表現が標準エラーにマッチするかチェックする thr…

モダンPerl入門で、テストに入門してみた。その2 Test::Harness

Test::Harness を使ってみる テストを行う対象は、その1で作った物。 バージョンは3.22 が入っていたのでそのまま使用。とりあえず、書いてある通りに実行 > prove --timer [21:28:38] t/00_compile.t .. 1/1 # Failed test 'use Example::Software;' # at t…

モダンPerl入門で、テストに入門してみた。その1

ファイルの作成 基本的にソースコードのコピー。 lib/Example/Software.pm package Example::Software; use strict; our $VERSION = '0.00001'; sub test { } 1; Makefile.pm use strict; use inc::Module::Install; name('Example-Software'); all_from('li…

モジュールのバージョンを調べる。

たまに使うけど、よく忘れる。 今ははっきり覚えてるので、メモたとえば、IO::Handle のバージョンを調べる場合。 perl -MIO::Handle -e 'print "$IO::Handle::VERSION\n"'

DBD::mysql のインストールに失敗する

cpanm DBD::mysql として、インストールしようとすると Building and testing DBD-mysql-4.018 ... FAIL と出て失敗する。build.log も見てね!と言われるので覗いてみるとNote (probably harmless): No library found for -lmysqlclient とか、書いてあるの…